Таблица 20 – Характеристики встроенного ИОН
Обозн. | Параметр | Мин. | Тип. | Макс. | Ед. изм. |
VBG | Напряжение ИОН | 1.15 | 1.23 | 1.40 | В |
tBG | Длительность запуска ИОН | 40 | 70 | мкс | |
IBG | Потребляемый ток ИОНом | 10 | мкА |
Сторожевой таймер
Сторожевой таймер тактируется от отдельного встроенного генератора частотой 1 МГц. Данное значение типично для напряжения питания VCC = 5В. Значение частоты при другом напряжении питания см. на рис. 194. Период переполнения сторожевого таймера можно задавать путем управления предделителем (см. табл. 22). Инструкция WDR выполняет сброс сторожевого таймера. Сторожевой таймер также сбрасывается при выключении или во время сброса микроконтроллера. Период переполнения определяют восемь различных коэффициентов деления предделителя. Если инструкция сброса сторожевого таймера WDR не выполняется в течение времени равного периоду переполнения сторожевого таймера, то ATmega128 сбрасывается и начинает выполнение программы по вектору сброса.
Для предотвращения неумышленного изменения периода переполнения или выключения сторожевого таймера могут быть использованы 3 различных уровня безопасности, которые выбираются конфигурационными битами M103C и WDTON в соотв. с табл. 21. Уровень безопасности 0 соответствует установкам в ATmega103. Для разрешения работы сторожевого таймера не требуются какие-либо специальные меры независимо от уровня безопасности (см. “Временные последовательности изменения конфигурации сторожевого таймера ”).
Таблица 21 – Конфигурация сторожевого таймера при различных настройках бит M103C и WDTON
M103C | WDTON | Уровень безопасности | Начальное состояние сторожевого таймера | Временная последовательность отключения сторожевого таймера | Временная последовательность изменения периода переполнения |
Незапрограммирован | Незапрограммирован | 1 | Выкл. | Есть | Есть |
Незапрограммирован | Запрограммирован | 2 | Вкл. | Отключение невозможно | Есть |
Запрограммирован | Незапрограммирован | 0 | Выкл. | Есть | Нет |
Запрограммирован | Запрограммирован | 2 | Вкл. | Отключение невозможно | Есть |

Рисунок 28- Сторожевой таймер
Регистр управления сторожевого таймера – WDTCR

Разряды 7..5 – Зарезервированы
Данные разряды являются зарезервированными и всегда считываются как 0.
Разряд 4 – WDCE: Разрешение изменения сторожевого таймера
Данный бит необходимо установить непосредственно перед записью лог. 0 в бит WDE. В противном случае запретить работу сторожевого таймере невозможно. После записи в данный бит лог. 1 он автоматически аппаратно сбросится по истечении четырех тактов синхронизации микроконтроллера. На уровнях безопасности 1 и 2 данный бит необходимо устанавливать также перед изменением настроек предделителя. См. “Временные последовательности изменения конфигурации сторожевого таймера”.
Разряд 3 – WDE: Разрешение сторожевого таймера
Работа сторожевого таймера разрешается (запрещается) путем установки (сброса) бита WDE. Сбросить бит WDE возможно, только если предварительно установить бит WDCE. Для выключения сторожевого таймера необходимо выполнить следующую последовательность:
На 2-ом уровне безопасности запретить работу сторожевого таймера невозможно даже с помощью указанной выше последовательности. См. “Временные последовательности изменения конфигурации сторожевого таймера”.
Разряд 2..0 – WDP2, WDP1, WDP0: Выбор коэффициента деления
Биты WDP2, WDP1 и WDP0 задают коэффициент деления частоты генератора сторожевого таймера после разрешения работы последнего. Значения коэффициентов деления и соответствующих периодов переполнения приведены в табл. 22.
Таблица 22 – Настройка предделения генератора сторожевого таймера
WDP2 | WDP1 | WDP0 | Количество тактов генератора сторожевого таймера | Типичное время переполнения при VCC = 3.0В | Типичное время переполнения при VCC = 5.0В |
0 | 0 | 0 | 16K (16,384) | 17.1 мс | 16.3 мс |
0 | 0 | 1 | 32K (32,768) | 34.3 мс | 32.5 мс |
0 | 1 | 0 | 64K (65,536) | 68.5 мс | 65 мс |
0 | 1 | 1 | 128K (131,072) | 0.14 с | 0.13 с |
1 | 0 | 0 | 256K (262,144) | 0.27 с | 0.26 с |
1 | 0 | 1 | 512K (524,288) | 0.55 с | 0.52 с |
1 | 1 | 0 | 1,024K (1,048,576) | 1.1 с | 1.0 с |
1 | 1 | 1 | 2,048K (2,097,152) | 2.2 с | 2.1 с |
В следующих примерах приведены функции выключения сторожевого таймера на Ассемблере и Си. В примерах предполагается, что система прерываний настроена таким образом, чтобы во время выполнения функции не возникло прерывание (например, с помощью общего запрета прерываний инструкцией cli ).
Пример кода на Ассемблере
WDT_off:
; Запись лог. 1 в WDCE и WDE
ldi r16, (1<<WDCE)|(1<<WDE)
out WDTCR, r16
; Выкл. сторожевого таймера
ldi r16, (0<<WDE)
out WDTCR, r16
ret
Пример кода на Си
void WDT_off(void)
{
/* Запись лог. 1 в WDCE и WDE */
WDTCR = (1<<WDCE) | (1<<WDE);
/* Выкл. сторожевого таймера */
WDTCR = 0x00;
}
Временные последовательности изменения конфигурации сторожевого таймера
Последовательность изменения настройки сторожевого таймера плавно изменяется между тремя уровнями безопасности. Ниже описаны процедуры изменения настроек для каждого из уровней.
Уровень безопасности 0
Данный режим совместим с работой сторожевого таймера ATmega103. Сторожевой таймер первоначально отключен, но может быть активизирован путем записи в бит WDE лог. 1 без каких-либо ограничений. Период переполнения таймера также может быть изменен без всяких ограничений. Для выключения активизированного сторожевого таймера должна быть выполнена процедура, описанная при рассмотрении бита WDE.
Уровень безопасности 1
В данном режиме сторожевой таймер первоначально отключен. Его работа может быть разрешена путем записи лог. 1 в бит WDE без каких-либо ограничений. Временная последовательность должна быть соблюдена при изменении периода переполнения сторожевого таймера или выключении разрешенного сторожевого таймера. В данном случае должна быть выполнена следующая последовательность:
С помощью одной и той же инструкции записать лог. 1 в WDCE и WDE. Лог. 1 должна быть записана в WDE независимо от предыдущего значения бита WDE. В течение следующих 4-х тактов одной инструкцией записать желаемое значение бит WDE и WDP, но со сброшенным значением бита WDCE.Уровень безопасности 2
В данном режиме сторожевой таймер всегда включен а значение бита WDE всегда считывается как лог. 1. Временная последовательность должна быть соблюдена при изменении периода переполнения сторожевого таймера. При этом, должна быть выполнена следующая последовательность:
Записать лог. 1 в WDCE и WDE одной инструкцией. Не смотря на то, что WDE всегда установлен, для запуска временной последовательности в него все равно необходимо записывать лог. 1. В течение следующих 4-х тактов записать желаемое значение WDP одной инструкцией при сброшенном значении бита WDCE. Записываемое значение в бит WDE не оказывает никакого влияния.Прерывания
В данном разделе описывается специфика обработки прерываний, реализованная в ATmega128. Общее описание обработки прерываний приведено в разделе “Сброс и обработка прерываний”.
Векторы прерываний в ATmega128
Таблица 23 – Векторы сброса и прерываний
№ вектора | Адрес памяти программ(4) | Источник | Условие возникновения прерывания |
1 | $0000(1) | RESET | Внешний сброс, сброс при подаче питания, сброс при недопустимом снижении питания, сброс сторожевым таймером и сброс через JTAG-интерфейс |
2 | $0002 | INT0 | Запрос на внешнее прерывание 0 |
3 | $0004 | INT1 | Запрос на внешнее прерывание 1 |
4 | $0006 | INT2 | Запрос на внешнее прерывание 2 |
5 | $0008 | INT3 | Запрос на внешнее прерывание 3 |
6 | $000A | INT4 | Запрос на внешнее прерывание 4 |
7 | $000C | INT5 | Запрос на внешнее прерывание 5 |
8 | $000E | INT6 | Запрос на внешнее прерывание 6 |
9 | $0010 | INT7 | Запрос на внешнее прерывание 7 |
10 | $0012 | TIMER2 COMP | Срабатывание компаратора таймера-счетчика 2 |
11 | $0014 | TIMER2 OVF | Переполнение таймера-счетчика 2 |
12 | $0016 | TIMER1 CAPT | Захват фронта таймером-счетчиком 1 |
13 | $0018 | TIMER1 COMPA | Срабатывание компаратора А таймера-счетчика 1 |
14 | $001A | TIMER1 COMPB | Срабатывание компаратора В таймера-счетчика 1 |
15 | $001C | TIMER1 OVF | Переполнение таймера-счетчика 1 |
16 | $001E | TIMER0 COMP | Срабатывание компаратора таймера-счетчика 0 |
17 | $0020 | TIMER0 OVF | Переполнение таймера-счетчика 0 |
18 | $0022 | SPI, STC | Завершение последовательной передачи интерфейсом SPI |
19 | $0024 | USART0, RX | Завершение приема УСАПП 0 |
20 | $0026 | USART0, UDRE | Регистр данных УСАПП0 свободен |
21 | $0028 | USART0, TX | Завершение передачи УСАПП 0 |
22 | $002A | ADC | Завершение преобразования АЦП |
23 | $002C | EE READY | Готовность ЭСППЗУ |
24 | $002E | ANALOG COMP | Аналоговый компаратор |
25 | $0030(3) | TIMER1 COMPC | Срабатывание компаратора С таймера-счетчика 1 |
26 | $0032(3) | TIMER3 CAPT | Захват фронта таймером счетчиком 3 |
27 | $0034(3) | TIMER3 COMPA | Срабатывание компаратора А таймера-счетчика 3 |
28 | $0036(3) | TIMER3 COMPB | Срабатывание компаратора В таймера-счетчика 3 |
29 | $0038(3) | TIMER3 COMPC | Срабатывание компаратора С таймера-счетчика 3 |
30 | $003A(3) | TIMER3 OVF | Переполнение таймера счетчика 3 |
31 | $003C(3) | USART1, RX | Завершение приема УСАПП 1 |
32 | $003E(3) | USART1, UDRE | Регистр данных УСАПП1 свободен |
33 | $0040(3) | USART1, TX | Завершение передачи УСАПП1 |
34 | $0042(3) | TWI | Двухпроводной последовательный интерфейс |
35 | $0044(3) | SPM READY | Готовность записи в память программ |
Прим.:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |


