# 14. Системное управление и сброс > [name=Дарья Воронская] Инфы про JTAG пока не нашел. Но вроде как это отладчик ::: spoiler Оригинал на инглише During Reset, all I/O Registers are set to their initial values, and the program starts execution from the Reset Vector. The instruction placed at the Reset Vector must be a JMP – absolute jump – instruction to the reset handling routine. If the program never enables an interrupt source, the Interrupt Vectors are not used, and regular program code can be placed at these locations. This is also the case if the Reset Vector is in the Application section while the Interrupt Vectors are in the Boot section or vice versa. The circuit diagram in Figure 15 shows the reset logic. Table 15 defines the electrical parameters of the reset circuitry. The I/O ports of the AVR are immediately reset to their initial state when a reset source goes active. This does not require any clock source to be running. After all reset sources have gone inactive, a delay counter is invoked, stretching the Internal Reset. This allows the power to reach a stable level before normal operation starts. The time-out period of the delay counter is defined by the user through the CKSEL Fuses. The different selections for the delay period are presented in “Clock Sources” on page 25. ::: Во время сброса все регистры ввода-вывода устанавливаются в свои начальные значения, и программа начинает выполнение с вектора сброса. Инструкция, размещенная в векторе сброса, должна быть JMP (абсолютный переход) к процедуре обработки сброса. Если программа не активирует источник прерывания, векторы прерывания не используются, и в эти места может быть помещен обычный программный код. Порты ввода/вывода AVR немедленно сбрасываются в исходное состояние, когда становится активным источник сброса. Это не требует, чтобы какой-либо источник синхронизации работал. После того, как все источники сброса станут неактивными, вызывается счетчик задержки (delay counter), растягивающий внутренний сброс. Это позволяет питанию достичь стабильного уровня перед началом нормальной работы. Время ожидания счетчика задержки определяется пользователем через предохранители CKSEL. Различные варианты выбора периода задержки представлены в разделе «Источники синхронизации» (clock sources) на стр. 25. ![](https://i.imgur.com/YC8hHRH.png) ## Объяснение на русском https://www.youtube.com/watch?v=Ceu2wJLiXXg :::info В главе даташита system control and reset (37 страница) расписана система, все картинки и информацию сюда не перекидываю, на экзамене найдете страницу и посмотрите всё равно если что-то нужно будет доучить ::: Сброс - перезагрузка системы и всех её компонентов Есть 5 источника сброса 1. **Power on сброс**. Срабатывает на повышение питания с 0 до нормального количества. 2. Когда не подано напряжение на пин **RESET** с черточкой (внешний сброс). Напоминаю, пин инвертированный - сброс = 0. Изначально равен 1. 3. **Watchdog timer** сброс 4. **Brow-out** сброс (из-за бед с питанием, если подаётся больше или меньше, чем надо) 5. J**TAG AVR Reset**. - В ролике не было. The MCU is reset as long as there is a logic one in the Reset Register, one of the scan chains of the JTAG system. Refer to the section “IEEE 1149.1 (JTAG) Boundary-scan” on page 228 for details. ### Срабатывание power on сброса ![](https://i.imgur.com/nPZ8Kro.png) Figure 16: Сигнал сброса держится время = timeout. Это необходимо для того, чтобы питание зафиксировалось и стабилизирлвалось, а всё элементы процессора подготовились. После этого начинается программа. Когда питание начинает довататься на vcc, то значение на входе reset так же равно на vcc Figure 17: Если по каким то причинам reset изменяется позже, то действие сброса растягивается, тайм-аут начинает свой отсчёт от действия reset. ### Срабатывание reset сброса ![](https://i.imgur.com/W11emnr.png) Reset становится 0 - начинается сброс. Тайм аут начинает действовать после того, как reset вернётся на 1. Тобишь если ресет = 0 на протяжении минуты, то схема эту минуту и не работает. Здесь тайм-аут нужен для того, чтобы детектить возвращение к 0, что может снова вызвать сброс ### Срабатывания сброса на brown out детекторе ![](https://i.imgur.com/9XashkB.png) Есть два порога питания - верхний и нижний (VBot+, VBot-). Сброс начинается при выходе за нижний. Тайм-аут работает после возвращения к верхнему. Тайм-аут нужен для стабилизации питания Наличие двух порогов нужно потому, что если будет только 1 - то процессор будет постоянно перезапускаться если питание будет крутиться в районе этого порога :::spoiler Оригинал на инглише ATmega16 has an On-chip Brown-out Detection (BOD) circuit for monitoring the VCC level during operation by comparing it to a fixed trigger level. The trigger level for the BOD can be selected by the fuse BODLEVEL to be 2.7V (BODLEVEL unprogrammed), or 4.0V (BODLEVEL programmed). VBOT+ = VBOT + VHYST/2 and VBOT- = VBOT - VHYST/2. ::: Включить/выключить brown-out систему можно через BODEN ATmega16 имеет встроенную схему обнаружения пониженного напряжения (BOD) для контроля уровня VCC во время работы путем сравнения его с фиксированным уровнем срабатывания. Уровень срабатывания для BOD можно выбрать с помощью предохранителя BODLEVEL: 2,7 В (BODLEVEL не запрограммирован) или 4,0 В (BODLEVEL запрограммирован). VBOT+ = VBOT + VHYST/2 и VBOT- = VBOT - VHYST/2. VHYST = 130 mV BODEN и BODLEVEL - это fuse биты, которые устанавливаются только аппаратно. Что такое fuse биты хз ![](https://i.imgur.com/SYnLg6T.png) ### Watchdog reset [16. Таймер и счетчик со сторожевым регистром](/QEqiBwRDTyKwdVh2CG5uog) ![](https://i.imgur.com/mYKb2VZ.png) Если watcdog timer сбросился, то в течение 1 цикла процессора он выдает команду на сброс, и сразу после этого цикла начинается отсчет timeout после которого программа выходит из сброса ## Схема на английском Что значат всратые блоки на схеме: **Spike filter** - схема подавления коротких помех (случайные всплески импульса) **Boden** - работает ли brown out detector **Bodlevel** - уровень при котором убиваем систему **Reset Cuicuit** - идет почти после каждого источника сброса. Именно они определяют, что сброс произошел и подают 1, если да. Результаты обработки 4 схем определения сброса идут на **mcucsr регистр**, и там и запоминаются. Дальше идут на сигнал внутреннего сброса контроллера **Watchdog oscillator** - генератор частот для watchdog таймера **VCC** - (Voltage Collector Collector, перевод — коллектор напряжения) - на него идет питание. **Data bus** - шина данных. Грубо говоря, именно через нее можно получить инфу в регистры **Pull up resistor** - было в самом начале ролика, каюсь, не помню. **delay counters** - отсчитывает timeout. Мало инфы про источники, которые приходят на него ![](https://i.imgur.com/HvpW41D.png) ## Cхема на русском (Она немного отличается) ![](https://i.imgur.com/YKmDDD1.png)