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

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

Игры с прерываниями

Сообщение Alexey (Alexey) » 29 дек 2013, 00:13

Уважаемые гуру,все вроде работает в Flowcode,как нужно не работает в протеусе(не уходит в основной цикл). Проект из себя представляет термометр с обработкой нескольких датчиков.В основном цикле наблюдаем температуру на дисплее с двух дс18б20.Прерываем это дело по инт0,что переводит прогу в обработчик прерывания.Где опрашиваем определенные ноги которые ведут в макросы соответствующие датчикам.Причем нужно в любой момент, независимо от места обработки программы датчиков,перемещаться в макрос сработавшего датчика.В данном чипе немного неудобно реализовывать сию затею,приходится менять уровень на двух ногах- инт0 и ноге соответствуюшего датчика.Может я чего не догоняю,и можно сделать все проще?Проект прилагаю
termo 2 датчика 5 версия флоу.rar
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Alexey
Имя: Alexey
(Samara)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: Игры с прерываниями

Сообщение mim (mim) » 29 дек 2013, 08:07

НЕ НУЖНО СОЗДАВАТЬ ПОВТОРНЫЕ ТЕМЫ! Также нарушен пункт 4.3 правил форума!

1. Не нужно в прерывании организовывать циклы.
2. Нельзя в прерывании входить в тоже прерывание.
3. Вошел в прерывание, прочел порты, выполнил подпрограмму, вышел из прерывания.
4. Прерывание по нарастающему - прерывание происходит при отпускании кнопки!!! Что будем читать?
5. Если правильно опрашивать датчики и сделать коррекцию в Макросах, например как здесь (через условие и отсчет времени), то и прерывание не нужно, обычный опрос кнопок или уж тогда вот так.
6. Не помешает прочесть ссылки в посте и далее тему до конца.
7. Тема в масть...
8. Никаких пауз в прерывании не должно быть!!!
9. Зачем частота 4 мгц, поставь 8 мгц если от внутреннего...
Alexey писал(а):Прерываем это дело по инт0,что переводит прогу в обработчик прерывания. Причем нужно в любой момент
Понятие ЛЮБОЙ МОМЕНТ не совсем техническое, сколько это может определять задержку на реакцию? И какова скорость реакции нужна?

ЗЫ мне не понравилась куча запутанных соединений на оптопарах, хотел подправить, но сходу я не понял логику (праздники на носу однако...) нарисуй аккуратней, или убери их и вместо них поставь кнопки... Поставь более новую версию Протеуса, там больше свойств в МК.
termo2_mim.fcf_avr
У вас нет доступа для просмотра вложений в этом сообщении.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе

Re: Игры с прерываниями

Сообщение Alexey (Alexey) » 29 дек 2013, 17:55

mim писал(а):НЕ НУЖНО СОЗДАВАТЬ ПОВТОРНЫЕ ТЕМЫ! Также нарушен пункт 4.3 правил форума!

1. Не нужно в прерывании организовывать циклы.
2. Нельзя в прерывании входить в тоже прерывание.
3. Вошел в прерывание, прочел порты, выполнил подпрограмму, вышел из прерывания.
4. Прерывание по нарастающему - прерывание происходит при отпускании кнопки!!! Что будем читать?
5. Если правильно опрашивать датчики и сделать коррекцию в Макросах, например как здесь (через условие и отсчет времени), то и прерывание не нужно, обычный опрос кнопок или уж тогда вот так.
6. Не помешает прочесть ссылки в посте и далее тему до конца.
7. Тема в масть...
8. Никаких пауз в прерывании не должно быть!!!
9. Зачем частота 4 мгц, поставь 8 мгц если от внутреннего...
Alexey писал(а):Прерываем это дело по инт0,что переводит прогу в обработчик прерывания. Причем нужно в любой момент
Понятие ЛЮБОЙ МОМЕНТ не совсем техническое, сколько это может определять задержку на реакцию? И какова скорость реакции нужна?

ЗЫ мне не понравилась куча запутанных соединений на оптопарах, хотел подправить, но сходу я не понял логику (праздники на носу однако...) нарисуй аккуратней, или убери их и вместо них поставь кнопки... Поставь более новую версию Протеуса, там больше свойств в МК.
termo2_mim.fcf_avr

Прошу прощения за пункт 4.3 :(
1,2,3- внял,и разочаровался.
4- В программе установлено прерывание по спадающему (Falling edge of INT).Датчики будут через оптрон коротить входы мк на землю.Думаю с подтяжкой портов к плюсу надежней,так как могут возникать всяческие наводки и.т.п,хотя можно и их нейтрализовать.мне так проще.
5- Пытаюсь достичь того что-бы в ходе обработки макроса сработавшего датчика, программа немедленно переходила в макрос другого сработавшего.Потому как намереваюсь использовать задержки в макросах датчиков- 40 секунд.К примеру, если сработал датчик и обрабатывает свою программу,то другой сработавший-в пролете,так как первый еще не достиг окончания своей программы.
6,7-спасибо,в процессе.
8-Я так понял прерывание это обработчик и его подпрограммы.
9-Частоту задрал до 8 хотя и на 4 вроде так же. В любой момент- от 0 до 500 мс,чем быстрее тем лучше.
ЗЫ Выкинул оптроны,применил диоды,стало нагляднее.
Спасибо.
termo2_mim.rar
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Alexey
Имя: Alexey
(Samara)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Игры с прерываниями

Сообщение mim (mim) » 29 дек 2013, 18:26

Alexey писал(а):1. В программе установлено прерывание по спадающему...
2. Пытаюсь достичь того что-бы в ходе обработки макроса сработавшего датчика, программа немедленно переходила в макрос другого сработавшего.
3. намереваюсь использовать задержки в макросах датчиков- 40 секунд.
4. Я так понял прерывание это обработчик и его подпрограммы.
5. Частоту задрал до 8 хотя и на 4 вроде так же.

1. Конечно... после того как я это установил...
2. Все что выполняется в прерывании не может быть прервано до завершения прерывания (речь об одном и том же векторе прерывния)!!! Поэтому я тебе и дал ссылки - для правильной организации программы.
3. Нельзя в прерывании долго сидеть - это дурной тон (безграмотность)!
4. Нет. Это пункт 3.
5. В железе это лучше для датчиков.

Программу не смотрел (уверен что смотреть нечего). Прочти ссылки и переделывай. Завтра посмотрю...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

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

Сообщение mim (mim) » 30 дек 2013, 09:22

Пример программы с разрешением прерывания в прерывании. Но разработчик лишает себя возможности контролировать возникновение коллизий со стеком... Никто не сможет сказать что будет в реалии при большом потоке прерываний. Нельзя быть уверенным что события на входах не создадут такую ситуацию, когда из прерывания нельзя будет выйти... тем более, если в самих подпрограммах прерывания будут временные задержки. Комментарии в программе.
termo2_mim.fcf_avr
У вас нет доступа для просмотра вложений в этом сообщении.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

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

Сообщение Alexey (Alexey) » 18 янв 2014, 22:36

mim,оцени творчество :Отказался от прерываний и задержек.Опрашиваю порты,задержки происходят по отсчету тактов.
termo3.rar

Да, вот еще не получается у протеуса моделировать мой проект ,как не пытался его настроить,говорит:Simulation is not running in real time due to excessive CPU load
Симуляция не работает в реальном времени из-за чрезмерной загрузки центрального процессора. :( Буду на макетке собирать...
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Alexey
Имя: Alexey
(Samara)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

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

Сообщение mim (mim) » 19 янв 2014, 07:07

Alexey писал(а):1. Отказался от прерываний и задержек.Опрашиваю порты,задержки происходят по отсчету тактов.
2. Да, вот еще не получается у протеуса моделировать мой проект

1. Это значит лень было читать форум? Это называется - спрятался от проблемы...
2. Дисплей не инициализирован, порт не правильно подключен, знак запятой не исправлен... Протеус я советовал ставить другой... У меня все работает.

ЗЫ когда выкладываешь - смотри что выкладываешь, это не школьный диктант где кто-то за тебя все проверяет...
Если тема меняет профиль - ищи соответствующие разделы и начатые темы!!! О прерывании здесь уже ничего нет!!!
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

ATTINY13 Внешнее прерывание

Сообщение olegkaras2 (олег) » 01 фев 2014, 15:31

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

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

Сообщение Alexey (Alexey) » 01 фев 2014, 22:12

mim писал(а):1. Это значит лень было читать форум? Это называется - спрятался от проблемы...
2. Дисплей не инициализирован, порт не правильно подключен, знак запятой не исправлен...
3. Протеус я советовал ставить другой... У меня все работает.
4. ЗЫ когда выкладываешь - смотри что выкладываешь, это не школьный диктант где кто-то за тебя все проверяет...
5. Если тема меняет профиль - ищи соответствующие разделы и начатые темы!!! О прерывании здесь уже ничего нет!!!

Спасибо за наставления.
1.Форум читаю,но еще много чего непонятного ;) От проблем не прячусь-попытка сделать как нибудь,потому как правильно организовать программу еще не знаю.
2.Косячу не спорю.исправлено.
3.Протеус самый свежий стоит ,тот что в файловом архиве портала(Proteus 7.8sp2 )
4. :o
5.Остаюсь на прерывании,тоже нужно уметь их использовать.
В общем после прочтения форума получился следующий поект-
termo4.rar
.Все почти как надо,если не считать косяков таких как отсутствие очистки дисплея при первом срабатывании датчика,хотя по логике программы должен бы дисплей очищаться..И нет стабильности работы программы при переборе датчиков(кнопок)-то может не отобразиться половина инфы на дисплее,то отображаются какие то кракозябры...Может стек тому виной..Кстати где его отслеживать в протеусе?Искал инфу в нете,ничего внятного не нашел.
И еще,mim, мне очень важно твое мнение по поводу организации программы,отзовись пжалуйста.?
olegkaras2 писал(а):Здравствуйте.
Подскажите по чему не работает внешнее прерывание?
Привет.Сначала подумал что в 4 версии не работает,так как шим в 4 версии не был организован для данного контроллера,подумал может и прерывания по той же причине не пашут.Проверил в пятой,тоже не работают.Мне кажется INT0 это нога PB1...И нельзя прерывание в цикл ставить-Ух, БАБА ЯГА РУГАЕТСЯ :D
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Alexey
Имя: Alexey
(Samara)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

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

Сообщение Вячеслав (Вячеслав) » 02 фев 2014, 07:07

Alexey писал(а):Может стек тому виной..Кстати где его отслеживать в протеусе?Искал инфу в нете,ничего внятного не нашел.

http://kazus.ru/forums/forumdisplay.php?f=25
Proteus-Форум KAZUS.RU
Здесь смотрел?
Сам смотрю в окне Протеуса стек т.о.:
1. включаю отладку по шагам(слева внизу кнопка II),
2. далее вверху окна :Отладка-> PIC CPU -> 7.Steck DD1. Это для пиков и МК по схеме DD1.
При отладке по шагам появляется окошко стека, там прыгает стрелка-указатель.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Суперконсульт
Суперконсульт
Информация о пользователе
Вернуться наверх

Пред.След.

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

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

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

cron