Прерывания от одного компаратора PIC 16F628
|
|
kurnosenkoc |
Дата: Вс, 09.02.2014, 18:16 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
4
Замечания:
±
На сайте с 19.12.2013
Статус:
Offline
|
Начал осваивать Proton вроде все понятно,но уперся в прерывания от компаратора. Хотел сделать защиту по току используя один внутренний компаратор со встроенным источником опорного напряжения. При превышении напряжения на входе RA1 выше опорного программа должна перейти в обработчик,но у меня она сразу в обработчике, и чтобы я не делал ничего не получается. На схеме кнопка подает напряжение на RA1. Если программа работает ,то на выходе RB3 импульсы. В обработчике импульсы на RB7. Подскажите пожалуйста ,где я накосячил ?
|
|
|
|
mnbv |
Дата: Вс, 09.02.2014, 19:10 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 09.03.2011
Статус:
Offline
|
В Picsimulatoride, которому у меня нет оснований не доверять, ваша программа работает.
|
|
|
|
kurnosenkoc |
Дата: Вс, 09.02.2014, 19:17 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
4
Замечания:
±
На сайте с 19.12.2013
Статус:
Offline
|
К сожалению я ее не знаю,но в железе не работает ,где-то ошибка,но я ее не могу найти.
|
|
|
|
xvovanx |
Дата: Вс, 09.02.2014, 20:01 | Сообщение # 4 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
327
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
У вас возможно получается, что после обработчика преравания не происходит возврат куда вы указали - на Context Restore. Попробуйте сначала разместить программу main с возвратом на начало goto start. А обработчик прерываний поставить в конце программы -после goto start.
Сообщение отредактировал
xvovanx - Вс, 09.02.2014, 20:04
|
|
|
|
kurnosenkoc |
Дата: Вс, 09.02.2014, 20:23 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
4
Замечания:
±
На сайте с 19.12.2013
Статус:
Offline
|
Не знаю ,но мне сейчас не важно ,что делает обработчик пусть даже крутит в обработчике бесконечный цикл.Лишь бы не попадал в обработчик при включении питания, что сейчас и происходит.
|
|
|
|
ivan_fd |
Дата: Вс, 09.02.2014, 21:30 | Сообщение # 6 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Самое первое, что это такое
Код GoTo alarm_label Context Restore 'Возврат из обработчика прерывания Вы всегда будете переходить на начало прерывания.
Теперь второе.
Вы даташит читали????
Цитата В подпрограмме обработки прерываний необходимо выполнить следующие действия: 1. Произвести запись или чтение регистра CMCON для устранения условия несоответствия. 2. Сбросить флаг CMIF в ‘0’. Прочитайте регистр CMCON перед включением флага прерывания и сбросьте флаг прерывания от компаратора. И все будет как надо.
Да и в обработчике прерываний нужно сделать то же самое.
Сообщение отредактировал
ivan_fd - Вс, 09.02.2014, 21:31
|
|
|
|
kurnosenkoc |
Дата: Вс, 09.02.2014, 22:14 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
4
Замечания:
±
На сайте с 19.12.2013
Статус:
Offline
|
Буду искать. Ну вот и получилось ! При просмотре ассемблированного файла было замечено ,что в листинге ассемблере нет оператора CMCON = CMCON с помощью которого я пытался привести в соответствие регистр CMCON. И прописав повторно константу в этот регистр перед сбросом компаратора все заработало. Спасибо всем помогающим и особая благодарность ivan_fd. Вот рабочая программа обслуживающая прерывания от компаратора.
Сообщение отредактировал
kurnosenkoc - Пн, 10.02.2014, 12:53
|
|
|
|