Внешнее прерывание по INT, не получается запустить

AVR версия программы

Re: Внешнее прерывание по INT, не получается запустить

Сообщение mim (mim) » 02 фев 2014, 08:05

Alexey писал(а):1. отсутствие очистки дисплея при первом срабатывании датчика
2. нет стабильности работы программы при переборе датчиков(кнопок)-то может не отобразиться половина инфы на дисплее,то отображаются какие то кракозябры...Может стек тому виной..

1. Такого не заметил...
2. Нет ничего удивительного... Сколько раз говорится что в прерываниях не должно быть длинных процедур (если это не противоречит понятиям и здравому смыслу). Зачем в обработке прерывания стоит очистка ЖКИ??? В процедурах дисплея очень много пауз. Особенно в Clear (пауза Wdt_Delay_Ms(2);). Эти паузы не "inline". Например, в момент вывода температуры на ЖКИ происходит нажатие Кнопки, если прерывание попало на выполнение Паузы, то происходит сбой программы. Почему? Потому что процедура Паузы - это одна и та же подпрограмма к которой обратились дважды и нарушили ход ее выполнения... Убери очистку ЖКИ в прерывании и все станет на свои места...
В большинстве случаев не вижу смысла в очистке дисплея... Все надписи повторяются, то что обновляется накладывай поверху, лишнее и длинное затирай пробелами - смотри мои и другие примеры выдачи на ЖКИ. После выдачи цифры пишешь выдачу пробелов (сколько нужно).

ЗЫ Протеус ставь 7.9 или 7.10. Смотри примеры про запрет прерывания при опросе датчиков температуры.

ВОПРОС МЕНЯЕТ ТЕМУ! ДЛЯ ОБСУЖДЕНИЯ ИЩИ ПОДХОДЯЩУЮ ИЛИ ДЕЛАЙ НОВУЮ!
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе

Re: Внешнее прерывание по INT, не получается запустить

Сообщение DmitryAnarhist (DmitryAnarhist) » 03 авг 2017, 14:57

Кажись ещё один глюк всплыл, при включении прерывания по переполнению таймеров 1 и 2 компилятор выкидывает ошибку.
2017-08-03_143559.jpg

В архиве пример того как это происходит и исправленый файлик решающий проблему.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: DmitryAnarhist
Имя: DmitryAnarhist
(SPB)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: Внешнее прерывание по INT, не получается запустить

Сообщение Taska (Максим) » 03 авг 2017, 17:09

В архиве нет исправленного FCD файла.
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Внешнее прерывание по INT, не получается запустить

Сообщение Vovan_G5 (Владимир) » 03 авг 2017, 21:00

Нет у Atmega16 TIMSK1, а есть TIMSK, вот и вся кибернетика :)
Ник: Vovan_G5
Имя: Владимир
(Харьков)
Консультант
Консультант
Информация о пользователе
Вернуться наверх

Re: Внешнее прерывание по INT, не получается запустить

Сообщение DmitryAnarhist (DmitryAnarhist) » 04 авг 2017, 00:11

Упс... куда-то он делся... :shock:
Отправлю отдельно.
Там не только TIMSK1 добавлен, там ещё и биты регистров неправильно названы были для второго таймера.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: DmitryAnarhist
Имя: DmitryAnarhist
(SPB)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Пред.

Вернуться в Flowcode AVR

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

cron