Помогите с прогой на AVR

Все здесь

Помогите с прогой на AVR

Сообщение radonv » 15 янв 2014, 08:36

Здравствуйте! Проблема в том что не умею программировать. Есть РУ, приемник выдает ШИМ с длительностью от 1мс до 2мс. Нужно посчитать длительность импульса и в зависимости от этой величины включить определенную ножку.

Алгоритм: на ножке INT0 появляется сигнал, прерывание -> в обработчике обнуляем таймер, начинаем считать, прерывание по спаду напряжения на INT0 -> в обработчике закидываем в память число тактов которые насчитал счетчик. Далее стандартные условия.

Как это реализовать в код и правильный ли алгоритм?
Можно ли прерывания вкладывать друг в друга?
Как и когда остановить счетчик, вообще как настроить счетчик?
Как установить прерывание по спаду импульса?
radonv
 
Сообщения: 91
Зарегистрирован: 14 окт 2005, 22:31

Re: Помогите с прогой на AVR

Сообщение leprud » 15 янв 2014, 10:41

Если это вся задача (формально это выходит многоканальный rc switch), то можно обойтись без прерываний вообще:
Если импульс появился (а перед этим его не было - запоминаем текущее время/такты счетчика), если импульс пропал (а перед этим был) - вычитаем из текущего времени ранее запомненное.
Готово.
leprud
 
Сообщения: 174
Зарегистрирован: 16 май 2013, 09:26
Откуда: Moscow
прог. языки: декларативные

Re: Помогите с прогой на AVR

Сообщение avr123.nm.ru » 15 янв 2014, 13:15

radonv писал(а): Как это реализовать в код
лучше использовать специальную ногу захвата события ICP ер
Скрин начала настройки захвата прилагаю, вначале захват фронта импульса, после захвата фронта (начался импульс) в прерывании обнулите таймер 1 и запустите счет таймера 1 и настройте захват ICP "по спаду" falling ege. Когда произойдет захват спада (конец импульса) то в прерывании остановите таймер 1. Теперь счетные регистры таймера 1 содержат длину импульса в условных единицах.

как настроить прерывания в AVR http://www.proavr.narod.ru/03.htm как настроить таймер в AVR http://www.proavr.narod.ru/z6.htm

Настройки удобно делать мастером настроек в компиляторах CVAVR или ICC (https://www.imagecraft.com/devtools_AVR.html), отлаживать в PROTEUS 7.10

И в гугле поискать готовые проекты и подправить чуток. И тут на форуме есть наверняка.
Вложения
input capture atmega8.jpg
Настройки AVR удобно делать мастером настроек в компиляторах CVAVR или ICC www.imagecraft.com
Последний раз редактировалось avr123.nm.ru 15 янв 2014, 14:12, всего редактировалось 1 раз.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Помогите с прогой на AVR

Сообщение radonv » 15 янв 2014, 14:10

Сигналы повторяются с частотой 50Гц. Стандартное управление сервоприводом.
http://www.rc-auto.ru/articles_elekton/id/432/

В случае ICP это даст только один канал. Нужно минимум 2 канала.

Как быть с алгоритмом?
radonv
 
Сообщения: 91
Зарегистрирован: 14 окт 2005, 22:31

Re: Помогите с прогой на AVR

Сообщение avr123.nm.ru » 15 янв 2014, 14:13

с алгоритмом не морочьтесь.

второй канал на прерывание INTx либо использовать мега168 мега328 88 48 и другие у которых почти на всех ногах прерывания.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва


Вернуться в Свободное общение

Кто сейчас на конференции

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