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

 
 
> Прерывание от аналогового компаратора-?!, Не могу добиться прерывания, что не так?
Кастусь Рыжов
сообщение 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
defunct
сообщение Nov 20 2008, 00:08
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Кастусь Рыжов @ Nov 19 2008, 14:11) *
Ну если о компараторе дальше, то есть вопрос. (учу по Книге Евстифеева). Как на практике можно использовать аналоговый компаратор

Например - хотите измерить частоту сигнала переменного тока с амлитудой 100мв. цепляете сигнал непосредственно на выводы компаратора - и считаете количество прерываний от компаратора за секунду - вуаля никаких усилков и прочих внешних компонент не нужно.
Go to the top of the page
 
+Quote Post



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

 


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


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