Например TDA7294

Форум РадиоКот :: Просмотр темы - Нет реакции МК на кнопку
Форум РадиоКот
https://radiokot.ru/forum/

Нет реакции МК на кнопку
https://radiokot.ru/forum/viewtopic.php?f=61&t=86606
Страница 1 из 1

Автор:  lakec [ Вт мар 12, 2013 09:32:19 ]
Заголовок сообщения:  Нет реакции МК на кнопку

Здравствуйте уважаемые коты :)
Начал изучение контроллеров. Пишу прогу которая по нажатию кнопки переключает лампочки

Код:
#include <tiny2313.h>
#include <delay.h>

void main (void){
DDRB=0b11111111;
PORTB=0b11111111;

DDRD=0b00000000;
PORTD=0b00000011;

 if (PIND.1 == 1) {

 PORTB.1 = 0;   // вкл светодиод
 delay_ms(50000); // пауза

};

 if (PIND.1 == 0) {

 PORTB.0 = 0;   // вкл светодиод
 delay_ms(50000); // пауза

};
}
Появились вопросы, ответа на которые не могу найти в инете.
1. Нужно ли при установке порта на выход писать PORTB=0b11111111; или резюки подключаются при настройке порта на вход?
2. Почему МК не реагирует на кнопку? Горит только светодиод подключенный к PORTB.1
Спасибо

Автор:  oleg110592 [ Вт мар 12, 2013 14:38:12 ]
Заголовок сообщения:  Re: Нет реакции МК на кнопку

delay_ms(50000); // пауза 50 секунд так должно быть?

Автор:  VanyaSV [ Вт мар 12, 2013 14:51:12 ]
Заголовок сообщения:  Re: Нет реакции МК на кнопку

lakec писал(а):
1. Нужно ли при установке порта на выход писать PORTB=0b11111111; или резюки подключаются при настройке порта на вход?

Нужно. Порт по умолчанию включается на вход без резисторов

lakec писал(а):
2. Почему МК не реагирует на кнопку? Горит только светодиод подключенный к PORTB.1


А что конкретно должна делать ваша программа?
Переключать 2 светодиода по 2 кнопкам?

Автор:  pyzhman [ Вт мар 12, 2013 17:52:06 ]
Заголовок сообщения:  Re: Нет реакции МК на кнопку

У вас однократно опрашиваются кнопки и по результату устанавливаются выходы. Попробуйте перед включением питания удерживать кнопки - убедитесь. Правда эти 50 сек :)) Чтобы постоянно держать управление надо бы циклически опрашивать кнопки, т.е. приментить хотя бы
Код:
while(1)
{
опрос кнопки
    {
    делаем светодиод
    }
опрос кнопки
    {
    делаем светодиод
    }
}

Автор:  lakec [ Вт мар 12, 2013 21:17:51 ]
Заголовок сообщения:  Re: Нет реакции МК на кнопку

С задержкой погорячился :)) да и действительно в цикл надо бы загнать опрос. Видимо из-за этого были проблемы
Код:
#include <tiny2313.h>
#include <delay.h>

void main (void){
DDRB=0b11111111;
PORTB=0b11111111;
DDRD=0b00000000;
PORTD=0b00000011;

  while (1) {
  if (PIND.1 == 1) {
 PORTB.1 = 0;   // вкл светодиод 1
 PORTB.0 = 1;   // выкл светодиод 0
  delay_ms(5); // пауза
};

   
 if (PIND.1 == 0) {
 PORTB.0 = 0;   // вкл светодиод 0
 PORTB.1 = 1;   // выкл светодиод 1
 delay_ms(5); // пауза
};
};
}
так работает)) Поставил след. задачу. Есть одна кнопка и 3 (количество не важно) светодиода. Сделать так, чтобы при нажатии на кнопку один светик включался, другие не горят. И так поочередно (типа светофора, только переключаются кнопкой). Как такое сделать если у кнопки только два состояния (0 и 1)?
ЗЫ.Посоветуйте пожалуйста книгу или сайт с примерами программирования на си именно для микроконтроллеров. Те, что я находил слишком сложны для новичков.

Автор:  oleg110592 [ Вт мар 12, 2013 21:24:42 ]
Заголовок сообщения:  Re: Нет реакции МК на кнопку

http://chipenable.ru/index.php/programm ... l?start=60

Автор:  Аlex [ Вт мар 12, 2013 22:17:36 ]
Заголовок сообщения:  Re: Нет реакции МК на кнопку

viewtopic.php?f=20&t=79801

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/