Например TDA7294

Форум РадиоКот • Просмотр темы - Обработка нажатия кнопки в AVR...
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт мар 28, 2024 11:35:16

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 294 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 13:59:59 
Это не хвост, это антенна
Аватар пользователя

Карма: 6
Рейтинг сообщений: 68
Зарегистрирован: Вс апр 19, 2009 17:20:22
Сообщений: 1303
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Рейтинг сообщения: 0
Есть программа для AVR, имитирует работу светофора, написана в Code Vision AVR.

Код:
#define B_g PORTB=0b00000100;
#define B_y PORTB=0b00000010;
#define B_r PORTB=0b00000001;
#define C_g PORTC=0b00000100;
#define C_y PORTC=0b00000010;
#define C_r PORTC=0b00000001;
#define D_g PORTD=0b00000100;
#define D_y PORTD=0b00000010;
#define D_r PORTD=0b00000001;
#define B_g_off PORTB=0b00000000;
#define C_g_off PORTC=0b00000000;
#define D_g_off PORTD=0b00000000;
 
int a;
.
.
.
while(1){
             
      B_g;
      D_g;
      C_r;
      delay_ms(1000);
 
for(a=0; a<=4; a++){
      delay_ms(150);
      B_g_off;
      D_g_off;
      delay_ms(150);
      B_g;
      D_g;     
};
 
      B_y;
      D_y;
      C_y;
      delay_ms(1000);
 
      B_r;
      D_r;
      C_g;
      delay_ms(1000);
 
for(a=0; a<=4; a++){
      delay_ms(150);
      C_g_off;
      delay_ms(150);
      C_g;
};
 
      B_y;
      D_y;
      C_y;
      delay_ms(1000);
 
      };
}


Как в эту программу добавить обработку нажатия кнопки? Например нажал кнопку - цикл остановился. Нажал другую - продолжился.

P.S.

Я только недавно начал изучать МК, так что...

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 16:10:46 
Мудрый кот
Аватар пользователя

Карма: 25
Рейтинг сообщений: 79
Зарегистрирован: Вт окт 05, 2010 01:08:57
Сообщений: 1800
Рейтинг сообщения: 0
по всякому можно. например вставить в основной цикл это.
Код:
if (PINB.0==0){ per=1;            //если нажата кнопка подсоединенная к PINB.0, переменной per присвоить значение 1
delay_ms(200);}                   //  типа антидребезг
while(per==1)                     //  сидеть в этом цикле пока per равна 1
{
if (PINB.1==0) {per=2;             // если нажата кнопка подсоединенная к PINB.1, переменной per присвоить значение 2
delay_ms(200);}                    //  типа антидребезг         
}


зы. сейчас ктото обязательно скажет что "PINB.0" - зло, и так лучьше не писать. СОГЛАСЕН, но я уже так привык.

_________________
KIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 16:41:09 
Открыл глаза

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Ср мар 24, 2010 08:08:20
Сообщений: 42
Рейтинг сообщения: 0
КАШАК писал(а):
Например нажал кнопку - цикл остановился. Нажал другую - продолжился.

Код:
if(!PINB.0) //Если нажали одну кнопку
 while(PINB.1);//Ждем пока не нажмем другую, т.е цикл остановился пока не нажмем другую кнопку

Не забудьте подтянуть ноги на которые повесили кнопки типа так PORTB |= 0b00000011; ну и ессесно порты на вход DDRB &= ~(0b00000011);


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 16:57:44 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб июн 12, 2010 16:19:17
Сообщений: 190
Откуда: Россия, Томск
Рейтинг сообщения: 0
как правило время "дребезга" принимают равным 50 мс.
и если тупо в лоб, то нажатие кнопки не плохо бы проверять несколько раз в течении например 200 мс.

_________________
С уважением, Денис Железняков aka ZiB
Мой блог: http://ziblog.ru


Вернуться наверх
 
Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 17:19:10 
Это не хвост, это антенна
Аватар пользователя

Карма: 6
Рейтинг сообщений: 68
Зарегистрирован: Вс апр 19, 2009 17:20:22
Сообщений: 1303
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Рейтинг сообщения: 0
Так работает только если вставить в тот цикл, который мигает зелёным, т.е. вот в этот

Код:
for(a=0; a<=4; a++){
      delay_ms(150);
      B_g_off;
      D_g_off;
      delay_ms(150);
      B_g;
      D_g;     
};


И, естественно, только во время мигания. Если вставлять в цикл while(1) никакой реакции нет. Может код программы как-то по другому написать надо?

P.S.
Схему пока собираю в Proteus.

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию...


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 18:02:05 
Открыл глаза

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Ср мар 24, 2010 08:08:20
Сообщений: 42
Рейтинг сообщения: 0
Учтите что у вас там задержки секундные, вам нужно в таком случае по прерыванию обрабатывать кнопки или написать свою задержку в которой будет опрос кнопок.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 18:07:18 
Это не хвост, это антенна
Аватар пользователя

Карма: 6
Рейтинг сообщений: 68
Зарегистрирован: Вс апр 19, 2009 17:20:22
Сообщений: 1303
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Рейтинг сообщения: 0
А можно пример?

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 18:32:32 
Сверлит текстолит когтями
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Чт окт 15, 2009 14:16:18
Сообщений: 1116
Откуда: Екб
Рейтинг сообщения: 0
В вашем случаи не имеет смысла опрашивать кнопку внутри основного цикла. Кнопку "стоп" нужно повесить на внешнее прерывание.
И делать, например, так:

Код:
void main(void)
{
...
DDRB|=(1<<0);
DDRB|=(1<<1);
//тут нужно инициализировать INT0
asm("sei");
...
}


Код:
ISR(INT0) //непомню уже как объявляются в CVAVR обработчики прерываний и какие векторы
{
_delay_ms(70);
if(!(PINB&(1<<0))) while(PINB&(1<<1));
}


В данном случаи это сработает, но впредь знайте, что задержки и вечные циклы в прерывании, мягко говоря, не есть гуд.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 18:57:15 
Мудрый кот
Аватар пользователя

Карма: 25
Рейтинг сообщений: 79
Зарегистрирован: Вт окт 05, 2010 01:08:57
Сообщений: 1800
Рейтинг сообщения: 0
Цитата:
по всякому можно.
если делать правильно, то надо все менять. убрать delay, задержки с помощью таймеров, кнопки можно и в основном цикле опрашивать. общем см цитату выше.
а еще можно посмотреть в инете, периодически встречаю "конструкторов светофоров". наверное популярное у преподавателей задание в институтах.

_________________
KIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 19:13:15 
Это не хвост, это антенна
Аватар пользователя

Карма: 6
Рейтинг сообщений: 68
Зарегистрирован: Вс апр 19, 2009 17:20:22
Сообщений: 1303
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Рейтинг сообщения: 0
Это не задание преподавателя :) Просто пришла идея... Где можно хороший самоучитель найти по программированию AVR на C ? А то я весь инет перерыл а ничего нормального не нашёл.

А как без задержек реализовать?

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 20:22:58 
Мудрый кот
Аватар пользователя

Карма: 25
Рейтинг сообщений: 79
Зарегистрирован: Вт окт 05, 2010 01:08:57
Сообщений: 1800
Рейтинг сообщения: 0
Мне очень сильно помогает книга в моей подписи.
еще заказал http://www.ukazka.ru/product-book791251.html обещают после нового года.
буду Си учить, а то ничего по настоящему сложного писать не получается

задержки прерыванием делают так. Настраиваешь таймер чтоб он тикал раз в секунду. в прерывании выводишь то что тебе надо в порт. и все, до след. прерывания твой контроллер свободен, можешь занять его чем хочешь, например опросом кнопок.

зы. готовый код не проси. задача по плечу начинающему. знаю по себе, т.к. тоже начинающий.

_________________
KIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 20:38:03 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Zheleznjakov писал(а):
как правило время "дребезга" принимают равным 50 мс.
и если тупо в лоб, то нажатие кнопки не плохо бы проверять несколько раз в течении например 200 мс.
если мне не изменяет память, то дребезг большинства низковольтных контактов заканчивается за 10-15 миллисекунд. поэтому делать защиту от дребезга на 50 мс, а тем более 200 мс, - это явно перебор, т.к. человек такую задержку уже может почувствовать.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср дек 15, 2010 21:36:25 
Это не хвост, это антенна
Аватар пользователя

Карма: 6
Рейтинг сообщений: 68
Зарегистрирован: Вс апр 19, 2009 17:20:22
Сообщений: 1303
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Рейтинг сообщения: 0
Спасибо

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт дек 17, 2010 00:59:14 
Это не хвост, это антенна
Аватар пользователя

Карма: 6
Рейтинг сообщений: 68
Зарегистрирован: Вс апр 19, 2009 17:20:22
Сообщений: 1303
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Рейтинг сообщения: 0
Можете объяснить, как работать с таймерами прерываний в CodeVision AVR. А то я никак не могу разобраться...

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт дек 17, 2010 01:36:13 
Мудрый кот
Аватар пользователя

Карма: 25
Рейтинг сообщений: 79
Зарегистрирован: Вт окт 05, 2010 01:08:57
Сообщений: 1800
Рейтинг сообщения: 0
Это возможно, но в рамках форума трудно. много нюансов. если все описать, то получится не хилая многостраничная обучалка.
Возьми почитай книги, статьи и обучалки в интернете. их много. по таймерам, (да и про другое) неплохо рассказано на сайте у дихалта. правда он больше делает упор на ассемблер, говорит с него начать полезней. может быть.
по книгам мне понравились
Создаем устройства на микроконтроллерах. Белов А В. она дала мне пинок, и помогла сдвинуться с мертвой точки в изучении МК
В подписи - просто настольная книга у меня. Практически полный даташит на все меги. и главное на РУССКОМ, что для неучей типа меня просто находка
CodeVisionAVR Пособие для начинающих М.Б.Лебедев 2008 мне не понравилась, пустая и не о чем.
Программирование на языке С для AVR и PIC микроконтроллеров Шилов. - вроде не плохая. заказал её, жду (В моем городе такой литературы не бывает вообще)

_________________
KIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт дек 17, 2010 02:02:15 
Это не хвост, это антенна
Аватар пользователя

Карма: 6
Рейтинг сообщений: 68
Зарегистрирован: Вс апр 19, 2009 17:20:22
Сообщений: 1303
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Рейтинг сообщения: 0
Ясно, можете тогда объяснить, вкратце, что делает вот такой код

Код:
TCCR1A=0x80;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x7A;
OCR1AL=0x12;
OCR1BH=0x00;
OCR1BL=0x00;
TIMSK=0x40


Как я понял, это настройка таймера, только вот что это значит...

P.S.
Нашел в программе с использованием таймера. Могу весь файл скинуть...

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт дек 17, 2010 02:49:34 
Это не хвост, это антенна
Аватар пользователя

Карма: 6
Рейтинг сообщений: 68
Зарегистрирован: Вс апр 19, 2009 17:20:22
Сообщений: 1303
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Рейтинг сообщения: 0
Все, разобрался. Только немного не понял расчет времени, исходя из частоты :dont_know: .

Спасибо за книгу Создаем устройства на микроконтроллерах. Белов А В. Все очень понятно и подробно расписано :)

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт дек 17, 2010 04:05:06 
Это не хвост, это антенна
Аватар пользователя

Карма: 6
Рейтинг сообщений: 68
Зарегистрирован: Вс апр 19, 2009 17:20:22
Сообщений: 1303
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Рейтинг сообщения: 0
Появился такой вопрос: Например нажал я кнопку, цикл остановился, но таймер все равно считает, как его сбросить перед запуском цикла (нажатием другой кнопки)?

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт дек 17, 2010 05:36:17 
Сверлит текстолит когтями
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Чт окт 15, 2009 14:16:18
Сообщений: 1116
Откуда: Екб
Рейтинг сообщения: 0
тов. КАШАК, книги - это, конечно, хорошо, но не следует забывать про даташит. Ответы на многие вопросы, включая ваши, содержатся там.
КАШАК писал(а):
...Только немного не понял расчет времени, исходя из частоты :dont_know: ...

Формула для подсчёта частоты тактирования таймера:
Изображение
КАШАК писал(а):
... как его сбросить перед запуском цикла ...

Считает таймер в регистре TCNT, его и нужно сбрасывать.


Вложения:
1.PNG [5.84 KiB]
Скачиваний: 15879
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт дек 17, 2010 11:10:47 
Это не хвост, это антенна
Аватар пользователя

Карма: 6
Рейтинг сообщений: 68
Зарегистрирован: Вс апр 19, 2009 17:20:22
Сообщений: 1303
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Рейтинг сообщения: 0
Т.е. нужно написать так:

Код:
TCNT1H=0x00;
      TCNT1L=0x00;

?

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 294 ]  1, , , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y