1 / 188

Семейства микроконтроллеров AVR Стандартные семейства:

Семейства микроконтроллеров AVR Стандартные семейства:. tinyAVR Флеш-память 8 Кб, SRAM 512 б, EEPROM 512 б Число линий В/В 6-18 (общее количество выводов 8-32) Ограниченный набор периферийных устройств megaAVR Флеш-память 256 Кб, SRAM 8 Кб, EEPROM 4 Кб

Download Presentation

Семейства микроконтроллеров AVR Стандартные семейства:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Семейства микроконтроллеров AVRСтандартные семейства: tinyAVR Флеш-память 8 Кб, SRAM 512 б, EEPROM 512 б Число линий В/В 6-18 (общее количество выводов 8-32) Ограниченный набор периферийных устройств megaAVR Флеш-память 256 Кб, SRAM 8 Кб, EEPROM 4 Кб Число линий В/В 23-86 (общее количество выводов 28-100) Аппаратный умножитель Расширенная система команд и периферийных устройств XMEGA AVR Флеш-память 384 Кб, SRAM 32 Кб, EEPROM 4 Кб 4-ех канальный DMA-контроллер Инновационная система обработки событий Примечание: здесь приведены максимальные значения объёмов памяти На основе стандартных семейств выпускаются микроконтроллеры адаптированные под конкретные приложения: со встроенными интерфейсами USB, CAN, контроллером LCD; со встроенным радио приёмо-передатчиком – серии ATAхxxx, ATAMxxx; для управления электродвигателями – серия AT90PWMxxxx; для автомобильной электроники; для осветительной техники.

  2. Сравнительные характеристики памяти

  3. Микроконтроллеры AVR Общая структурная схема

  4. Диаграмма зависимости тока потребления от напряжения питания и тактовой частоты

  5. Предельные характеристики • Диапазон рабочих температур от -40°C до +105°C • Диапазон температур хранения от -65°C до +150°C • Напряжение на любом выводе относительно земли от -1,0 В до +7,0 В • Максимальное рабочее напряжение 6,6 В Потребление по постоянному току 300 мА

  6. Адресное пространство статической памяти данных (SRAM)

  7. Способы тактирования МК AVR с использованием: а — кварцевого резонатора; б — внешнего генератора; в — RC-цепочки

  8. Установка конфигурационных ячеек CKSEL в зависимости от режимов тактирования

  9. Периферийные устройства • Порты ввода-вывода • Таймеры-счетчики • Аналоговый компаратор • Аналого-цифровой преобразователь • Последовательные порты • UART • Интерфейс SPI • Интерфейс TWI (I2С) • Универсальный последовательный интерфейс USI

  10. Порты ввода вывода Порты ввода/вывода позволяют микроконтроллеру обмениваться информацией с внешним миром. Посредством данного модуля микроконтроллер может как выдавать информацию на различные внешние устройства (светодиоды, семисегментные индикаторы, пьезоизлучатели, реле ….), так и принимать ее от различных источников (кнопки, ИК-приемники, датчики …). Регистр направления данных

  11. Функциональная схема работы линии порта X PORTx- регистр данных порта; PINx – диапазон адресов для чтения входа

  12. Аналоговый компаратор ANA Управляющий регистр –AnalogComparatorControlandStatusRegister– ACSR. Биты управления: Бит 3 – ACIE (AnalogComparatorInterruptEnable) – бит разрешения прерывания аналогового компаратора 1 – разрешено, 0 – запрещено.Биты 1,0 – ACIS1, ACIS0 (AnalogComparatorInterruptModeSelect) – состояние данных битов определяет событие, по которому формируется прерывание:ACIS1=0, ACIS0=0 – прерывание при изменении выходного напряжения компаратора;ACIS1=0, ACIS0=1 – не используется;ACIS1=1, ACIS0=0 – прерывание по спадающему фронту;ACIS1=1, ACIS0=1 – прерывание по нарастающему фронту.Биты состояния:Бит 4 – ACI (AnalogComparatorInterruptFlag) – флаг устанавливается автоматически при возникновении события, обусловленного битами ACIS1, ACIS0. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или программно, записью в него лог. 1.

  13. Аналого–цифровой преобразователь (АЦП) ADC Управляющий регистр – ADC ControlandStatusRegister A – ADCSRA. Биты управления:Бит 3 – ADIE (ADC InterruptEnable) – бит разрешения прерывания аналого–цифрового преобразователя : 1 – разрешено, 0 – запрещено.Биты состояния:Бит 4 – ADIF (ADC InterruptFlag) – устанавливается автоматически при условии окончания цикла аналого–цифрового преобразования и обновлении содержимого регистра данных АЦП. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или программно, записью в него лог.1.

  14. Универсальный синхронный приемопередатчик USART Управляющий регистр – USART ControlandStatusRegister B – UCSRB Биты управления:Бит 7 – RXCIE: RX CompleteInterruptEnable– бит разрешения прерывания по завершении приема.): 1 – разрешено, 0 – запрещено.Бит 6 – TXCIE: TX CompleteInterruptEnable– бит разрешения прерывания по завершению передачи. Если данный бит установлен в 1, то при установке флага ТХС регистра UCSRA генерируется прерывание «передача завершена».Бит 5 – UDRIE: USART DataRegisterEmptyInterruptEnable– бит разрешения прерывания при очистке регистра данных UART. Если данный бит установлен в 1, то при установке флага UDRE регистра UCSRA генерируется прерывание «регистр данных пуст».Биты состояния:Биты состояния прерываний модуля USART собраны в один флаговый регистр UCSRA – USART ControlandStatusRegister A

  15. Биты состояния прерываний модуля USART собраны в один флаговый регистр UCSRA – USART ControlandStatusRegister A Бит 7 – RXC: USART ReceiveComplete – флаг устанавливается в 1 при наличии непрочитанных данных в буфере приемника (регистр данных UDR). Сбрасывается флаг аппаратно после опустошения буфера.Бит 6 – TXC: USART TransmitComplete – флаг устанавливается в 1 после передачи всех битов посылки из сдвигового регистра передатчика при условии, что в регистр данных UDR не было загружено новое значение. Сбрасывается автоматически при переходе по соответствующему вектору прерывания или записью в него лог. 1.Бит 5 – UDRE: USART DataRegisterEmpty – флаг устанавливается в 1 при наличии непрочитанных данных в буфере приемника (регистр данных UDR). Сбрасывается флаг аппаратно после опустошения буфера.

  16. Последовательный интерфейс SPI Управляющий регистр – SPI ControlRegister– SPCR Биты управления:Бит 7 – SPIE: SPI InterruptEnable– бит разрешения прерывания по окончании передачи по SPI: 1– разрешено, 0 – запрещено.Биты состояния:Флаг состояния прерывания от SPI находится в регистре – SPI StatusRegister– SPSR

  17. Флаг состояния прерывания от SPI находится в регистре – SPI StatusRegister – SPSR Bit 7 – SPIF: SPI InterruptFlag – флаг устанавливается в 1 по окончании передачи очередного байта. Также флаг SPIF устанавливается в 1 при переводе микроконтроллера из режима Master в режим Slave посредством вывода SS. Флаг сбрасывается аппаратно либо при старте подпрограммы обработки прерывания, либо после чтения регистра состояния SPI с последующим обращением к регистру данных SPI (SPDR)

  18. Последовательный интерфейс TWI Управляющий регистр – TWI ControlRegister– TWCR Биты управления:Бит 0 – TWIE: TWI InterruptEnable – бит разрешения прерывания от модуля TWI: 1 – прерывание разрешено, 0 – запрещено.Биты состояния:Бит 7 – TWINT: TWI InterruptFlag – флаг прерывания от модуля TWI. Устанавливается аппаратно после выполнения очередной операции, когда модуль ожидает отклика со стороны программы. Сброс флага может быть осуществлен только записью в него лог. 1

  19. EEPROM Управляющий регистр –The EEPROM ControlRegister– EECR Биты управления:Бит 3 – EERIE: EEPROM ReadyInterruptEnable – бит управления генерацией прерывания, возникающего при завершении цикла программирования EEPROM: 1 – прерывание разрешено, 0 – запрещено.

  20. Прерывания, использующиеся при самопрограммировании Управляющий регистр – StoreProgramMemoryControlRegister – SPMCR Биты управления:Бит 7 – SPMIE: SPM InterruptEnable– бит разрешения прерывания «Готовность SPM»:1 – разрешено, 0 – запрещено. Прерывание генерируется все время, пока бит SPMEN регистра сброшен в 0.

  21. Работа с портами ввода-вывода

  22. Программирование AVR в AVR Studio (Интегрированная отладочная среда AVR Studio фирмы Atmel – IDE (Integrated Development Environment)) Первым делом подключаем файл описаний для микроконтроллера (ATmega8 – m8def.inc). • .include "m8def.inc“Далее добавляем таблицу векторов прерываний, которую можно скопировать из официальной технической документации на контроллер. Никакие прерывания, кроме основного RESET нам не потребуются, поэтому их закомментируем, а вместо них ставим пустую команду «nop»: • rjmp RESET; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset - эта команда выполнится сразу после подачи питания, то есть произойдет переход на метку RESET, по которой и расположим основную программуnop ; rjmp INT0; External Interrupt Request 0nop ; rjmprjmp INT1; External Interrupt Request 1nop ; rjmp TIMER2_COMP; Timer/Counter2 Compare Matchnop ; rjmp TIMER2_OVF; Timer/Counter2 Overflownop ; rjmp TIMER1_CAPT; Timer/Counter1 Capture Eventnop ; rjmp TIMER1_COMPA; Timer/Counter1 Compare Match Anop ; rjmp TIMER1_COMPB; Timer/Counter1 Compare Match Bnop ; rjmp TIMER1_OVF; Timer/Counter1 Overflownop ; rjmp TIMER0_OVF; Timer/Counter0 Overflownop ; rjmp SPI_STC; Serial Transfer Completenop ; rjmp USART_RXC; USART, Rx Completenop ; rjmp USART_UDRE; USART Data Register Emptynop ; rjmp USART_TXC; USART, Tx Completenop ; rjmp ADC; ADC Conversion Completenop ; rjmp EE_RDY; EEPROM Readynop ; rjmp ANA_COMP; Analog Comparatornop ; rjmp TWI; Two-wire Serial Interfacenop ; rjmp SPM_RDY; Store Program Memory Ready

  23. Есть и более короткий способ оформления таблицы векторов прерываний (он актуален для старших Mega, где число прерываний может достигать нескольких десятков, а из-за четырехбайтового формата команды jmp заменить ее на reti просто так не получается). Способ основан на использовании директивы org, которая устанавливает абсолютный адрес в памяти программ. В inc-файлах есть специальные определения констант для адресов прерываний, например (из файла 8515def.inc):.equ INT0addr=$001; External Interrupt0 Vector Address. . . . . . . . . . ..equURXCaddr=$009; UART Receive Complete Interrupt Vector Address.equUDREaddr=$00a; UART Data Register Empty Interrupt Vector Address.equUTXCaddr=$00b; UART Transmit Complete Interrupt Vector Address. . . . . . . . . . .Тогда, если вам, к примеру, никакие иные прерывания не требуются, кроме прерываний URXC и UDRE для UART, то начало программы может быть таким, как в листинге на слайде.

  24. ;Установка векторов прерываний .org 0 ;начало программы после сбросаrjmp RESET.orgUDREaddr ;адрес прерывания UDRE rjmpTransUART.orgURXCaddr ;адрес прерывания URXC rjmpReceiveUART.org $0D ;только для 8515 Classic. . . . . . . . . . .[программа]. . . . . . . . . . .

  25. Программирование AVR в AVR Studio (Интегрированная отладочная среда AVR Studio фирмы Atmel).Продолжение. • Первым делом, в основном теле программы необходимо инициализировать используемые порты: • RESET:; метка на которую мы адресовали программный счетчик в таблице прерыванийser r16 ; заносим в r16 значение 11111111out DDRC, r16 ; порт С - в режим выходаclr r16; очищаем r16out DDRB, r16; порт B – в режим входа • Далее будет идти блок ожидания нажатия кнопки и включения диода: • wait_on: ; метка ожидания включенияsbis PINB,0 ;пропускаем следующую строчку, если нажата кнопкаrjmpwait_on ;на метку ожидания включенияsbi PORTC,0 ;установить нулевой бит порта С , то есть зажечь светодиод

  26. Программирование AVR в AVR Studio • После того как нажатие кнопки прошло и светодиод загорелся необходимо ожидать повторного нажатия. • wait_off: ; метка ожидания выключенияsbis PINB,0 ;пропускаем следующую строчку, если ;нажата кнопкаrjmpwait_off ;на метку ожидания выключенияcbi PORTC,0 ;сбросить нулевой бит порта С – то есть ;погасить светодиод • Так как мы условились, что включение и выключение светодиода будем осуществлять по нажатию кнопки, то необходимо ввести временную задержку после каждой операции. Микроконтроллер выполняет около 1 млн. операций в секунду (по умолчанию в свойствах микроконтроллера в Proteus тактовая частота = 1 МГц). И пока кнопка будет нажата, даже очень короткое время, допустим 0,1 секунду он успеет выполнить 100 000 операций, то есть светодиод будет очень быстро моргать и не известно, в каком состоянии остановится. Введем задержку на 1 секунду. При тактовой частоте в 1 МГц, за 1 секунду микроконтроллер выполнит 1 млн. операций. Пусть микроконтроллер после включения досчитает до 1 млн. и только потом ожидает следующего нажатия. Максимальное число, которое может поместиться в восьмибитном регистре – 256. Для того, чтобы микроконтроллер досчитал до 1 млн. ему понадобится 3 регистра: 256*256*16 = 1 048 256. Получится не 1 млн., а чуть больше, что в итоге даст задержку не на 1 секунду, а на 1,048 с. Оформим задержку подпрограммой delay:

  27. delay:clr r16; очищаем все регистры, в которых будем производить подсчет времениclr r17clr r18d1: ;метка d1inc r16;прибавляем единицу к r16breq d2; если регистр r16 переполнился, то переходим на метку d2rjmp d1; иначе на метку d1d2: ;метка d2inc r17;прибавляем единицу к r17breq d3; если регистр r17 переполнился, то переходим на метку d3rjmpd2; иначе на метку d2d3: ;метка d3inc r18;прибавляем единицу к r18cpi r18,16; сравниваем r18 с числом 16, если равноbreq d4; то на метку d4rjmpd3; иначе на метку d3d4: ;метка d4ret ;выход из подпрограммы

  28. Так как у нас в каждой метке d1, d2 выполняется по 3 операции, а в метке d3 – 4 операции, то общее время подпрограммы delay примерно в 4 раза больше необходимого. Поэтому будем сравнивать регистр r18 не с числом 16 а с числом 4. Тогда метка d3 примет вид: • d3: ;метка d3inc r18;прибавляем единицу к r18cpi r18,4; сравниваем r18 с числом 4, если равноbreq d4; то на метку d4rjmp d1; иначе на метку d1

  29. Результирующая программа .include "m8def.inc" ;подключаем файл описаний для микроконтроллера ATmega8 • ;Таблица векторов прерыванийrjmp RESET; ExternalPin, Power-onReset, Brown-outReset, andWatchdogResetnop ; rjmp INT0; ExternalInterruptRequest 0nop ; rjmprjmp INT1; ExternalInterruptRequest 1nop ; rjmp TIMER2_COMP; Timer/Counter2 CompareMatchnop ; rjmp TIMER2_OVF; Timer/Counter2 Overflownop ; rjmp TIMER1_CAPT; Timer/Counter1 CaptureEventnop ; rjmp TIMER1_COMPA; Timer/Counter1 CompareMatch Anop ; rjmp TIMER1_COMPB; Timer/Counter1 CompareMatch Bnop ; rjmp TIMER1_OVF; Timer/Counter1 Overflownop ; rjmp TIMER0_OVF; Timer/Counter0 Overflownop ; rjmp SPI_STC; SerialTransferCompletenop ; rjmp USART_RXC; USART, RxCompletenop ; rjmp USART_UDRE; USART DataRegisterEmptynop ; rjmp USART_TXC; USART, TxCompletenop ; rjmp ADC; ADC ConversionCompletenop ; rjmp EE_RDY; EEPROM Readynop ; rjmp ANA_COMP; AnalogComparatornop ; rjmp TWI; Two-wireSerialInterfacenop ; rjmp SPM_RDY; StoreProgramMemoryReady

  30. ;Основное тело программы RESET:; метка на которую мы адресовали программный счетчик в таблице прерываний;Инициализация портовser r16 ; заносим в r16 значение 11111111out DDRC, r16 ; порт С - в режим выходаclr r16; очищаем r16out DDRB, r16; порт B - в режим входа;Ожидание включенияwait_on: ; метка ожидания включенияsbis PINB,0 ;пропускаем следующую строчку если нажата кнопкаrjmpwait_on ;на метку ожидания включенияsbi PORTC,0 ;установить нулевой бит порта С - то есть зажечь светодиод; Вызываем задержкуrcalldelaywait_off: ; метка ожидания выключенияsbis PINB,0 ;пропускаем следующую строчку если нажата кнопкаrjmpwait_off ;на метку ожидания выключенияcbi PORTC,0 ;сбросить нулевой бит порта С - то есть погасить светодиод

  31. ; Вызываем задержкуrcalldelayrjmpwait_on ;на метку ожидания включения; Подпрограмма задержкиdelay:clr r16; очищаем все регистры, в которых будем производить подсчет времениclr r17clr r18d1: ;метка d1inc r16;прибавляем единицу к r16breq d2; если регистр r16 переполнился, то переходим на метку d2rjmp d1; иначе на метку d1d2: ;метка d2inc r17;прибавляем единицу к r17breq d3; если регистр r17 переполнился, то переходим на метку d3rjmpd2; иначе на метку d2d3: ;метка d3inc r18;прибавляем единицу к r18cpi r18,4; сравниваем r18 с числом 4, если равноbreq d4; то на метку d4rjmpd3; иначе на метку d3d4: ;метка d4ret ;выход из подпрограммы задержки

  32. РЕАЛИЗАЦИЯ И ПРОВЕРКА В PROTEUS VSM (ФАЙЛ 11.asm) Простое нажатие – отпускание кнопки с задержкой и выводом на светодиод (верхняя кнопка)

  33. Рабочая схема на Proteus

  34. .device AT90S2313 • .include "2313def.inc" • .def temp=r19 • .def temp1=r20 • rjmp RESET; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset • nop; rjmp INT0addr=$001 ;External Interrupt0 Vector Address • nop; rjmp INT1addr=$002 ;External Interrupt1 Vector Address • nop; rjmp ICP1addr=$003 ;Input Capture1 Interrupt Vector Address • nop; rjmp OC1addr =$004 ;Output Compare1 Interrupt Vector Address • nop; rjmp OVF1addr=$005 ;Overflow1 Interrupt Vector Address • nop; rjmp OVF0addr=$006 ;Overflow0 Interrupt Vector Address • nop; rjmpURXCaddr=$007 ;UART Receive Complete Interrupt Vector Address • nop; rjmpUDREaddr=$008 ;UART Data Register Empty Interrupt Vector Address • nop; rjmpUTXCaddr=$009 ;UART Transmit Complete Interrupt Vector Address • nop; rjmpACIaddr =$00a ;Analog Comparator Interrupt Vector Address

  35. RESET: • ldi r21,RAMEND • out SPL,r21 • ser r16 • out DDRB, r16;11111111 in DDRB navihod • out PORTB,r16 • clr r16 • out DDRD, r16;00000000 in DDRD navhod • ser r16 • out PORTD,r16;11111111 in PORTD podkluchenieresistorov • wait_on: • sbis PIND,0;propustit esli bit0=0 navhodeporta (nagataknopka --=0) • rjmpwait_on • ldi temp,0b00000001 • out PORTB,temp;ochistit PORTB bit0=0 (zagechsvetodiod) • rcall delay; perehodnazadergqu • wait_off: • sbic PIND,0; propustitesli bit0=1 navhodeporta (otpuschenaknopka --=1) • rjmpwait_off; cikl • cbi PORTB,0; ustanovit PORTB bit0=1 (pogasitsvetodiod) • rcall delay; perehodnazadergqu • rjmpwait_on

  36. delay: • clr r16; • clr r17 • clr r18 • d1: • inc r16 • breq d2 • rjmp d1 • d2: • inc r17 • breq d3 • rjmp d2 • d3: • inc r18 • cpi r18,4 • breq d4 • rjmp d3 • d4: • ret

  37. РЕАЛИЗАЦИЯ И ПРОВЕРКА В PROTEUS VSM (ФАЙЛ 12.asm) • Простое нажатие кнопки + подсчет нажатий и вывод значений счетчика на светодиоды • Задержка реализована программно без использования таймера микроконтроллера

More Related