Skip to main content

Сброс микроконтроллера

Процесс сброса микроконтроллера состоит из аппаратного и программного сброса. Влияние помехи по питанию на сброс представлено на рисунке ниже.

Временная диаграмма при включении и выключении питания
Временная диаграмма при включении и выключении питания

Длительность времени заряда RC-цепи рассчитывается по формуле:

  • TRC ≈ 0,16 х С5,

где С5 – емкость внешнего конденсатора. Расчетная длительность аналогового сигнала первоначального сброса относительно «резкого» (1,0 мкс) включения питания на выводе VDD_5V = 5,0 В представлена в таблице ниже. Замедление включения питания будет соответственно затягивать сброс.

Ёмкость внешнего конденсатораДлительность аналогового сигнала первоначального сброса (POR_RST), мс
C₅ = 1,0 нФ0,15 – 0,175
C₅ = 10 нФ1,5 – 1,75
C₅ = 100 нФ15 – 17,5

После срабатывания аналогового сброса добавляется еще цифровая фильтр-задержка (TSYS) в течение 1000 периодов частоты, установленной в качестве системной.

Выводы POR_RST и BOR_EXT имеют активный уровень «0». Вывод BOR_EXT работает, только когда вывод TM находится в «0». После того как на выводе POR_RST и внутреннем сигнале BOR_SEL сформируется неактивный уровень, еще в течение 1000 тактов системной частоты блок RST/CPU_SLEEP_CONTROL подает сигнал сброса системы RST_N.

Программный сброс микросхемы описан в разделе «Программный сброс».

Настройка GPIO после сброса

Для избежания помех после сброса порты GPIO необходимо настроить в определенное состояние. Порт GPIO_B всегда предустанавливается в лог. «0». Для GPIO_A и GPIO_C начальное состояние зависит от требуемого логического уровня: если порт настроен как выход и должен выдавать лог. «1», значение устанавливается в 0xFF, в противном случае – в 0x00.

Предустановка GPIO. При условии выдачи логического нуля на все GPIO.
__sfr __at (0x80) P0 = 0x00;  // GPIO_A
__sfr __at (0xA0) P2 = 0x00; // GPIO_B
__sfr __at (0xB0) P3 = 0x00; // GPIO_C
Предустановка GPIO. При условии выдачи логической единицы на все GPIO.
__sfr __at (0x80) P0 = 0xFF;  // GPIO_A
__sfr __at (0xA0) P2 = 0x00; // GPIO_B
__sfr __at (0xB0) P3 = 0xFF; // GPIO_C

Выше показана конфигурация, где порты GPIO_A и GPIO_C настроены как выход и выдают лог. «0» и лог. «1». Порт GPIO_B всегда предустанавливается в 0x00. Начальные значения портов задаются перед выполнением основной части программы.

Состояние выводов GPIO в режиме входа и выхода при сбросе микросхемы
Состояние выводов GPIO в режиме входа и выхода при сбросе микросхемы