Не работает прерывание на atmega8
- Войдите на сайт для отправки комментариев
Пнд, 05/12/2016 - 09:05
После входа в режим сна Atmega8 не реагирует на прерывание. Зашиваю этот же код в 328 атмегу - работает без проблем, будится на "ура". Подскажите, что нет так?
#include <avr/sleep.h> #include <avr/power.h> #include <stdio.h> #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> volatile boolean flag = false, flagdone = false; void waking(void) { flag = true; } void sleeping(void) { flag = false; flagdone = false; digitalWrite(6, LOW); delay(100); set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_mode(); sleep_disable(); } void setup() { pinMode(6, OUTPUT); digitalWrite(6, HIGH); delay(5000); digitalWrite(6, LOW); attachInterrupt(0, waking, HIGH); //2pin sleeping(); } void loop() { digitalWrite(6, HIGH); delay(5000); sleeping(); }
И так пробовал:
Атмеги с одинаковыми частотами зашивал. Но восьмая - не реагирует все равно. Объясните, пожалуйста, куда копать!
Немного разобрался: прерывание на атмега8 работает без режима сна, проблема в том, что засыпает камень беспробудным сном. Поигрался с фьюзами - эффект тот же.
Заработало по низкому уровню на входе. Жаль, что только так. Всем спасибо.