ATMEL |
ÊÒÖ-ÌÊ |
Кроме того, регистр TEMP используется при обращении к TCNT1 и ICR1. Ес ли основная программа и подпрограммы обработки прерываний, использу ют обращение к регистрам посредством TEMP, то прерывания должны быть запрещены на вре мя обращения из основной программы.
РЕГИСТР ЗАХВАТА ВХОДА ТАЙМЕРА/СЧЕТЧИКА1 - ICR1H и ICR1L - (Timer/Counter1 Input Capture Register)
Áèòû |
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
|
$27 |
($47) |
MSB |
|
|
|
|
|
|
|
ICR1H |
$26 |
($46) |
|
|
|
|
|
|
|
LSB |
ICR1L |
|
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Чтение/Запись |
R |
R |
R |
R |
R |
R |
R |
R |
|
|
|
|
R |
R |
R |
R |
R |
R |
R |
R |
|
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
16-разрядный регистр захвата входа обеспечивает только чт ение содержимого. При обнаружении на выводе захвата входа PD4(IC1) нарастающего или падающего фронта сигнала (определяемого установкой ICES1) те кущее состояние таймера/счетчика1 пересылается в регистр захвата входа ICR1. Одновременно
устанавливается в состояние 1 флаг захвата входа ICF1.
Поскольку регистр захвата входа является 16-разрядным, то д ля обеспечения одновременного чтения старшего и младшего байтов данных регистра ICR1 используется регистр временного хранения TEMP. При считывании CPU данных мла дшего байта содержимое ICR1L пересылается в CPU, а содержимое старшего байта ICR1H размещается в регистре TEMP, чтение старшего байта заключает ся в переносе в CPU содержимого регистра временного хранения TEMP. Следователь но, при чтении всего 16-разрядного регистра операцию чтения необходимо начинат ь с младшего байта ICR1L. Регистр TEMP используется также при обращении к TCNT1, OCR1A и OCR1B. Если основная программа и подпрограммы обработки прерыв аний, используют обращение к регистрам посредством TEMP, то прерывания должны быть запрещены на время обращения из основной программы.
ТАЙМЕР/СЧЕТЧИК1 в ШИМ РЕЖИМЕ
При установленном ШИМ режиме таймер/счетчик1 и регистры с равнения выхода A и B (OCR1A и OCR1B), образуют сдвоенный 8, 9 или 10-разрядный автономный генератор ШИМ с правильным чередованием фаз, отсутствием ложных выбросов и выходами на выводы PD5(OC1A) и OC1B. Таймер/счетчик1 работает как рев ерсивный счетчик, считающий от $0000 до TOP (см. таблицу 18), при котором напра вление счета меняется и отсчет ведется до нуля, после чего цикл повторя ется. Когда состояние счетчика совпадет с содержимым 10 младших битов OCR1A или OCR1B, выводы PD5(OC1A)/ OC1B устанавливаются или очищаются, в соответствии с установ ками битов COM1A1/ COM1A0 или COM1B1/COM1B0 в регистре управления таймером/счетчиком1 TCCR1A. Подробности см. в таблице 19.
104
ÊÒÖ-ÌÊ
Таблица 18. TOP значения таймера и частота ШИМ
Разрешение ШИМ |
|
TOP значения таймера |
|
Частота ШИМ |
||
8-разрядное |
|
|
$00FF (255) |
|
f TC1 /510 |
|
9- разрядное |
|
$01FF (511) |
|
f TC1 /1022 |
||
|
|
|
|
|
|
|
10разрядное |
|
$03FF (1023) |
|
f TC1 /2046 |
||
Таблица 19. Выбор режима сравнения1 в ШИМ режиме |
||||||
|
|
|
|
|
||
COM1X1 |
|
COM1X0 |
Выходной сигнал на OCX1 |
|
||
|
|
|
|
|
|
|
0 |
|
0 |
|
Не подключен |
|
|
0 |
|
1 |
|
Не подключен |
|
|
1 |
|
0 |
|
Очищается по совпадению при счете вверх. Устанавливается по |
||
|
|
|
|
совпадению при счете вниз (не инвертированный ШИМ). |
||
1 |
|
1 |
|
Очищается по совпадению при счете вниз. Устанавливается по |
||
|
|
|
|
совпадению при счете вверх (инвертированный ШИМ). |
||
Примечание: X = A или B
Отметим, что в ШИМ режиме младшие 10 разрядов OCR1A/OCR1B, при записи , пересылаются в ячейки временного хранения. Они фиксируют ся по достижении таймером/счетчиком1 значения TOP. Таким способом обеспечива ется защита от появления уширенных ШИМ импульсов (ложных выбросов - glitches) п ри несинхронной записи OCR1A/OCR1B. См. пример на рис. 36.
Изменение уставки сравнения
Текущее состояние таймера/счетчика
























Установленное 
































значение сравнения
ШИМ выход на выводах OC1X
Изменение уставки сравнения
Текущее состояние таймера/счетчика



















Установленное 





































значение сравнения
ШИМ выход на |
выводах OC1X |
Ложный выброс |
Примечание: X = A или B
Рис. 36. Эффект несинхронной фиксации OCR1.
При чтении OCR1A или OCR1B, в промежутке времени между записью и фиксацией, будет считано содержимое ячейки временного хр анения. Это означает, что более раннее записанное значение всегда будет считывать ся из OCR1A/B.
Когда OCR1 содержит $0000 или TOP, вывод OC1A/OC1B остается на низком уровне, соответственно установкам COM1A1/COM1A0 или COM1B1/COM1B0. Это отображено в таблице 20.
105
ATMEL |
|
|
ÊÒÖ-ÌÊ |
|
Таблица 20. Состояния выходов в ШИМ режиме при OCR1X = $0000 или TOP |
||||
|
|
|
|
|
COM1X1 |
COM1X0 |
OCR1X |
Состояние выводов OC1X |
|
1 |
0 |
$0000 |
L |
|
1 |
0 |
TOP |
H |
|
1 |
1 |
$0000 |
H |
|
1 |
1 |
TOP |
L |
|
Примечание: X = A или B
В ШИМ режиме флаг переполнения таймера1 (TOV1) устанавливаетс я при смене направления счета по достижении значения $0000. Прерыв ание по переполнению таймера1 работает так же как и в обычном режиме таймера/сче тчика, т.е. оно выполняется когда TOV1 установлен и разрешены прерывания по переполнению таймера1 и глобальные прерывания. Это относится и к флагам сравнения выхода таймера1 и прерываниям.
Сторожевой таймер (Watchdog Timer)
Генератор 1 МГц
Сброс
сторожевого
таймера
WDP0
WDP1
WDP2
WDE
Предварительный делитель
сторожевого таймера OSC/16K OSC/32K OSC/64K OSC/128K OSC/256K OSC/512K OSC/1024K OSC/2048K
Сброс MCU
Рис. 37 Сторожевой таймер.
Сторожевой таймер тактируется отдельным встроенным ген ератором, работающим с частотой 1 МГц при типовом напряжении питани я VCC=5 В (см. типовые значения при других значениях VCC). Установкой коэффициента предварительного деления можно изменять длительность интервала до сброса по сторожевому таймеру от 16 тыс. до 2048 тыс. циклов (от 16 до 2048 мс). Команда WDR (Watchdog Reset)
сбрасывает сторожевой таймер.
С момента сброса сторожевого таймера можно установить во семь периодов длительности тактового сигнала, устанавливая, таким обра зом длительность периода сброса. Если период сброса завершается (в течение этого пе риода не поступил сигнал сброса сторожевого таймера), то микроконтроллер ATmega603/103 сбра сывается и его работа продолжается по вектору сброса. Подробности та ктирования сброса по сторожевому таймеру см. выше в разделе Сброс по сторожевому таймеру.
При разрешении сторожевого таймера его состояние неизве стно и прежде, чем разрешать сторожевой таймер, необходимо выполнить коман ду WDR. В ином случае прибор может быть сброшен прежде, чем будет выполнена ком анда WDR прописанная после разрешения. Для предотвращения случайного запрета , запрет сторожевого таймера должен сопровождаться специальной процедурой в ыключения. Подробности в описании регистра управления сторожевым таймером.
106
ÊÒÖ-ÌÊ
РЕГИСТР УПРАВЛЕНИЯ СТОРОЖЕВЫМ ТАЙМЕРОМ - WDTCR - (Watchdog Timer Control Register)
Áèòû |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$21 ($41) |
|
- |
- |
- |
WDTOE |
WDE |
WDP2 |
WDP1 |
WDP0 |
WDTCR |
Чтение/Запись |
R |
R |
R |
R/W |
R/W |
R/W |
R/W |
R/W |
||
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
• Bits 7..5 - Res: Reserved bits - Зарезервированные биты
Эти биты в микроконтроллерах ATmega603/103 зарезервированы и при с читывании всегда будут 0.
•Bit 4 - WDTOE: Watch Dog Turn Off Enable - Разрешение отключения сторожевого таймера
Данные биты должны быть установлены в состояние 1 при очис тке бита WDE. В ином случае сторожевой таймер не будет запрещен. Установленны й бит аппаратно очищается после четырех тактовых циклов. См. описание бита WDE в процед уре запрета сторожевого таймера.
•Bit 3 - WDE: Watch Dog Enable - Разрешение сторожевого таймера
Если бит WDE установлен в состояние 1 (сторожевой таймер разр ешен) и если бит WDE очищен, то функционирование сторожевого таймера запрещ ено. Бит WDE может быть очищен только если установлен бит WDTOE. Для запрещения р азрешенного сторожевого таймера необходимо выполнить следующую про цедуру:
1.В одной операции записать логическую 1 в WDTOE и WDE. Логическая 1 должна быть записана в WDE даже если этот бит был установлен перед началом операции запрета сторожевого таймера.
2.За время последующих четырех тактовых циклов записать логический 0 в WDE. Сторожевой таймер будет запрещен.
•Bits 2..0 - WDP2, WDP1, WDP0: Watch Dog Timer Prescaler 2, 1 and 0 - áèòû
установки коэффициента предварительного деления сторож евого таймерà
Состояния битов WDP2, WDP1 и WDP0 определяют коэффициент предварит ельного деления тактовой частоты разрешенного сторожевого тайм ера. Коэффициенты и соответствующие им промежутки времени представлены в та блице 21.
Таблица 21. Выбор коэффициента предварительного деления тактовой ч астоты сторожевого таймера
WDP2 |
WDP1 |
WDP0 |
Длительность цикла сторожевого таймера |
0 |
0 |
0 |
16 тыс. циклов |
0 |
0 |
1 |
32 тыс. циклов |
0 |
1 |
0 |
64 тыс. циклов |
|
|
|
|
0 |
1 |
1 |
128 тыс. циклов |
1 |
0 |
0 |
256 тыс. циклов |
1 |
0 |
1 |
512 тыс. циклов |
1 |
1 |
0 |
1024 тыс. циклов |
1 |
1 |
1 |
2048 тыс. циклов |
107
ATMEL |
ÊÒÖ-ÌÊ |
Обращение к EEPROM при чтении/записи
Обращение к EEPROM ведется посредством регистров расположенн ых в пространстве I/O. Время обращения при записи составляет от 2 ,5 до 4 мс, в зависимости от напряжения VCC. Однако существует специальная функция, которая позволяет пользовательскому ПО обнаруживать момент, когда можно на чинать запись следующего байта - для индикации момента готовности EEPROM к записи новых данных может быть установлено специальное прерывание по завершению з аписи EEPROM (EEPROM Wr ite Complete). Случайная запись в EEPROM предотвращается выполнением специальной процедуры, показанной подробнее в описании р егистра управления EEPROM.
После процедуры записи в EEPROM CPU, прежде чем начать выполнение следующей команды, останавливается на два тактовых цикла . При чтении EEPROM CPU останавливается на 4 тактовых цикла.
РЕГИСТР АДРЕСА EEPROMEEARH, EEARL - (EEPROM Address Register)
Áèò |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
|
$1F ($3F) |
- |
- |
- |
- |
EEAR11 |
EEAR10 |
EEAR9 |
EEAR8 |
EEARH |
$1E ($3E) |
EEAR7 |
EEAR6 |
EEAR5 |
EEAR4 |
EEAR3 |
EEAR2 |
EEAR1 |
EEAR0 |
EEARL |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Чтение/Запись |
R |
R |
R |
R |
R/W |
R/W |
R/W |
R/W |
|
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
Посредством регистров адреса EEARH и EEARL определяется адрес в пространстве адресов EEPROM емкостью 2 К/4 К. Байты данных EEPROM адре суются линейно в пределах от 0 до 2047/4095. Микроконтроллер ATmega603 оснащен EEPROM с адресным пространством 2 К и бит I/O EEAR11 при чтении всегда б удет в состоянии 0.
РЕГИСТР ДАННЫХ EEPROM - EEDR - (EEPROM Data Register)
Áèò |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$1D ($3D) |
MSB |
|
|
|
|
|
|
LSB |
EEDR |
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
• Bits 7..0 - EEDR7..0: EEPROM Data - Данные EEPROM
В процессе выполнения операции записи в регистре EEDR содерж атся данные, записываемые в EEPROM по адресу, задаваемому регистром EEAR. При ч тении регистр EEDR содержит данные, считываемые из EEPROM по адресу, определяемо му EEAR.
РЕГИСТР УПРАВЛЕНИЯ EEPROM - EECR - (EEPROM Control Register)
Áèò |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$1C ($3C) |
|
- |
- |
- |
- |
EERIE |
EEMWE |
EEWE |
EERE |
EECR |
Чтение/Запись |
|
R |
R |
R |
R |
R |
R/W |
R/W |
R/W |
|
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
108