реклама на сайте
подробности

 
 
> RC-5 протокол и ATmega8, Есть пуль RC-5 и контроллер ATmega8
Rom20
сообщение Aug 23 2011, 13:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 10-10-08
Пользователь №: 40 823



Доброго времени суток форумчани! стоит задачка принимать команды с пульта RC-5 и обрабатывать их контроллером. Пересмотрел кучу статей по этой теме попробовал собрать несколько проектов и инета так ни чего и не заработала, уже неделю сижу парюсь, в итого только принимаю какую то ахинею и выкидываю ее в ком порт, вроде сам протокол изучи нормально как идет передача понимаю а что то не работает, вот кусок кода
ISR (INT0_vect)
{
uint8_t u;
TCCR0=(1<<CS02)|(1<<CS00);
TCNT0=0;
while(PIND&(1<<2))
{
}
u=TCNT0;
UDR=u+0x30;
}

генерирую прерывания по нарастающему фронту, а дальше пробую померить длительность каждого бита, по идеи при нажатии одной кнопки на пульте должен в ком порт получать минимум 14 символов, т.к протокол 14 бит, ну получаю всего один и то каждый раз разный. или может что ни так у меня с прерываниями прогнал программу в симуляторе AVRstudio и заметил что он из прерываний почему то не возвращаться а все время крутиться в них, при отладке в желез та же картина, где косяк в упор не вижу.
P.S плиз без троллинга!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Aug 23 2011, 14:32
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Rom20 @ Aug 23 2011, 17:37) *
заметил что он из прерываний почему то не возвращаться а все время крутиться в них, при отладке в желез та же картина, где косяк в упор не вижу.

Надо избавляться от желания вставлять в процедуры прерывания циклы ожидания.

А вашу задачу лучше решить так:
1) Прерывание по INT0 програмируется в режим изменения уровня ("Any logical change on INT0 generates an interrupt request").
2) Внутри процедуры обработки прерывания от INT0:
2а) вычисляют разность между счетчиком таймера TCNT0 и старым значением таймера (под эту переменную заводят глобальную переменную oldTCNT0).
2б) обновляют значение переменной oldTCNT0 = TCNT0
2в) передают разность на USART (UDR). По величине разности можно сообразить, к какой полярности она относится. При желании можно сделать так, чтобы посылалась разность только одной полярности (например, делать посылки через раз). Тем не менее прерываться следует при каждом изменении полярности, а не только нужной, т.к. иначе разница будет включать сумму интервалов низкого и высокого уроней. Однако инфрормация о временах промежутков между сигналами тоже может оказаться полезной.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Rom20   RC-5 протокол и ATmega8   Aug 23 2011, 13:37
|- - Rom20   Цитата(Xenia @ Aug 23 2011, 17:32) 1) Пре...   Aug 24 2011, 00:00
- - haker_fox   1. Официальная документация от Atmel предписывает ...   Aug 24 2011, 00:55
|- - Rom20   Цитата(haker_fox @ Aug 24 2011, 04:55) Ну...   Aug 24 2011, 02:16
- - Genadi Zawidowski   приём rc5 и складывание в буфер.   Aug 24 2011, 09:26
|- - Xenia   Цитата(Genadi Zawidowski @ Aug 24 2011, 13...   Aug 24 2011, 09:32
||- - Genadi Zawidowski   Цитата(Xenia @ Aug 24 2011, 13:32) Жутког...   Aug 24 2011, 09:40
|- - Rom20   Цитата(Genadi Zawidowski @ Aug 24 2011, 13...   Aug 24 2011, 10:19
|- - ARV   Цитата(Rom20 @ Aug 24 2011, 14:19) за про...   Aug 24 2011, 12:32
- - Genadi Zawidowski   Так из многих "нагугленных" эта заработа...   Aug 24 2011, 10:28
- - Allregia   Мне в свое время, помогли эти три ссылки: http://a...   Aug 24 2011, 20:31
- - Rom20   Народ хелп плиз. Написал программу в симуляторе AV...   Aug 28 2011, 06:29
- - -SANYCH-   Цитата//прерывание по приему USART ISR (USART_RXC_...   Aug 28 2011, 11:09
|- - Rom20   Цитата(-SANYCH- @ Aug 28 2011, 14...   Aug 28 2011, 11:17
- - -SANYCH-   Цитатаэто без разницы как работает и та и так конс...   Aug 28 2011, 11:46


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016