реклама на сайте
подробности

 
 
> 18F25J10, Сбрасывается при переходе в sleep
Nikitoc
сообщение Jun 30 2011, 11:05
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



С чем связано такое поведение микроконтроллера - не понимаю. Частота сброса гораздо выше, чем при переполнении WDT, т.е. сразу после подачи команды SLEEP микроконтроллер сбрасывается. Конфигурация - WDT512 (период переполнения - 2 сек.), HS oscillator 10MHz with PLL x 4 (итого 40МГц). Для проверки использую такой код:

Код
#fuses H4_SW, NOIESO, WDT512, NOFCMEN

void main() {

     OSCTUNE = 0x40;                  // Разрешаем PLL - умножаем входную частоту на 4. В итоге получаем 40МГц.


     delay_ms(100);                           // Задержка для стабилизации генератора

     setup_wdt(WDT_ON);                  // Разрешаем тактирование WDT


     printf(" Start of program ");


     printf (" RCON: %u", RCON);          // Узнаем причину сброса (RCON равен b'00011100' при обычной подаче питания,
                                    // b'00011110' при сбросе от sleep, и b'00010111' при переполнении WDT)


     RCON = 0xFF;                        // Сбрасываем флаги

     sleep();

}


Естественно, строки "Start of program" и значение регистра RCON выводятся почти непрерывно.

Кто-нибудь раньше сталкивался с подобными глюками?


Добавлено:
Кстати, а это может быть как-то связано с отключением какой-то периферии при переходе в sleep?
И еще одно, если перед подачей команды SLEEP бит IDLEN = 1 (т.е. при переходе в idle mode) все работает корректно. Но потребление не устраивает ~3mA...

Сообщение отредактировал Nikitoc - Jun 30 2011, 13:01
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 02:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01336 секунд с 7
ELECTRONIX ©2004-2016