Таблица 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. Для выключения сторожевого таймера необходимо выполнить следующую последовательность:

Записать лог. 1 в WDCE и WDE одной инструкцией. Лог. 1 должна быть записана в бит WDE, даже если до выполнения данной операции в нем уже была записана лог. 1. В течение следующих четырех тактов записать лог. 0 в WDE, что приводит к отключению сторожевого таймера.

На 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