У всех периферийных устройств микроконтроллеров есть регистры управления. В данных регистрах содержатся флаговые биты (биты состояния) и управляющие биты. Флаговые биты устанавливаются в единицу при возникновении прерывания, то есть являются своеобразным индикатором о том, что прерывание произошло. Данные биты устанавливаются аппаратно и по их установке происходит переход по соответствующему вектору прерывания. Управляющие же биты задают условия возникновения прерывания и устанавливаются либо сбрасываются программно. Рассмотрим регистры управления и настройки прерываний некоторых периферийных устройств микроконтроллеров Atmel AVR на примере ATmega8.
Глобальное управление
Перед рассмотрением прерываний отдельных периферийных модулей микроконтроллеров AVR необходимо вспомнить о статусном регистре SREG, а точнее о его флаге I. Данный флаг разрешает (если установлен в 1) либо запрещает (если сброшен в 0) все прерывания. По умолчанию, после подачи питания на микроконтроллер данный флаг сброшен, то есть все возможные прерывания запрещены. Поэтому, при необходимости использовать какие–либо прерывания данный флаг необходимо установить в единицу. Для управления данным флагом существуют специальные команды: sei – установить флаг I cli – сбросить флаг I
Аналоговый компаратор ANA_COMP Управляющий регистр – Analog Comparator Control and Status Register – ACSR.
Биты управления: Бит 3 – ACIE (Analog Comparator Interrupt Enable) – бит разрешения прерывания аналогового компаратора 1 – разрешено, 0 – запрещено.
Биты 1,0 – ACIS1, ACIS0 (Analog Comparator Interrupt Mode Select) – состояние данных битов определяет событие, по которому формируется прерывание: ACIS1=0, ACIS0=0 – прерывание при изменении выходного напряжения компаратора; ACIS1=0, ACIS0=1 – не используется; ACIS1=1, ACIS0=0 – прерывание по спадающему фронту; ACIS1=1, ACIS0=1 – прерывание по нарастающему фронту.
Биты состояния: Бит 4 – ACI (Analog Comparator Interrupt Flag) – флаг устанавливается автоматически при возникновении события, обусловленного битами ACIS1, ACIS0. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или программно, записью в него лог. 1.
Аналого–цифровой преобразователь (АЦП) ADC Управляющий регистр – ADC Control and Status Register A – ADCSRA.
Биты управления: Бит 3 – ADIE (ADC Interrupt Enable) – бит разрешения прерывания аналого–цифрового преобразователя : 1 – разрешено, 0 – запрещено.
Биты состояния: Бит 4 – ADIF (ADC Interrupt Flag) – устанавливается автоматически при условии окончания цикла аналого–цифрового преобразования и обновлении содержимого регистра данных АЦП. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или программно, записью в него лог. 1.
Внешние прерывания INT0, INT1 Управляющий регистр – MCU Control Register – MCUCR
Биты управления: Биты 1, 0 – ISC01, ISC00 (Interrupt Sense Control 0 Bit 1 and Bit 0) – состояние данных битов определяет событие на выводе INT0, при котором формируется прерывание INT0: ISC01=0, ISC00=0 – уровень логического нуля; ISC01=0, ISC00=1 – любая смена логического состояния; ISC01=1, ISC00=0 – по спадающему фронту; ISC01=1, ISC00=1 – по нарастающему фронту.
Биты 3, 2 – ISC11, ISC10 (Interrupt Sense Control 1 Bit 1 and Bit 0) – состояние данных битов определяет уровень сигнала на выводе INT1, по которому формируется прерывание INT1: ISC11=0, ISC10=0 – уровень логического нуля; ISC11=0, ISC10=1 – любая смена логического состояния; ISC11=1, ISC10=0 – по спадающему фронту; ISC11=1, ISC10=1 – по нарастающему фронту.
Управляющий регистр – General Interrupt Control Register – GICR
Биты управления: Бит 7 – INT1: External Interrupt Request 1 Enable – бит разрешения прерывания INT1: 1 – разрешено, 0 – запрещено. Прерывание будет формироваться, даже если вывод INT1 настроен как выход.
Бит 6 – INT0: External Interrupt Request 0 Enable - бит разрешения прерывания INT0: 1 – разрешено, 0 – запрещено.. Прерывание будет формироваться, даже если вывод INT0 настроен как выход.
Флаговый регистр - General Interrupt Flag Register – GIFR
Биты состояния: Бит 7 – INTF1: External Interrupt Flag 1 – если в результате события на выводе INT1 сформировался запрос на внешнее прерывание, то этот бит устанавливается в 1. Флаг сбрасывается аппаратно при запуске подпрограммы обработки прерывания или программно, записью в него лог. 1. Флаг INTF1 сброшен постоянно, если генерация прерывания должна происходить по низкому уровню на выводе INT1.
Бит 6 – INTF0: External Interrupt Flag 0 – если в результате события на выводе INT0 сформировался запрос на внешнее прерывание, то этот бит устанавливается в 1. Флаг сбрасывается аппаратно при запуске подпрограммы обработки прерывания или программно, записью в него лог. 1. Флаг INTF0 сброшен постоянно, если генерация прерывания должна происходить по низкому уровню на выводе INT0.
Таймеры TIMER0, TIMER1 Управляющий регистр – Timer/Counter Interrupt Mask Register – TIMSK
Биты управления Бит 5 – TICIE1: Timer/Counter1, Input Capture Interrupt Enable – бит разрешения прерывания тамера Timer/Counter1 при захвате: 1 – разрешено, 0 – запрещено.
Бит 4 – OCIE1A: Timer/Counter1, Output Compare A Match Interrupt Enable – бит разрешения прерывания таймера Timer/Counter1 при совпадении с числом А в режиме сравнения: 1 – разрешено, 0 – запрещено.
Бит 3 – OCIE1B: Timer/Counter1, Output Compare B Match Interrupt Enable бит разрешения прерывания таймера Timer/Counter1 при совпадении с числом В в режиме сравнения: 1 – разрешено, 0 – запрещено.
Бит 2 – TOIE1: Timer/Counter1, Overflow Interrupt Enable – бит разрешения прерывания по переполнению таймера Timer/Counter1: 1 – разрешено, 0 – запрещено.
Бит 0 – TOIE0: Timer/Counter0 Overflow Interrupt Enable – бит разрешения прерывания по переполнению таймера Timer/Counter1: 1 – разрешено, 0 – запрещено.
Биты состояния: Биты состояния прерываний таймеров собраны в один флаговый регистр – Timer Interrupt Flag Register – TIFR
Бит 7 – OCF2: Output Compare Flag 2 – флаг прерывания таймера Timer/Counter2 по сравнению: 1 – прерывание произошло, 0 – не произошло. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или программно, записью в него лог. 1.
Бит 6 – TOV2: Timer/Counter2 Overflow Flag – флаг прерывания таймера Timer/Counter2 по переполнению: 1 – прерывание произошло, 0 – не произошло. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или программно, записью в него лог. 1. В режиме ШИМ флаг устанавливается, когда таймер достигает нулевого значения.
Бит 5 – ICF1: Timer/Counter1, Input Capture Flag – флаг прерывания таймера Timer/Counter1 по захвату: 1 – прерывание произошло, 0 – не произошло. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или программно, записью в него лог. 1.
Бит 4 – OCF1A: Timer/Counter1, Output Compare A Match Flag – флаг прерывания таймера Timer/Counter1 по сравнению с числом А: 1 – прерывание произошло, 0 – не произошло. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или программно, записью в него лог. 1.
Бит 3 – OCF1B: Timer/Counter1, Output Compare B Match Flag – флаг прерывания таймера Timer/Counter1 по сравнению с числом В: 1 – прерывание произошло, 0 – не произошло. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или программно, записью в него лог. 1.
Бит 2 – TOV1: Timer/Counter1, Overflow Flag – флаг прерывания таймера Timer/Counter1 по переполнению. Значения флага зависят от выбранного режима работы таймера. В нормальном режиме и режиме СТС флаг устанавливается при переполнении таймера. Значения флага в режимах ШИМ рассмотрим позже. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или программно, записью в него лог. 1. В режиме ШИМ флаг устанавливается, когда таймер достигает нулевого значения.
Универсальный синхронный приемопередатчик USART Управляющий регистр – USART Control and Status Register B – UCSRB
Биты управления: Бит 7 – RXCIE: RX Complete Interrupt Enable – бит разрешения прерывания по завершении приема.): 1 – разрешено, 0 – запрещено.
Бит 6 – TXCIE: TX Complete Interrupt Enable – бит разрешения прерывания по завершению передачи. Если данный бит установлен в 1, то при установке флага ТХС регистра UCSRA генерируется прерывание «передача завершена».
Бит 5 – UDRIE: USART Data Register Empty Interrupt Enable – бит разрешения прерывания при очистке регистра данных UART. Если данный бит установлен в 1, то при установке флага UDRE регистра UCSRA генерируется прерывание «регистр данных пуст».
Биты состояния: Биты состояния прерываний модуля USART собраны в один флаговый регистр UCSRA – USART Control and Status Register A
Бит 7 – RXC: USART Receive Complete – флаг устанавливается в 1 при наличии непрочитанных данных в буфере приемника (регистр данных UDR). Сбрасывается флаг аппаратно после опустошения буфера.
Бит 6 – TXC: USART Transmit Complete – флаг устанавливается в 1 после передачи всех битов посылки из сдвигового регистра передатчика при условии, что в регистр данных UDR не было загружено новое значение. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или записью в него лог. 1.
Бит 5 – UDRE: USART Data Register Empty – флаг устанавливается в 1 при наличии непрочитанных данных в буфере приемника (регистр данных UDR). Сбрасывается флаг аппаратно после опустошения буфера.
Последовательный интерфейс SPI Управляющий регистр – SPI Control Register – SPCR
Биты управления: Бит 7 – SPIE: SPI Interrupt Enable – бит разрешения прерывания по окончании передачи по SPI: 1– разрешено, 0 – запрещено.
Биты состояния: Флаг состояния прерывания от SPI находится в регистре – SPI Status Register – SPSR
Bit 7 – SPIF: SPI Interrupt Flag – флаг устанавливается в 1 по окончании передачи очередного байта. Также флаг SPIF устанавливается в 1 при переводе микроконтроллера из режима Master в режим Slave посредством вывода SS. Флаг сбрасывается аппаратно либо при старте подпрограммы обработки прерывания, либо после чтения регистра состояния SPI с последующим обращением к регистру данных SPI (SPDR)
Последовательный интерфейс TWI Управляющий регистр – TWI Control Register – TWCR
Биты управления: Бит 0 – TWIE: TWI Interrupt Enable – бит разрешения прерывания от модуля TWI: 1 – прерывание разрешено, 0 – запрещено.
Биты состояния: Бит 7 – TWINT: TWI Interrupt Flag – флаг прерывания от модуля TWI. Устанавливается аппаратно после выполнения очередной операции, когда модуль ожидает отклика со стороны программы. Сброс флага может быть осуществлен только записью в него лог. 1
EEPROM Управляющий регистр – The EEPROM Control Register – EECR
Биты управления: Бит 3 – EERIE: EEPROM Ready Interrupt Enable – бит управления генерацией прерывания, возникающего при завершении цикла программирования EEPROM: 1 – прерывание разрешено, 0 – запрещено.
Прерывания, использующиеся при самопрограммировании Управляющий регистр – Store Program Memory Control Register – SPMCR
Биты управления: Бит 7 – SPMIE: SPM Interrupt Enable – бит разрешения прерывания «Готовность SPM»:1 – разрешено, 0 – запрещено. Прерывание генерируется все время, пока бит SPMEN регистра сброшен в 0.
|