| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
USB коннектор на AVR
06.04.2012, 09:57
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: USB коннектор на AVR
|
|
|
|
06.04.2012, 10:51
|
|
|
Прописка
Регистрация: 15.11.2007
Адрес: СПБ
Сообщений: 214
Сказал спасибо: 37
Сказали Спасибо 42 раз(а) в 34 сообщении(ях)
|
Re: USB коннектор на AVR
Сообщение от Godzilla82
|
|
PHP код:
|
#define BUTTON 0b00000100
...
begin:
tmp = PINB;
PORTD = tmp;
if((tmp & BUTTON) == 0) {
// ну, пусть здесь будет задержка
}
goto begin;
|
В таком случае задержка будет вноситься всегда, пока нажата кнопка.
Никакой обработки дребезга и т.д...
|
Ну.. можно и дребезг отработать, если вставить паузу и отработку нажатой клавиши...
|
PHP код:
|
if((tmp & BUTTON) == 0) {
// ну, пусть здесь будет задержка
delay_ms(20);
while((tmp & BUTTON) == 0);
} }
|
Хотя я бы подавил дребезг интегрирующей RC цепочкой и вместо всего цикла "if"поставил бы "while"
|
|
|
|
06.04.2012, 11:01
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
|
Re: USB коннектор на AVR
Последний раз редактировалось Godzilla82; 06.04.2012 в 11:15.
|
|
|
|
06.04.2012, 11:26
|
|
|
Прописка
Регистрация: 15.11.2007
Адрес: СПБ
Сообщений: 214
Сказал спасибо: 37
Сказали Спасибо 42 раз(а) в 34 сообщении(ях)
|
Re: USB коннектор на AVR
Согласен - фигню сморозил. В нашем случае нужно отрабатывать дребезг без остановки цикла.
|
PHP код:
|
#define BUTTON 0b00000100
unsigned char count;
...
begin:
tmp = PINB;
PORTD = tmp;
if((tmp & BUTTON) == 0)
{
count++;
if (count›=5) { //кнопка нажата в течении 5 циклов
// ну, пусть здесь будет задержка
while((tmp & BUTTON) == 0);
}
}
else
count=0;
goto begin;
|
|
|
|
|
06.04.2012, 11:43
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
|
Re: USB коннектор на AVR
Сообщение от a-fisher
|
|
В нашем случае нужно отрабатывать дребезг без остановки цикла.
|
Поэтому
|
PHP код:
|
while((tmp & BUTTON) == 0);
|
нельзя оставлять. Иначе будет заморозка до тех пор, пока не отпустят кнопку.
внутри while() { ... } надо будет основные действия повторить по чтению-выводу в порт.
|
|
|
|
06.04.2012, 12:19
|
|
|
Прописка
Регистрация: 15.11.2007
Адрес: СПБ
Сообщений: 214
Сказал спасибо: 37
Сказали Спасибо 42 раз(а) в 34 сообщении(ях)
|
Re: USB коннектор на AVR
Я так понимаю, что при нажатой кнопке как раз не надо ничего передавать, поэтому так и написал. Если нужно отработать паузу определенной длины, то придется ловить фронт. А фронт уж точно удобнее прерыванием 
АААА! Точно, извините!
Правильно:
|
PHP код:
|
#define BUTTON 0b00000100
unsigned char count;
...
begin:
tmp = PINB;
PORTD = tmp;
if((tmp & BUTTON) == 0)
{
count++;
if (count›=5) { //кнопка нажата в течении 5 циклов
// ну, пусть здесь будет задержка
while((tmp & BUTTON) == 0) tmp = PINB;
}
}
else
count=0;
goto begin;
|
С фиксированной паузой:
|
PHP код:
|
#define BUTTON 0b00000100
unsigned char count;
...
begin:
tmp = PINB;
PORTD = tmp;
if((tmp & BUTTON) == 0)
{
count++;
if (count›=5) { //кнопка нажата в течении 5 циклов
// ну, пусть здесь будет задержка
delay_ms(....);
while((tmp & BUTTON) == 0)
{ tmp = PINB; PORTD = tmp;} //кнопку еще не отпустили, но уже передаем
}
}
else
count=0;
goto begin;
|
Последний раз редактировалось a-fisher; 06.04.2012 в 12:24.
|
|
|
|
11.04.2012, 18:23
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
|
Re: USB коннектор на AVR
А вообще , почему не использовать фичу tiny2313? Там-же целый порт сидит на внешних прерываниях PORTB, и ноги выбираются по маске , и работает на любое изменение, и вектор прерывания один : изменились состояния на любом из двух входов,открытых маской- идём в прерывание и копируем из входного порта через маску на выходной. А в основном теле программы уж с кнопкой разбираемся - Нажата честно? запрещаем прерывание ,отжата честно - разрешаем.
|
|
|
|
11.04.2012, 19:46
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
|
Re: USB коннектор на AVR
Ну потому, что как бэ ТэЗэ есть...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
usb джойстик на avr
|
bobrozub |
Микроконтроллеры, АЦП, память и т.д |
7 |
14.03.2012 20:24 |
|
USB клавиатура + AVR
|
Serdgo96 |
Микроконтроллеры, АЦП, память и т.д |
2 |
25.02.2010 22:55 |
|
USB Коннектор, разпиновка
|
nerozero |
Информация по радиокомпонентам |
2 |
05.10.2007 14:20 |
|
AVR...USB
|
Edd-Layer |
Микроконтроллеры, АЦП, память и т.д |
4 |
11.04.2007 21:37 |
Часовой пояс GMT +4, время: 16:43.
|
|