Здравствуйте!
Решил под вот под старость лет поразбираться с микроконтроллерами. Даже что то маленько получилось(дергать ножками, да состояние их получать)
Сейчас необходимо решить задачу, возможно легкую для Вас.
Питать МК от батарейки и периодически мигать светодиодом.
Со светодиодом разобрался.
Но вот другая проблема: не могу разобраться как переводить МК в спящий режим и по интервалу(допустим 10сек.) просыпаться, мигать светодиодом и опять засыпать, чтобы экономить заряд батарейки.
Уже больше месяца копаюсь, в голове каша из регисторов, таймеров и т.п., Ваш форум весь за это время прочитал, а результата со спящим режимом ноль. Видимо старый для этих дел стал...
Микроконтроллер atmega64, пишу в Codevisionavr.
Буду очень благодарен за помощь!
Ребята, помоги со спящим режимом в atmega64
- Реклама
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Ребята, помоги со спящим режимом в atmega64
курите WDT: настраиваете его на 2 секунды, при срабатывании - считаете "разы", как 5 насчитали - так мигаете. все остальное время - спокойный сон.
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: Ребята, помоги со спящим режимом в atmega64
пробовал с WDT, но не могу понять, как по нему что то отсчитывать, он при своем переполнении делает сброс МК со всеми переменными...
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Ребята, помоги со спящим режимом в atmega64
часть переменных надо разместить в "неочищаемой" области памяти, и всех делов-то!
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: Ребята, помоги со спящим режимом в atmega64
в "неочищаемой" области памяти
Это EEPROM? Думал там сохранять, но если это делать каждые 2 сек, то за сутки целых 48.000 обращений будет, а там у нее какой то свой ресурс ограниченный...
Это EEPROM? Думал там сохранять, но если это делать каждые 2 сек, то за сутки целых 48.000 обращений будет, а там у нее какой то свой ресурс ограниченный...
- Реклама
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Ребята, помоги со спящим режимом в atmega64
в неочищаемой - это в той части ОЗУ, которую стартап программы Си не очищает при сбросе. разберитесь со своим компилятором.
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: Ребята, помоги со спящим режимом в atmega64
не могу понять как сохранять переменные при сбросе WD
в даташите по векторам сброса говорится, что:
RESET External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset, and JTAG AVR Reset сбрасывают МК на 0x0000, т.е. в самое начало. Как работать с переменными, которые бы не сбрасывались при wd
в спящий режим перехожу так:
MCUCR |= ((1<<SE)|(1<<SM1)); //POWER_DOWN
#asm("sei");
#asm("sleep");
по внешнему прерыванию вроде понятно как выйти, но как по таймеру WD или другому не получается
Может у кого есть кусок кода выхода из сна по таймеру на CodeVisionAvr, хоть для другого atmega...
в даташите по векторам сброса говорится, что:
RESET External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset, and JTAG AVR Reset сбрасывают МК на 0x0000, т.е. в самое начало. Как работать с переменными, которые бы не сбрасывались при wd
в спящий режим перехожу так:
MCUCR |= ((1<<SE)|(1<<SM1)); //POWER_DOWN
#asm("sei");
#asm("sleep");
по внешнему прерыванию вроде понятно как выйти, но как по таймеру WD или другому не получается
Может у кого есть кусок кода выхода из сна по таймеру на CodeVisionAvr, хоть для другого atmega...


