Ребята, помоги со спящим режимом в atmega64

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
SergeyF
Родился
Сообщения: 4
Зарегистрирован: Ср апр 04, 2012 14:27:32

Ребята, помоги со спящим режимом в atmega64

Сообщение SergeyF »

Здравствуйте!
Решил под вот под старость лет поразбираться с микроконтроллерами. Даже что то маленько получилось(дергать ножками, да состояние их получать)
Сейчас необходимо решить задачу, возможно легкую для Вас.
Питать МК от батарейки и периодически мигать светодиодом.
Со светодиодом разобрался.
Но вот другая проблема: не могу разобраться как переводить МК в спящий режим и по интервалу(допустим 10сек.) просыпаться, мигать светодиодом и опять засыпать, чтобы экономить заряд батарейки.
Уже больше месяца копаюсь, в голове каша из регисторов, таймеров и т.п., Ваш форум весь за это время прочитал, а результата со спящим режимом ноль. Видимо старый для этих дел стал...
Микроконтроллер atmega64, пишу в Codevisionavr.
Буду очень благодарен за помощь!
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Ребята, помоги со спящим режимом в atmega64

Сообщение Мастер Ломастер »

курите WDT: настраиваете его на 2 секунды, при срабатывании - считаете "разы", как 5 насчитали - так мигаете. все остальное время - спокойный сон.
битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
SergeyF
Родился
Сообщения: 4
Зарегистрирован: Ср апр 04, 2012 14:27:32

Re: Ребята, помоги со спящим режимом в atmega64

Сообщение SergeyF »

пробовал с WDT, но не могу понять, как по нему что то отсчитывать, он при своем переполнении делает сброс МК со всеми переменными...
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Ребята, помоги со спящим режимом в atmega64

Сообщение Мастер Ломастер »

часть переменных надо разместить в "неочищаемой" области памяти, и всех делов-то!
битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
Эиком - электронные компоненты и радиодетали
SergeyF
Родился
Сообщения: 4
Зарегистрирован: Ср апр 04, 2012 14:27:32

Re: Ребята, помоги со спящим режимом в atmega64

Сообщение SergeyF »

в "неочищаемой" области памяти

Это EEPROM? Думал там сохранять, но если это делать каждые 2 сек, то за сутки целых 48.000 обращений будет, а там у нее какой то свой ресурс ограниченный...
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Ребята, помоги со спящим режимом в atmega64

Сообщение Мастер Ломастер »

в неочищаемой - это в той части ОЗУ, которую стартап программы Си не очищает при сбросе. разберитесь со своим компилятором.
битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
SergeyF
Родился
Сообщения: 4
Зарегистрирован: Ср апр 04, 2012 14:27:32

Re: Ребята, помоги со спящим режимом в atmega64

Сообщение SergeyF »

не могу понять как сохранять переменные при сбросе 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...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»