Всем привет !
Помогите с такой проблемой.
Пишу прожку на СVAVR(1.25.8 Proff) для Attiny13 тестирую в Протеусе (7.1SP0 ) все работает как надо. В проге заюзаны таймер (в прерывании по таймеру дергаю ногой PB.0 - "типа шим" ) PB.1 PB.2 PB.3 -настроены как входы(1и2 с подтяжкой), АЦП PB.4(контролирую напругу) , WDT отключен...
Но потом понял, что надо бы режим энергосбережения заюзать.
И вот ту начались проблемы:
Протрахавшись решил просто для начала добиться того чтобы котроллер засыпал не говоря уже о пробуждении.
Пробовал стандартую библиотеку СVAVR sleep.h
Просто, до основного цикла While, в main{}, после инциализации всех портов и регистров заданных кодевизардом, пишу powerdown() - ноль на массу прога в протеусе выполняется без всяких засыпаний.
Потом вырубил визардовскую библиотеку .
Решил просто установить в MCUCR 4-й и 5-й бит в 1.
Прописал:
MCUCR=0b00110000; //CVAVR походу в курсе что такое MCUCR...
Тоже нифига. но при этом если выстявляю PUD=1,
MCUCR=0b01000000; //То подтяжка выходов пропадает как и положено по даташиту т.е. вроде как кодевижен управляет этим регистром нормально.
Потом решил попробовать асмовскую вставку (в асме я конечно почти полный ноль так что поправьте если что )
#asm
cli //запрещаем прерывания
in r16,$35 //считываем значение порта 35 (MCUCR) в 16-й регистр
sbr r16,0b00110000 меняем 4-й и 5-й бит на 1
cbr r16,0b00001000 меняем 3-й бит на 0
out $35,r16 //пишем в порт измененное значение
sei //разрешаем прерывания
#endasm
Тоже нифига - протеус колбасит как глухонемой и ничего не засыпает...
Подскажите что не так?
Что-то, еще надо поменять?
Или что-то будит проц постоянно(но вроде кроме INT0 который у меня не используется и WDT ничего его будить не может )?
Или это протеус так не корректно себя ведет ?
Спасибо!
В протеусе все по дефолту (WDT - default, Clock - default)
Раздел: AVR
Помогите с такой проблемой.
Пишу прожку на СVAVR(1.25.8 Proff) для Attiny13 тестирую в Протеусе (7.1SP0 ) все работает как надо. В проге заюзаны таймер (в прерывании по таймеру дергаю ногой PB.0 - "типа шим" ) PB.1 PB.2 PB.3 -настроены как входы(1и2 с подтяжкой), АЦП PB.4(контролирую напругу) , WDT отключен...
Но потом понял, что надо бы режим энергосбережения заюзать.
И вот ту начались проблемы:
Протрахавшись решил просто для начала добиться того чтобы котроллер засыпал не говоря уже о пробуждении.
Пробовал стандартую библиотеку СVAVR sleep.h
Просто, до основного цикла While, в main{}, после инциализации всех портов и регистров заданных кодевизардом, пишу powerdown() - ноль на массу прога в протеусе выполняется без всяких засыпаний.
Потом вырубил визардовскую библиотеку .
Решил просто установить в MCUCR 4-й и 5-й бит в 1.
Прописал:
MCUCR=0b00110000; //CVAVR походу в курсе что такое MCUCR...
Тоже нифига. но при этом если выстявляю PUD=1,
MCUCR=0b01000000; //То подтяжка выходов пропадает как и положено по даташиту т.е. вроде как кодевижен управляет этим регистром нормально.
Потом решил попробовать асмовскую вставку (в асме я конечно почти полный ноль так что поправьте если что )
#asm
cli //запрещаем прерывания
in r16,$35 //считываем значение порта 35 (MCUCR) в 16-й регистр
sbr r16,0b00110000 меняем 4-й и 5-й бит на 1
cbr r16,0b00001000 меняем 3-й бит на 0
out $35,r16 //пишем в порт измененное значение
sei //разрешаем прерывания
#endasm
Тоже нифига - протеус колбасит как глухонемой и ничего не засыпает...
Подскажите что не так?
Что-то, еще надо поменять?
Или что-то будит проц постоянно(но вроде кроме INT0 который у меня не используется и WDT ничего его будить не может )?
Или это протеус так не корректно себя ведет ?
Спасибо!
В протеусе все по дефолту (WDT - default, Clock - default)
Раздел: AVR