Микроконтроллеры для систем автоматики - часть 19

 

  Главная      Учебники - Производство     

 

поиск по сайту           правообладателям

 

 

 

 

 

 

 

 

 

содержание   ..  17  18  19  20   ..

 

 

Микроконтроллеры для систем автоматики - часть 19

 

 

 

75 

установлен  бит TOIE0 (Timer/Counter0 Overflow Interrupt Enable)  в  регистре 
TIMSK. 

12.2. Захват, сравнение и широтно-импульсная модуляция 

16-битный таймер/счетчик Timer/Counter1 микроконтроллера ATmega163 доступен 

процессорному ядру для чтения и записи, он может считать импульсы синхронизации CK, 
импульсы  с  выхода  предделителя  или  импульсы  с  внешнего  вывода  Т1.  При  внешнем 
тактировании  входной  сигнал  синхронизируется  частотой  тактового  генератора  СК.  Для 
правильной работы таймера/счетчика 1 с внешним тактовым сигналом минимальное время 
между  двумя  переключениями  внешнего  этого  сигнала  должно  быть  не  менее  одного 
периода частоты синхронизации процессорного ядра.  

Шесть  16-битных  регистров  счетчика/таймера  обеспечивают  хранение  данных  в 

режимах  входного  захвата,  выходного  сравнения  и  широтно-импульсной  модуляции. 
Структурная схема таймера/счетчика 1 изображена на рис. 12.3. 

 

Рис. 12.3. Таймер/счетчик 1 микроконтроллера ATmega163 

16-битный таймер счетчик считает импульсы со входа T1 или тактовые импульсы 

СК.  Переключением  входа  управляют  биты CS10….CS12.  При  переполнении  счетчика 
формируется флаг запроса на прерывание TOV1. 

При воздействии на вход захвата содержимое счетчика копируется в специальный 

регистр захвата. В этом случае устанавливается флаг запроса на прерывание ICF1. 

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

специальных регистров сравнения. В момент равенства формируются флаги запросов на 
прерывания OCF1A и OCF1B и изменяются состояния выходов OC1A и OC1B. 

В режиме широтно-импульсной модуляции счетчик считает от 0 до максимального 

значения.  Далее  направление  счета  меняется  и  отсчет  ведется  до  нуля.  Содержимое 
счетчика  сравнивается  с  содержимым  регистров  сравнения.  Результат  сравнения 
отражается на выходах OC1A и OC1B. 

Работу счетчика обеспечивают 8-битные регистры, доступные процессорному ядру 

в пространстве регистров ввода/вывода (рис. 12.4): 

 

76 

º 

регистры  управления  таймера  счетчика TCCR1A (Timer/Counter1 Control 
Register A) 
и TCCR1B (Timer/Counter1 Control Register B); 

º 

регистры  данных TCNT1H  (Timer/Counter1 High) и TCNT1L (Timer/Counter1 
Low);
 

º 

регистры  выходного  сравнения OCR1AH (Timer/Counter1 Output Compare 
Register A High) и OCR1AL (Timer/Counter1 Output Compare Register A Low); 

º 

регистры  выходного  сравнения OCR1BH (Timer/Counter1 Output Compare 
Register B High) и OCR1BL (Timer/Counter1 Output Compare Register B Low); 

º 

регистры  входного  захвата - ICR1H - (Timer/Counter1 Input Capture Register 
High)
 и ICR1L (Timer/Counter1 Input Capture Register Low); 

º 

регистр флагов прерывания TIFR (Timer/Counter Interrupt Flag Register),  

º 

регистр маски прерывания TIMSK (Timer/Counter Interrupt Mask Register), 

º 

регистр состояния микроконтроллера SREG (Status Register). 

 

  

7  6  5 

3  2  1 0 

TCCR1A $2F ($4F)  COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B PWM11 PWM10 
TCCR1B $2Е ($4Е)  ICNC1 ICES1 

- CTC1 CS12 CS11 CS10 

TCNT1H $2D ($4D)  MSB      

       

TCNT1L $2C ($4C) 

 

 

 

 

 

 

 

LSB 

OCR1AH $2B ($4B)  MSB      

       

OCR1AL $2A ($4A) 

 

 

 

 

 

 

 

LSB 

OCR1BH $29 ($49)  MSB      

       

OCR1BL $28 ($48) 

 

 

 

 

 

 

 

LSB 

ICR1H $27 ($47)  MSB      

       

ICR1L $26 ($46) 

 

 

 

 

 

 

 

LSB 

TIMSK $39 ($59) 

OCIE2 

TOIE2 

TICIE1 OCIE1A- OCIE1B: TOIE1 

TOIE0 

TIFR $38 ($58) 

OCF2 

TOV2 

ICF1 OCF1A OCF1B TOV1 

TOV0 

SREG $3F ($5F) 

 

 

 

 

 

 

 

Рис.12.4. Регистры, участвующие в управлении таймером/счетчиком 1 

В  регистре  масок  прерываний TIMSK (Timer/Counter Interrupt Mask Register) 

устанавливаются разрешения/запрещения прерываний таймера/счетчика1: 

º 

Бит 5 - TICIE1  (Timer/Counter1 Input Capture Interrupt Enable) – бит 
разрешения прерывания при срабатывании входа захвата. 

º 

Бит 4 - OCIE1A (Timer/Counter1 Output CompareA Match Interrupt Enable) – 
бит  разрешения  прерывания  при  равенстве  содержимого  счетчика  и 
содержимого регистра сравнения OCR1A. 

º 

Бит 3 - OCIE1B (Timer/Counter1 Output CompareB Match Interrupt Enable) - бит 
разрешения  прерывания  при  равенстве  содержимого  счетчика  и 
содержимого регистра сравнения OCR1В. 

º 

Бит 2 - TOIE1 (Timer/Counter1 Overflow Interrupt Enable) – бит  разрешения 
прерывания при переполнении таймера/счетчика 1. 

 

77 

В  регистре  флагов  прерываний  T1FR (Timer/Counter Interrupt Flag Register

фиксируются события, являющиеся источниками прерываний: 

º 

Бит 5 - ICF1  (Input Capture Flag 1) – флаг  прерывания  при  возникновении 
захвата. 

º 

Бит 4 - OCF1A (Output Compare Flag 1A) – флаг прерывания при равенстве 
содержимого счетчика и содержимого регистра сравнения OCR1A. 

º 

Бит 3 - OCF1B (Output Compare Flag 1B) - флаг прерывания при равенстве 
содержимого счетчика и содержимого регистра сравнения OCR1В. 

º 

Бит 2 - TOV1  (Timer/Counter1 Overflow Flag) – флаг  прерывания  при 
переполнении таймера/счетчика 1. 

В  регистре  управления  ТCCR1B  находятся  биты  для  переключения  входа 

счетчика/таймера 1.  

º 

Биты 2..0 - CS12, CS11, CS10 (Clock Select1, Bit 2,1, and 0) 

Таблица 12.2. 

Управление входом таймера/счетчика 1 

CS12  

CS11  

CS10  

Описание 

0  

0  

0  

Останов таймера/счетчика 1. 

0  

0 1 CK 

0  

1 0 

CK 

0  

1 CK 

64 

1 0 0 

CK 

256 

1 0 1  

CK / 1024 

1 0 

Внешний контакт T1, задний фронт импульса 

 Внешний контакт T1, передний фронт импульса 

Регистры    данных TCNT1H  (Timer/Counter1 High) и TCNT1L (Timer/Counter1 Low) 

образуют  16-разрядный  регистр,  содержащий  текущее  значение  16-разрядного 
таймера/счетчика  1.  Для  того  чтобы  чтение/запись  старшего  и  младшего  байтов  этого 
регистра  происходило  одновременно,  обращение  к  ним  реализовано  посредством 8-
разрядного регистра временного хранения (TEMP):  

º 

Если  процессорное  ядро  производит  запись  в  старший  байт (TCNT1H),  то 
записываемые  данные  размещаются  в  регистре TEMP. Затем,  когда 
процессорное  ядро  производит  запись  в  младший  байт (TCNT1L)  данные 
младшего  байта  объединяются  с  байтом  данных  регистра TEMP и  все  16 
битов  одновременно  переписываются  в  регистр  таймера/счетчика TCNT1. 
Следовательно,  при  16-разрядных операциях обращение к старшему байту 
(TCNT1H)  должно  выполняться  первым.  При  использовании  таймера/ 
счетчика1 в качестве 8-разрядного таймера достаточно производить запись 
только младшего байта.  

º 

Если CPU считывает  младший  байт (TCNT1L),  то  содержимое TCNT1L 
направляются  непосредственно  в  процессорное  ядро,  а  содержимое 
старшего  байта (TCNT1H)  размещается  в  регистре TEMP. При  считывании 
старшего байта (TCNT1H) его содержимое будет изъято из регистра TEMP. 
Следовательно,  при  16-разрядных  операциях  первым  должно  выполняться 
обращение 

к 

младшему 

байту (TCNT1L). 

При 

использовании 

 

78 

таймера/счетчика1 

в 

качестве 8-разрядного 

таймера 

достаточно 

производить запись только младшего байта.  

Если  основная  программа  и  подпрограммы  обработки  прерываний  используют 

обращение  к  регистрам  посредством TEMP, то  прерывания  должны  быть  запрещены  на 
время обращения из основной программы. 

Таймер/счетчик  1  выполнен  в  виде  суммирующего  счетчика  с  возможностью 

чтения/записи.  Если  в  таймер/счетчик1  занесено  некоторое  значение  и  выбран  источник 
тактового сигнала, то он через один тактовый цикл продолжит счет с  записанного значения. 

В

Х О Д   З А Х В А Т А

 

Функция  захвата  заключается  в  копировании  содержимого  таймера/счетчика  1  в 

регистр  входа  захвата ICR1.  Процесс  копирования  запускается  внешним  событием  на 
входе  захвата ICР.  Реальные  установки  захвата  события  определяются  регистром 
управления  таймером/счетчиком  1 TCCR1B (Timer/Counter1 Control Register).  Кроме  того, 
для воздействия на вход захвата может быть использован аналоговый компаратор. Если 
разрешена  функция  подавления  шума,  действительные  условия  переключения  события 
захвата тестируются, прежде чем захват будет активирован.  

Регистры входа захвата ICR1H - (Timer/Counter1 Input Capture Register High) и ICR1L 

(Timer/Counter1 Input Capture Register Low)  образуют  16-битный  регистр ICR1,  доступный 
только для чтения. 

При  обнаружении  на  входе  захвата ICР  нарастающего  или  падающего  фронта 

сигнала  (определяемого  установкой  бита ICES1)  текущее  состояние  таймера/счетчика  1 
пересылается в регистр входа захвата ICR1. Одновременно устанавливается в состояние 1 
флаг захвата входа ICF1 (Input Capture Flag 1) в регистре флагов прерывания TIFR (Timer 
Interrupt Flags Register). 

Поскольку  регистр  входа  захвата ICR1  16-разрядный,  то  для  обеспечения 

одновременного  чтения  его  старшего  и  младшего  байтов ICR1H  и ICR1L  используется 
регистр временного хранения TEMP. При считывании данных младшего байта содержимое 
ICR1L  пересылается  в  процессорное  ядро,  а  содержимое  старшего  байта ICR1H 
размещается  в  регистре TEMP. Чтение  старшего  байта  заключается  в  переносе  в 
процессорное  ядро  содержимого  регистра  временного  хранения TEMP. Следовательно, 
при  чтении  всего  16-разрядного  регистра  операцию  чтения  необходимо  начинать  с 
младшего байта ICR1L. Регистр TEMP используется также при обращении к TCNT1, OCR1A 
и OCR1B. Если основная программа и подпрограммы обработки прерываний, используют 
обращение  к  регистрам  посредством TEMP, то  прерывания  на  это  время  должны  быть 
запрещены.  Для  управления  входом  захвата  используются  отдельные  биты  регистра 
TCCR1B (Timer/Counter1 Control Register B): 

º 

Бит 7 - ICNC1 (Input Capture1 Noise Canceler) - установка режима подавления 
шума  на  входе  захвата  1.  При  сброшенном  в  состояние 0 бите ICNC1 
функция  подавления  шума  входного  триггера  захвата  запрещена.  Вход 
захвата  в  этом  случае  реагирует  на  первый  же  импульс,  поступивший  на 
контакт  входа  захвата IC1.  При  установленном  в  состояние  1  бите ICNC1 
импульс, поступивший на вход захвата IC1 подвергается серьезной проверке 
-  состояние  входа IC1  опрашивается  последовательно  четыре  раза.  Все 
четыре выборки должны иметь одинаковый (высокий/низкий), определяемый 
битом ICES1, уровень. Частота опроса соответствует частоте синхронизации 
процессорного ядра.  

 

 

 

 

 

 

 

содержание   ..  17  18  19  20   ..