Делаю сигнализацию... Постановка на сигнализацию - нужно позвонить на заданный номер, снимается трубка (запускается timer_0 на 10 sec). Если в течении 10 сек пришла "2" с dtmf-декодера (IL9270) - положить трубку,включить задержку - 25 сек и если датчик исправен - поставить на сигнализацию. Если пришла неверная цифра, или в течении 10 сек вообще не нажато никакой цифры - положить трубку. Затем при сработке датчика запустить timer_1 и сделать 3 дозвона. Все работает отлично: снятие трубки,дозвон,сброс если вызывать сработку сразу, т.е. 5 - 30 мин после постановки на охрану, каждый раз время разное, иногда и через пол-дня работает нормально. Но иногда через час - два, опять же время каждый раз разное, может на 1-й сработке выключить телефон,может на 2-й, что-то происходит с timer_1, что функци delay в ISR(TIMER1_OVF_vect), которые отвечают за длительность сброса работают некорректно и телефон выключается. Уже весь мозг себе вынес - 3 недели долбаюсь, все безрезультатно ... Компилятор WinAvr . Вычитал на форумах про оптимизацию кода,может это она морочит голову. Пытался ее отключить - не работает без нее библиотека delay.h Подскажите направление, в котором копать ...
Вложения: |
dtmf.rar [1.8 КБ]
Скачиваний: 1326
|
|