Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 18F25J10
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Nikitoc
С чем связано такое поведение микроконтроллера - не понимаю. Частота сброса гораздо выше, чем при переполнении 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
Так. Вроде бы все заработало. На VDDcore/Vcap ножке был установлен конденсатор меньшей емкости (0,47uF вместо 4,7uF по даташиту). Замена все исправила. Борьба с невнимательностью продолжается :-)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.