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

 
 
> Прерывание от аналогового компаратора-?!, Не могу добиться прерывания, что не так?
Кастусь Рыжов
сообщение Nov 17 2008, 20:38
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 16-07-07
Из: Беларусь, г.Гомель
Пользователь №: 29 165



Всем привет. Налабал программу на Си для ATmega16 и схему в Протэусе, хочу добиться работы прерывания от аналогового компаратора, но пока безупешно. Выкладываю проект. По прерыванию перестает мигать зеленый диод, и 5 раз мигает красный.Подскажите пожалуйста, что не так написал?
Прикрепленные файлы
Прикрепленный файл  AnalogCompare_ATmega16.rar ( 11.73 килобайт ) Кол-во скачиваний: 33
Прикрепленный файл  AnalogCompare.rar ( 16.86 килобайт ) Кол-во скачиваний: 32
 


--------------------
Прибор должен работать не в принципе, а в корпусе!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SysRq
сообщение Nov 17 2008, 21:23
Сообщение #2


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Код
PINC = 0xFF;            //pull up
Ошибка. Регистры PINx - read only. Подтяжки включаются не так, см. даташит.

Код
reti();
Ошибка. Не надо этого, т.к. ISR() все сгенерит сам.

Код
int i=0;
while (i==5) { i++; }
Так тело цикла не выполнится ни разу. Если хотите чтобы выполнилось 5 раз, делайте проверку "i < 5". А еще лучше заменить while на for.

Сообщение отредактировал SysRq - Nov 17 2008, 21:23
Go to the top of the page
 
+Quote Post
Кастусь Рыжов
сообщение Nov 19 2008, 12:11
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 16-07-07
Из: Беларусь, г.Гомель
Пользователь №: 29 165



Цитата(SysRq @ Nov 17 2008, 23:23) *
Код
PINC = 0xFF;            //pull up
Ошибка. Регистры PINx - read only. Подтяжки включаются не так, см. даташит. Спасибо за начставление.

Код
reti();
Ошибка. Не надо этого, т.к. ISR() все сгенерит сам.

Убрал reti() , и правда, не сказалось на работе

Код
int i=0;
while (i==5) { i++; }
Так тело цикла не выполнится ни разу. Если хотите чтобы выполнилось 5 раз, делайте проверку "i < 5". А еще лучше заменить while на for.
Спасибо боьшое за помощь, ддо меня тоже это допёрло, условие иправил и всё сразу заработало , даже с while.

Ну если о компараторе дальше, то есть вопрос. (учу по Книге Евстифеева). Как на практике можно использовать аналоговый компаратор, а точнее его свойства подключать выводы к мультиплексору АЦП, и куда это можно применить? В книге как то не густо написано, у меня слабое представление как это можно использовать. Пробовал подавать разные сигналы с генератора на входы аналогового компаратора, по прерыванию выводил значение бита ACO. Получалось что-то вроде ШИМ., правда еще не уверен, что именно это и получил. Да и вообще кратко можно ли о практическом применении аналогового компаратора в этом ракурсе, или примерчики, ссылку , проект. Всем отозвавшимся заранее спасибо.


--------------------
Прибор должен работать не в принципе, а в корпусе!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 03:48
Рейтинг@Mail.ru


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