Четверг, 28.03.2024, 13:02
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Реклама Google
Форма входа
Категории раздела
Это нужно знать! [17]
Изучаем AVR [30]
Программаторы [12]
Необходимое ПО [8]
Готовые устройства [73]
Справочная [38]
Инструмент [0]
Технология [8]
Литература [0]
Arduino скетчи [18]
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Микроконтроллеры - это просто!
Главная » Статьи » Изучаем AVR

Настройка прерываний
У всех периферийных устройств микроконтроллеров есть регистры управления. В данных регистрах содержатся флаговые биты (биты состояния) и управляющие биты. Флаговые биты устанавливаются в единицу при возникновении прерывания, то есть являются своеобразным индикатором о том, что прерывание произошло. Данные биты устанавливаются аппаратно и по их установке происходит переход по соответствующему вектору прерывания. Управляющие же биты задают условия возникновения прерывания и устанавливаются либо сбрасываются программно. Рассмотрим регистры управления и настройки прерываний некоторых периферийных устройств микроконтроллеров 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.
Категория: Изучаем AVR | Добавил: Alex (29.12.2013)
Просмотров: 4382 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024