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

 

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

 

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

 

 

 

 

 

 

 

 

 

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

 

 

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

 

 

 

71 

других битов регистра ACSR командами SBI или CBI бит ACI будет очищен, 
если он был установлен перед этими операциями.  

º 

Бит 3 – ACIE (Analog Comparator Interrupt Enable) - разрешение прерывания 
по  аналоговому  компаратору.  При  установленном  бите ACIE и 
установленном  бите  глобального  прерывания  регистра SREG активируется 
прерывание ANA_COM с  вектором $20. При  сброшенном  бите ACIE 
прерывание запрещено.  

º 

Бит 2 – ACIC (Analog Comparator Input Capture Enable) - разрешение  входа 
захвата  аналогового  компаратора.  Установленный  в  состояние  1  бит ACIC 
разрешает  срабатывание  функции  захвата  входа  таймера/счетчика1  по 
переключению аналогового компаратора. В этом случае, выход аналогового 
компаратора  подсоединяется  непосредственно  ко  входной  цепи  логики 
захвата входа, что обеспечивает использование функций подавления шума 
и 

выбора 

вида 

срабатывания 

прерывания 

по 

захвату 

входа 

таймера/счетчика1.  При  сбросе  бита ACIC соединения  нет.  Для  запуска 
прерывания  по  захвату  входа  таймера/счетчика1  бит TICIE1  в  регистре 
масок прерываний TIMSK должен быть установлен в состояние 1.  

º 

Биты  1,0 - ACIS1, ACIS0 (Analog Comparator Interrupt Mode Select) - выбор 
режима  прерывания  по  аналоговому  компаратору.  Эти  биты  определяют 
характер  события  компаратора,  при  котором  запускается  прерывание  по 
аналоговому компаратору. Варианты установок показаны в таблице 11.1.  

Таблица 11.1.  

Установки битов ACIS1/ACIS0 

ACIS1 ACIS0 

Режим прерывания 

0 0 

Прерывание по переключению выхода компаратора 

 

01 

Зарезервировано 

1 0 

Прерывание по падающему фронту на выходе компаратора 

Прерывание по нарастающему фронту на выходе компаратора 

При  изменении  состояния  битов ACIS1/ACIS0  прерывание  по  аналоговому 

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

На отрицательный вход аналогового компаратора можно скоммутировать любой из 

входов порта PORTA (PA7 .. РА0). Для выбора входа используется мультиплексор аналого-
цифрового преобразователя.  

º 

Бит ACME (Analog Comparator Multiplexer Enable)  в  регистре  специальных 
функций 

ввода 

вывода SFIOR предназначен 

для 

подключения 

мультиплексора к аналоговому компаратору. При подключении должен быть 
сброшен  бит ADEN (ADC Enable) в  регистре ADCSR (аналого-цифровой 
преобразователь выключен). 

º 

Битами MUX2..0 в регистре мультиплексора ADMUX выбирается контакт на 
входе  (табл. 5.11).  Если  бит ACME равен 0 или  бит ADEN равен  1,  то  к 
отрицательному входу компаратора подключается контакт AIN1. 

 

72 

Таблица 11.2.  

Логика подключения отрицательного входа компаратора. 

ACME ADEN MUX2..0 Отрицательный вход аналогового компаратора 

0 x xxx 

AIN1 

1 xxx 

AIN1 

1 0 000 

PA0 

1 0 001 PA1 
1 0 010 PA2 
1 0 011 PA3 
1 0 100 PA4 
1 0 101 PA5 
1 0 110 PA6 
1 0 111 PA7 

12. ТАЙМЕРЫ-СЧЕТЧИКИ 

Большинство  задач  управления  решаются  в  реальном  времени.  При  этом 

микроконтроллер  должен  в  определенные  моменты  времени  выполнять  определенные 
действия с объектом. Типовыми задачами такого плана считаются: 

º 

подсчет импульсов сигнала за фиксированный интервал времени; 

º 

формирование интервалов времени определенной длительности; 

º 

формирование периодических сигналов заданной частоты; 

º 

формирование широтно-модулированных сигналов; 

º 

формирование временных задержек; 

º 

измерение времени и др.. 

Любая  из  этих  задач  может  быть  выполнена  программно,  но  в  этом  случае 

процессорное  ядро  вынуждено  заниматься  только  подсчетом  времени  и  все  остальные 
задачи откладываются. Для разгрузки процессорного ядра от такой неэффективной работы 
микроконтроллеры  снабжаются  специальными  схемами,  получившими  название 
таймеры/счетчики (Timer/Counter). Таймер/счетчик может быть использован для подсчета 
тактовых  импульсов  фиксированной  частоты  либо  для  подсчета  любых  внешних 
импульсных  сигналов.  Считается,  что  в  первом  случае  устройство  выполняет  функции 
таймера, во втором – счетчика.  

В  современных  микроконтроллерах,  кроме  простейших  функций  подсчета 

импульсов, на таймеры/счетчики возлагаются обычно дополнительные функции: 

º 

функция входа захвата IC (Input Capture), 

º 

функция выхода сравнения OC (Output Compare), 

º 

широтно-импульсной модуляции PWM (Pulse-Width Modulation ) 

В режиме захвата содержимое таймера/счетчика в момент времени, задаваемый 

каким  либо  внешним  событием  на  входе  захвата,  запоминается  в  регистре  данных  и 
становится  доступным  для  процессорного  ядра.  Одновременно  формируется  запрос  на 
прерывание,  сообщающий программе о готовности данных. 

В  режиме  сравнения  содержимое  таймера/счетчика  сравнивается  с  некоторым 

фиксированным числом, хранящемся в одном из регистров микроконтроллера. В момент 
равенства данных формируется сигнал на выходе захвата. 

 

73 

В 

режиме 

широтно-импульсной 

модуляции 

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

формирует 

последовательность импульсов определенной частоты, в которой длительность импульсов 
может быть изменена программно от 0 до периода последовательности. 

Количество  таймеров/счетчиков,  интегрируемых  на  кристалл  микроконтроллера, 

может быть различно. Например, микроконтроллер ATmega163 имеет три универсальных 
таймера/счетчика:  два 8-битных  (Timer/Counter0  и  Timer/Counter2)  и  один  16-битный 
(Timer/Counter1).  

Для  регулирования  частоты  входного  сигнала  все  таймеры  снабжаются 

предделителями  (Prescaler).  Таймер/счетчик 0 и  таймер/счетчик  1  имеют  общий 
предделитель,  обеспечивающий  изменение  частоты  на  входе  каждого  счетчика  в 
диапазоне от 1/8 до 1/1024 входной тактовой частоты СК (Clock). 

Тактовый сигнал таймера/счетчика 2 по умолчанию равен частоте синхронизации 

СK.  Программно  его  можно  подключить  к  отдельному  тактовому  генератору.  Для  этого  к 
определенным  выводам  микроконтроллера (TOSC1  и TOSC2) подключается  кристалл 
резонатора.  Генератор  оптимизирован  на  частоту  кристалла 32.768 кГц.  Это  позволяет 
использовать таймер/счетчик 2 в качестве часов реального времени RTC (Real Time Clock).  

12.1. Простейший 8-битный счетчик 

8-разрядный 

таймер/счетчик 0 (Timer/Counter0) 

тактируется 

сигналом 

синхронизации процессорного ядра (СК) или от встроенного предделителя (Preskaller), или 
от внешнего контакта ТО (рис. 12.1).  

   

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

Таймер  счетчик  предназначен  для  выполнения  простейших  операций:  его 

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

Для управления счетчиком используются (рис. 12.2): 

º 

регистр управления TCCR0 (Timer/Counter0 Control Register ),  

º 

регистр данных TCNT0 (Timer/Counter0), 

º 

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

º 

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

º 

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

Если  таймер/счетчик  осуществляет  счет  внешних  импульсов,  то  последние 

синхронизируются сигналом синхронизации процессорного ядра.  

 

74 

  Биты 7  6  5  4  3  2 1 0 

TCCR0 $33 ($53) 

- CSO2 

CSO1 CSO0 

TCNT0 $34 ($54)  MSB- 

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.2. Регистры, участвующие в управлении таймером/счетчиком 0  

Регистр TCCR0 (Timer/Counter 0 Control Register)  управляет  тактовой  частотой 

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

º 

Биты 2..0 - CS02, CS01, CS00 (Clock Select0, Bit 2,1 and 0) – задают 
коэффициент  деления  предделителя  таймер/счетчика 0 и  тип  внешнего 
сигнала (табл. 12.1). 

Таблица 12.1.  

Коэффициенты деления предделителя таймера/счетчика 0 

CS02 CS01 CS00 

Описание 

0 0 0 

Остановка таймера 

0 0 1 CK 

1 0 

CK 

1 CK 

64 

1 0 0 

CK 

256 

1 0 1 CK 

1024 

1 0 

Внешний контакт T0, задний фронт 

Внешний контакт T0, передний фронт 

Timer/Counter0 является суммирующим счетчиком, доступным для чтения и записи. 

Регистр TCNT0 хранит содержимое счетчика. 

Регистр  - TIMSK (Timer/Counter Interrupt Mask Register) является регистром маски 

прерываний. 

º 

Бит 0 - TOIE0 (Timer/Counter0 Overflow Interrupt Enable) – разрешение 
прерывания  при  переполнении  счетчика.  Когда  бит TOIE0 установлен,  а 
также установлен бит I в регистре SREG (Status Register), то прерывание при 
переполнении Timer/Counter0 разрешается.  Соответствующий  вектор 
прерывания TIMER0 OVF имеет  адрес $012.  Прерывание  произойдет  при 
установке бита TOV0 в регистре TIFR (Timer/Counter Interrupt Flag Register). 

Регистр– TIFR (Timer/Counter Interrupt Flag Register) является  регистром  флагов 

прерывания. 

º 

Бит 0 - TOV0 (Timer/Counter0 Overflow Flag) – флаг  переполнения 
таймера/счетчика 0. Бит 

устанавливается 

при 

переполнении 

таймера/счетчика 0 и  сбрасывается  аппаратно  при  выполнении 
соответствующего  прерывания ($012)  или  программно  при  записи 0. 
Прерывание  происходит,  если  бит I в  регистре SREG установлен,  а  также 

 

 

 

 

 

 

 

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