Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

USB коннектор на AVR

Непрочитано 06.04.2012, 09:57  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: USB коннектор на AVR

Сообщение от Godzilla82 Посмотреть сообщение
Чтобы правильно передавать состояние входов - смотрите пост 150.



пост 90
Реклама:
omercury вне форума  
Непрочитано 06.04.2012, 10:51  
a-fisher
Прописка
 
Аватар для a-fisher
 
Регистрация: 15.11.2007
Адрес: СПБ
Сообщений: 214
Сказал спасибо: 37
Сказали Спасибо 42 раз(а) в 34 сообщении(ях)
a-fisher на пути к лучшему
По умолчанию 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"
a-fisher вне форума  
Непрочитано 06.04.2012, 11:01  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: USB коннектор на AVR

Сообщение от a-fisher Посмотреть сообщение
Ну.. можно и дребезг отработать, если вставить паузу и отработку нажатой клавиши...
Тогда "заморозка" сигнала будет 20 мс, а вовсе не 666 нс (хотя 666 - это шутка).

Сообщение от omercury Посмотреть сообщение

пост 90
Вы вообще, читаете, что вам пишут?

В 90 посте чтение идёт через прерывание. Вы же хотитеь обойтись без них?

Последний раз редактировалось Godzilla82; 06.04.2012 в 11:15.
Godzilla82 вне форума  
Непрочитано 06.04.2012, 11:26  
a-fisher
Прописка
 
Аватар для a-fisher
 
Регистрация: 15.11.2007
Адрес: СПБ
Сообщений: 214
Сказал спасибо: 37
Сказали Спасибо 42 раз(а) в 34 сообщении(ях)
a-fisher на пути к лучшему
По умолчанию 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; 
a-fisher вне форума  
Непрочитано 06.04.2012, 11:43  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: USB коннектор на AVR

Сообщение от a-fisher Посмотреть сообщение
В нашем случае нужно отрабатывать дребезг без остановки цикла.
Поэтому

PHP код:
 
while((tmp & BUTTON) == 0); 
нельзя оставлять. Иначе будет заморозка до тех пор, пока не отпустят кнопку.

внутри while() { ... } надо будет основные действия повторить по чтению-выводу в порт.
Godzilla82 вне форума  
Непрочитано 06.04.2012, 12:19  
a-fisher
Прописка
 
Аватар для a-fisher
 
Регистрация: 15.11.2007
Адрес: СПБ
Сообщений: 214
Сказал спасибо: 37
Сказали Спасибо 42 раз(а) в 34 сообщении(ях)
a-fisher на пути к лучшему
По умолчанию 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.
a-fisher вне форума  
Непрочитано 11.04.2012, 18:23  
OlegNZH
Почётный гражданин KAZUS.RUN
 
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: USB коннектор на AVR

А вообще , почему не использовать фичу tiny2313? Там-же целый порт сидит на внешних прерываниях PORTB, и ноги выбираются по маске , и работает на любое изменение, и вектор прерывания один : изменились состояния на любом из двух входов,открытых маской- идём в прерывание и копируем из входного порта через маску на выходной. А в основном теле программы уж с кнопкой разбираемся - Нажата честно? запрещаем прерывание ,отжата честно - разрешаем.
OlegNZH вне форума  
Непрочитано 11.04.2012, 19:46  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: USB коннектор на AVR

Ну потому, что как бэ ТэЗэ есть...
Godzilla82 вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.