рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Дисциплина МИКРОКОНТРОЛЛЕРЫ Методические указания 1.2 Условное графическое обозначение УГО микроконтроллера AVR ATmega8515

Дисциплина МИКРОКОНТРОЛЛЕРЫ Методические указания 1.2 Условное графическое обозначение УГО микроконтроллера AVR ATmega8515 - раздел Философия, Федеральное Агентство По Образованию Федеральное Государственное Обр...

Федеральное агентство по образованию

Федеральное государственное образовательное учреждение СПО

«Нижегородский радиотехнический колледж»

 

Дисциплина «МИКРОКОНТРОЛЛЕРЫ»

 

 

Методические указания

По изучению дисциплины для студентов - заочников

 

Для специальностей: 210308 «Техническое обслуживание и ремонт радиоэлектронной техники (по отраслям)», 230103 «Автоматизированные системы обработки информации и управления (по отраслям)»

 

 

2009г.
Содержание

 

Введение
1. ОМЭВМ AVR семейства Mega
1.1. Технические характеристики микроконтроллера AVR ATmega8515
1.2 Условное графическое обозначение (УГО) микроконтроллера AVR ATmega8515  
1.3. Структура микроконтроллера АTmega8515
1.4. Организация памяти
1.4.1. Карта памяти
1.4.2. Память программ (Flash – ПЗУ)
1.4.3. Память данных
1.4.4. Оперативная память (ОЗУ или RAM)
1.4.5. Энергонезависимая память данных (EEPROM)
1.5. Режимы адресации памяти данных
1.6. Порты ввода/вывода (I/O)
1.7. Стек. Указатель стека - Stack Pointer - SP
1.8. Тактирование. Режимы пониженного энергопотребления
1.8.1. Тактовый генератор
1.8.2. Сброс. Источники сброса
1.8.3. Режимы энергосбережения (Sleep Modes)
1.9. Прерывания (INTERRUPTS)
1.10. Таймеры/счетчики (TIMER/COUNTERS)
1.10.1. Таймер/счетчик T/C0
1.10.2. Таймер/счетчик 1 – T/C1
1.11. Сторожевой таймер (Watchdog Timer)
1.12. Универсальный синхронно-асинхронный приемопередатчик (USART)
1.14. Последовательный периферийный интерфейс SPI
1.14. Аналоговый компаратор
2. Система команд
3. Программирование МК AVR ATmega8515
3.1. Лабораторная работа № 1 «Изучение принципа работы программных средств разработки МПС»  
3.2. Практическая работа №1 «Изучение системы команд МК AVR ATmega8515»
3.3. Лабораторная работа № 2 «Изучение работы с портами ввода/вывода МК AVR»  
Литература
ПРИЛОЖЕНИЕ 1

Введение

В микропроцессорной технике выделился самостоятельный класс больших интегральных микросхем – микроконтроллеров (МК)– однокристальных микро-ЭВМ (ОМЭВМ), предназначенных для интеллектуализации оборудования различного назначения.

Архитектура ОМЭВМ позволяет снизить стоимость и аппаратные затраты за счет повышения уровня интеграции БИС.

ОМЭВМ представляют собой приборы, конструктивно выполненные в виде одной БИС и включающие в себя все устройства, необходимые для реализации цифровой системы управления минимальной конфигурации:

– процессор (ЦПУ),

– запоминающие устройства данных и программ (ОЗУ, EEPROM, Flash ПЗУ),

– внутренний генератор тактовых сигналов,

– порты ввода-вывода данных для связи с внешней средой (I/O Ports, USART, SPI),

– периферийные устройства, реализующие различные протоколы обмена (Interrupts),

– таймеры (Timer/Counters, WDT),

– преобразователи (A/D Converter).

Упрощенная структурная схема ОМЭВМ приведена на рис. 1.

Рис. 1. Упрощенная структурная схема ОМЭВМ

ОМЭВМ AVR семейства Mega

Технические характеристики микроконтроллера AVR ATmega8515

– Использована AVR расширенная RISC архитектура.

– Мощный набор из 130 команд, большинство которых выполняется за один машинный цикл.

– Емкость внутрисистемно программируемой Flash памяти 8 Кбайт (4 кСлова) 1000 циклов стирания/записи.

– SPI интерфейс внутрисистемного программирования.

– Емкость встроенной EEPROM 512байт.

– Встроенная RAM емкостью 512байт.

– 32 8-разрядных регистра общего назначения.

– 64 8-разрядных регистра ввода-вывода и спецфункций.

– Программируемые последовательные USART и SPI интерфейсы

– Диапазон напряжений питания от 2,7 В до 6,0 В.

– Диапазон тактовых частот от 0 до 8 МГц.

– Производительность до 6 MIPS при частоте 6 МГц

– Два таймера/счетчика 8 и 16 разрядные с отдельными предделителями, режимами захвата/ сравнения, ШИМ с разрядностью 8, 9 или 10 разрядов.

– Программируемый сторожевой таймер со встроенным генератором.

– Режимы энергосбережения Idle, Power Save и Power Down.

Условное графическое обозначение (УГО) микроконтроллера AVR ATmega8515

Структура микроконтроллера АTmega8515

По числу команд процессоры подразделяют на CISC (Complex Instruction Set Computer) и RISC. Термин CISC обозначает сложную систему команд, RISC –… Основой этого блока служит арифметико-логическое устройство (АЛУ). По… АЛУ подключено непосредственно ко всем регистрам общего назначения РОН (General Purpose Registers – GPR), объединенных…

Организация памяти

Реализация Гарвардской архитектуры в АTmega8515 разделяет не только память программ и данных, но и каждая из областей памяти данных (ОЗУ и EEPROM) расположены в своем адресном пространстве.

 

Карта памяти

Рис. 4. Карта памяти микроконтроллера АTmega8515 1.4.2. Память программ (Flash – ПЗУ) Память программ предназначена для хранения последовательности команд, управляющих функционированием микроконтроллера,…

Память данных

Память данных разделена на три части:

– регистровая память,

–оперативная память (ОЗУ – оперативное запоминающее устройство или RAM),

– энергонезависимая память (ЭСППЗУ или EEPROM).

 

Регистровая память (РОН и РВВ)

Регистровая память включает 32 регистра общего назначения (РОН или GPR), объединенных в файл, и служебные регистры ввода/вывода (РВВ). И те и другие расположены в адресном пространстве ОЗУ, но не являются его частью.

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

 

Файл регистров общего назначения

Структура 32 регистров общего назначения:

Рис. 5. Регистры общего назначения CPU микроконтроллеров AVR

Все регистровые команды обращаются непосредственно к регистрам в течение одного тактового цикла. Исключением являются пять логических и арифметических операций с константами (SBCI, SUBI, CPI и ANDI) и операция ORI между константой и содержимым регистра, и команда непосредственной загрузки константы LDI. Эти команды используют вторую половину регистров регистрового файла - R16..R31.

Самые общие команды SBC, SUB, CP, AND и OR и все прочие операции между двумя регистрами или с одним регистром используют для записи результата регистровый файл.

Как показано на Рис. 5, каждому регистру соответствует адрес памяти данных, отображающий их в первых 32 ячейках пользовательского пространства данных. Хотя они не используются как физические ячейки SRAM, такая организация памяти обеспечивает гибкое обращение к регистрам, поскольку X,Y и Z регистры могут быть использованы для индексации любого регистра в файле.

 

Регистр X, регистр Y и регистр Z

Шесть регистров (с R26 по R31) регистрового файла, кроме обычной для прочих регистров функций, выполняют функцию 16-разрядных регистров указателей адреса при косвенной адресации SRAM. Эти три регистра косвенной адресации определяются как регистры X,Y и Z.

Рис. 6. Формат регистров X, Y и Z

В различных режимах адресации эти регистры выполняют функции фиксированного смещения, автоматического инкремента и декремента (см. описания команд).

 

Регистры ввода-вывода и спецфункций

Регистры ввода-вывода можно разделить на 2 группы – служебные регистры МК и регистры, относящиеся к конкретным периферийным устройствам.

К регистрам ввода-вывода можно напрямую обратиться двумя способами:

– как к пространству ввода-вывода (команды IN, OUT), в этом случае используются регистры, ввода-вывода, относящиеся к пространству ввода-вывода (адреса $00-$3F)

– как к регистрам (команды LDI, MOV,..), в этом случае адреса регистров необходимо увеличить на $20 (в таблице 1 указан в скобках), так как в начальной области памяти данных располагается 32 регистра общего назначения (3210=2016).

 

Таблица 1. Пространство I/O микроконтроллера ATmega8515

Адрес I/O (адрес SRAM) Обозначение Функция
$3F ($5F) SREG Регистр статуса (Status REGister)
$3E ($5E) SPH Верхний байт указателя стека (Stack Pointer High)
$3D ($5D) SPL Нижний байт указателя стека (Stack Pointer Low)
$3C ($5C)   Не используется
$3B $5B) GICR Общий регистр управления прерываниями
$3A ($5A) GIFR Общий регистр флагов прерываний
$39 ($59) TIMSK Регистр масок прерываний по таймерам/счетчикам (Timer/Interrupt MaSK register)
$38 ($58) TIFR Регистр флагов прерывания по таймерам/счетчикам (Timer/ Counter Interrupt Flag register)
$37 ($57) SPMCR Регистр управления памятью программ
$36 ($56) EMCUCR Дополнительный регистр управления МК
$35 ($55) MCUCR Регистр управления МК
$34 ($54) MCUCSR Регистр управления и состояния МК
$33 ($53) TCCR0 Регистр управления таймером/счетчиком 0 (Timer/Counter0 Control Register)
$32 ($52) TCNT0 Таймер/счетчик0 (Timer/Counter0 (8-bit))
$31 ($51) OCR0 Регистр сравнения выхода таймера/счетчика 0 (Timer/Counter0 Output Compare Register)
$30 ($50) SFIOR Регистр специальных функций
$2F ($4F) TCCR1A Управляющий регистр A таймера/счетчика 1 (Timer/Counter1 Control Register A)
$2E ($4E) TCCR1B Управляющий регистр B таймера/счетчика 1 (Timer/Counter1 Control Register A)
$2D ($4D) TCNT1H Старший байт таймера/счетчика 1 (Timer/Counter1 High Byte)
$2C ($4C) TCNT1L Младший байт таймера/счетчика 1 (Timer/Counter1 Low Byte)
$2B ($4B) OCR1AH Старший байт регистра A сравнения выхода таймера/счетчика 1 (Timer/Counter1 Output Compare Register A High Byte)
$2A ($4A) OCR1AL Младший байт регистра A сравнения выхода таймера/ счетчика 1 (Timer/Counter1 Output Compare Register A Low Byte)
$29 ($49) OCR1BH Старший байт регистра B сравнения выхода таймера/счетчика 1 (Timer/Counter1 Output Compare Register B High Byte)
$28 ($48) OCR1BL Младший байт регистра B сравнения выхода таймера/счетчика 1 (Timer/Counter1 Output Compare Register B Low Byte)
$27 ($47)   Не используется
$26 ($46)   Не используется
$25 ($45) ICR1H Старший байт регистра захвата таймера/счетчика 1 (Timer/Counter1 Input Capture Register High Byte)
$24 ($44) ICR1L Младший байт регистра захвата таймера/счетчика 1 (Timer/Counter1 Input Capture Register Low Byte)
$21 ($41) WDTCR Регистр управления сторожевым таймером (Watchdog Timer Control Register)
$20 ($40) UBRRH, UCSRC Регистр скорости передачи данных USART (мл.байт), Регистр управления и состояния USART
$1F ($3F) EEARH Старший байт регистра адреса EEPROM (EEPROM Address Register High)
$1E ($3E) EEARL Младший байт регистра адреса EEPROM (EERPOM Address Register Low)
$1D ($3D) EEDR Регистр данных EEPROM (EEPROM Data Register)
$1C ($3C) EECR Регистр управления EEPROM (EEPROM Control Register)
$1B ($3B) PORTA Регистр данных порта A (Data Register, Port A)
$1A ($3A) DDRA Регистр направления данных порта A (Data Direction Register, Port A)
$19 ($39) PINA Выводы входов порта A (Input Pins, Port A)
$18 ($38) PORTB Регистр данных порта B (Data Register, Port B)
$17 ($37) DDRB Регистр направления данных порта B (Data Direction Register, Port B)
$16 ($36) PINB Выводы входов порта B (Input Pins, Port B)
$15 ($35) PORTC Регистр данных порта C (Data Register, Port C)
$12 ($32) PORTD Регистр данных порта D (Data Register, Port D)
$11 ($31) DDRD Регистр направления данных порта D (Data Direction Register, Port D)
$10 ($30) PIND Выводы входов порта D (Input Pins, Port D)
$0F ($2F) SPDR Регистр данных SPI I/O (SPI I/O Data Register)
$0E ($2E) SPSR Регистр статуса SPI (SPI Status Register)
$0D ($2D) SPCR Регистр управления SPI (SPI Control Register)
$0C ($2C) UDR Регистр данных USART I/O (UART I/O Data Register)
$0B ($2B) USRA Регистр статуса USART (USART Status Register)
$0A ($2A) UCRB Регистр управления USART (USART Control Register)
$09 ($29) UBRRL Регистр управления скоростью USART (USART Baud Rate Register)
$08 ($28) ACSR Регистр статуса и управления аналогового компаратора (Analog Comparator Control and Status Register)
$07 ($27) PORTE Регистр данных порта E (Data Register, Port E)
$06 ($26) DDRE Регистр направления данных порта E (Data Direction Register, Port E)
$05 ($25) PINE Выводы входов порта E (Input Pins, Port E)
$04 ($24) OSCCAL Регистр калибровки тактового генератора
$03 ($23)   Не используется
$02 ($22)   Не используется
$01 ($21)   Не используется
$00 ($20)   Не используется

Регистр статуса – SREG

Регистр статуса – SREG – размещен в пространстве I/O по адресу $3F ($5F) и его биты определяются как:

Таблица 2. Формат регистра флагов микроконтроллера ATmega8515

Биты

 

$3F ($5F)
I T H S V N Z C

 

REG

Bit 7 – I: Global Interrupt Enable – Разрешение глобального прерывания.
Бит разрешения глобального прерывания для разрешения прерывания должен быть установлен в состояние 1. Управление разрешением конкретного прерывания выполняется регистрами маски прерывания GIMSK и TIMSK. Если бит глобального прерывания очищен (в состоянии 0), то ни одно из разрешений конкретных прерываний, установленных в регистрах GIMSK и TIMSK, не действует. Бит I аппаратно очищается после прерывания и устанавливается для последующего разрешения глобального прерывания командой RETI.

Bit 6 – T: Bit Copy Storage – Бит сохранения копии. Команды копирования бита BLD (Bit LoaD) и BST (Bit STore) используют бит T как бит источник и бит назначения при операциях с битами. Командой BST бит регистра регистрового файла копируется в бит T, командой BLD бит T копируется в регистр регистрового файла.

Bit 5 – H: Half Carry Flag – Флаг половинного переноса. Флаг полупереноса указывает на полуперенос в ряде арифметических операций. Устанавливается в «1», если произошел перенос из младшей половины байта в старшую половину (или заем из старшей тетрады при вычитании).

Bit 4 – S: Sign Bit, S = NÅV – Бит знака. Бит S всегда находится в состоянии, определяемом логическим «исключающим ИЛИ» (exclusive OR) между флагом отрицательного значения N и флага переполнения V.

Bit 3 – V: Two’s Complement Overflow Flag – Дополнение до двух флага переполнения. V = CÅCI. V определяемом логическим «исключающим ИЛИ» над флагом переноса С (перенос из седьмого разряда результата в восьмой) и флагом CI (перенос из шестого разряда результата в седьмой).

Bit 2 – N: Negative Flag – Флаг отрицательного значения. Флаг отрицательного значения N указывает на отрицательный результат ряда арифметических и логических операций. Определяется по старшему 7 знаковому разряду результата операции.

Bit 1 – Z: Zero Flag – Флаг нулевого значения. Флаг нулевого значения Z=1 указывает на нулевой результат ряда арифметических и логических операций.

Bit 0 – C: Carry Flag – Флаг переноса. Флаг переноса C указывает на перенос в арифметических и логических операциях. «С» указывает на перенос из седьмого разряда результата в восьмой при сложении и заем в восьмом разряде при вычитании.

Пример формирования арифметических флагов по результату операции в АЛУ.

Необходимо сложить два числа 49h + 78h и выставить арифметические флаги.

1) Перед операцией сложения необходимо числа представить в двоичной системе счисления:

4916=0100 10012, 7816=0111 10002.

2) Сложить и выставить арифметические флаги:

При сложении двух положительных чисел в дополнительном коде, получен отрицательный результат (С1h), что говорит о переполнении разрядной сетки МК.

Hf=1, перенос из младшей в старшую тетраду байта при сложении;

Nf=1, флаг отрицательного результата определяется по старшему знаковому разряду результата;

Zf=0, полученный результат отличен от нуля;

Сf=0, нет основного переноса за границы байта при сложении;

Vf=1, V = CÅCI=0Å1=1 – переполение;

Sf=0, S = NÅV=1Å1=0, полученный результат положительный, но произошло переполнение разрядной сетки МК.

 

Оперативная память (ОЗУ или RAM)

Размер оперативной памяти может варьироваться у различных чипов от 64 Байт до 4 КБайт. Микроконтроллер ATmega8515 имеет объем внутреннего SRAM 512… Для микроконтроллера ATmega8515 возможна организация подключения внешнего… Для разрешения работы с внешним ОЗУ необходимо установить соответствующий разряд в регистр управления МК Rg MCUCR…

Энергонезависимая память данных (EEPROM)

Для долговременного хранения различной информации, которая может изменяться в процессе функционирования микроконтроллерной системы, используется EEPROM-память. Все AVR имеют блок энергонезависимой электрически перезаписываемой памяти данных EEPROM от 64 Байт до 4 КБайт. Микроконтроллер ATmega8515 имеет объем EEPROM 512 байт. Этот тип памяти, доступный программе микроконтроллера непосредственно в ходе ее выполнения, удобен для хранения промежуточных данных, различных констант, коэффициентов, серийных номеров, ключей и т.п. EEPROM может быть загружена извне как через SPI интерфейс, так и с помощью обычного программатора. Доступ к EEPROM осуществляется с помощью определенных регистров спецфункций.

 

Режимы адресации памяти данных

При обращении к памяти данных (SRAM, регистровому файлу и памяти I/O) AVR Enhanced RISC микроконтроллерами ATmega используются мощные и эффективные режимы адресации. В данном разделе описываются режимы адресации, поддерживаемые AVR архитектурой. На рисунках OP обозначает часть слова команды, соответствующую операционному коду.

Можно выделить два типа адресации:

– прямая (адреса операндов находятся в формате команды),

– косвенная (адреса ячеек памяти находятся в косвенных регистрах X, Y,Z)

Прямая адресация, одиночный регистр Rd

Рис. 7. Прямая адресация одного регистра

Операнд содержится в регистре d (Rd). Команды INC, DEC, POP, PUSH

Прямая адресация, два регистра Rd и Rr

Рис. 8. Прямая адресация двух регистров

Операнды содержатся в регистрах r (Rr) и d (Rd). Результат сохраняется в регистре d (Rd). Команда MOV.

Прямая адресация I/O

Рис. 9. Прямая адресация I/O

Адрес операнда содержится в 6 битах слова команды. Величина n определяет адрес регистра источника или регистра назначения. Команды IN, OUT.

Прямая адресация данных

Рис. 10. Прямая адресация данных

16-разрядный адрес данных содержится в 16 младших разрядах 32-разрядной команды. Rd/Rr определяют регистр источник или регистр назначения. Команды LDS, STS.

Косвенная адресация данных со смещением

Рис. 11. Косвенная адресация данных со смещением

Адрес операнда вычисляется суммированием содержимого регистра Y или Z с 6 битами адреса, содержащимися в слове команды.

Команды ST Y+q,Rg; ST Z+q,Rg; LD Rg,Y+q; LD Rg,Z+q.

Косвенная адресация данных

Рис. 12. Косвенная адресация данных

Адрес операнда содержится в регистре X, Y или Z. Команды ST X,Rg; ST Y,Rg;

ST Z,Rg; LD Rg,X; LD Rg, Y; LD Rg,Z.

Косвенная адресация данных с преддекрементом

Рис. 13. Косвенная адресация данных с преддекрементом

Перед выполнением операции регистр X, Y или Z декрементируется. Декрементированное содержимое регистра X, Y или Z является адресом операнда. Команды ST -X,Rg; ST -Y,Rg; ST -Z,Rg; LD Rg,-X; LD Rg, -Y; LD Rg,-Z.

Косвенная адресация данных с постинкрементом

Рис. 14. Косвенная адресация данных с постинкрементом После выполнения операции регистр X, Y или Z инкрементируется. Адресом…  

Тактирование. Режимы пониженного энергопотребления

Тактовый генератор

Выводы XTAL1 и XTAL2 являются входом и выходом, соответственно, инвертирующего усилителя, который с использованием кварцевого кристалла или… Кварцевый кристалл генератора таймера подсоединяется непосредственно к выводам…   Рис. 15. Подсоединение тактового генератора Рис. 16. Подсоединение…

Система реального времени (RTC)

AVR функционируют при напряжениях питания от 1,8 до 6,0 Вольт. Ток потребления в активном режиме зависит от величины напряжения питания и частоты,… 1.8.2. Сброс. Источники сброса МК ATmega8515 располагает тремя источниками сигнала сброса:

Прерывания (INTERRUPTS)

Для каждого такого события разрабатывается отдельная программа, которую называют подпрограммой обработки запроса на прерывание (для краткости -… При возникновении события, вызывающего прерывание, микроконтроллер сохраняет… После выполнения подпрограммы прерывания осуществляется восстановление предварительно сохраненного счетчика команд и…

Таблица 10. Формат регистра TCCR0

Биты

 

$33 ($53)
FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00

 

TCCR0
Чтение/Запись
R R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние

 

 

Bit 7 –FOC0 – Принудительное изменение состояния вывода ОС0. При записи в этот разряд логической 1 состояние вывода ОС0 изменяется в соответствии с разрядами СОМ00, СОМ01. Прерывания при этом не генерируются.

Bits 6,3 – WGM00, WGM01 – Определяют режим работы таймер/счетчика0.

Таблица 11. Режимы работы T/C0

№ режима WGM01 WGM00 Режим работы
Normal
Phase correct PWM
CTC
Fast PWM

Bits 5,4 – СОМ01:СОМ00 – Определяют режим работы блока сравнения. Определяется поведение вывода ОС0 при наступлении события «совпадение».

Bits 2..,0 – CS02,..CS00 – Управление тактовым сигналом. Разряды определяют источник тактового сигнала МК.

Счетный регистр – Таймер/счетчик0 – TCNT0

Регистр TCNT0 входит в состав основного блока модуля – блока реверсивного счетчика. В зависимости от режима работы модуля содержимое счетного регистра сбрасывается, инкрементируется, декрементируется по каждому импульсу тактового сигнала. После подачи питания начальное состояние счетного регистра нулевое.

Таблица 12. Формат регистра TCNT0

Биты

 

$32 ($42)
               

 

TCNT0
Чтение/Запись
R/W R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние

 

 

Регистр сравнения выхода Т/С0

OCR0 – (Timer/Counter0 Output Compare Register)

Регистр сравнения выходов является 8-разрядным регистром с возможностью чтения/записи. Регистр OCR0 расположен по адресу ($31($51)). Выполнение процедуры сравнения определяется регистром TCCR0. Совпадение при сравнении произойдет только тогда, когда таймер/счетчик досчитает до значения содержимого OCR. Программная запись одного и того же значения в таймер/счетчик и в регистр сравнения выхода не приведет к формированию совпадения при сравнении.

Совпадение при сравнении приведет к установке флага прерывания по совпадению в течение тактового цикла CPU следующего за совпадением.

 

Режимы работы Т/С0

Normal – наиболее простой режим работы Т/С. В этом режиме счетный регистр функционирует как обычный суммирующий счетчик. По каждому тактовому импульсу осуществляется инкремент регистра. При переходе через значение $FF возникает переполнение и счет продолжается со значения $00. В том же такте тактового сигнала, в котором обнуляется счетный регистр, устанавливается в «1» флаг переполнения – TOV0.

При равенстве счетного регистра и регистра сравнения устанавливается в «1» флаг прерывания по событию «совпадение» – OCF0.

Наряду с установкой флага при равенстве счетного регистра и регистра сравнения может изменяться состояние вывода ОС0 МК. Изменение состояния ОС0 определяется разрядами СОМ01:СОМ00 регистра TCCR0.

Таблица 13. Состояние вывода ОС0 МК

СОМ01 СОМ00 Описание состояния вывода ОС0
T/C отключен от вывода ОС0.
Состояние вывода изменяется на противоположное.
Вывод ОС0 сбрасывается в 0.
Вывод ОС0 устанавливается в1.

СТС (сброс при совпадении) – счетный регистр функционирует как обычный суммирующий счетчик, инкремент которого осуществляется по каждому импульсу тактового сигнала. Максимально возможное значение счетного регистра и разрешающая способность счетчика определяется регистром сравнения ОCR0. После достижения значения, записанного в регистре сравнения, счет продолжается со значения $00. В том же такте устанавливается флаг OCF0.

Изменение состояния ОС0 определяется разрядами СОМ01:СОМ00 регистра TCCR0 (состояние вывода ОС0 изменяется в соответствии с таблицей 11).

Fast PWM (быстродействующая ШИМ) в этом режиме генерируются сигналы с широтно-импульсной модуляцией. Режим используется в регулировании мощности, выпрямлении и др. Счетный регистр функционирует как суммирующий счетчик, инкрементирующий состояние по каждому тактовому импульсу. Состояние счетчика изменяется от $00 до $FF, после чего сбрасывается и цикл повторяется.

Особенностью схемы сравнения в этом режиме является двойная буферизация записи в регистр ОCR0 – записываемое число сохраняется в специальном буферном регистре. Изменение содержимого регистра сравнения происходит только в момент достижения счетчиком максимального значения $FF. Это исключает появление несимметричных импульсов сигнала на выходе модулятора (помех), которые были бы неизбежны при непосредственной записи в регистр сравнения. Изменение состояния ОС0 определяется разрядами СОМ01:СОМ00 регистра TCCR0:

Таблица 14. Состояние вывода ОС0 МК

СОМ01 СОМ00 Описание состояния вывода ОС0
T/C отключен от вывода ОС0.
Зарезервировано.
Вывод ОС0 сбрасывается в 0 при равенстве счетного регистра и регистра сравнения. Устанавливается в 1 при обнулении счетного регистра.
Вывод ОС0 устанавливается в1 при равенстве счетного регистра и регистра сравнения. Сбрасывается в 0 при обнулении счетного регистра.

Phase correct PWM (ШИМ с точной фазой) – также используется для генерации сигналов с широтно-импульсной модуляцией. В этом режиме счетный регистр изменяет состояние по импульсу тактового сигнала от $00 до $FF, а затем обратно от $FF до $00. Максимальная частота тактового сигнала в этом режиме в 2 раза меньше максимальной частоты в режиме Fast PWM. Этот режим предпочтительнее использовать при решении задач управления двигателем. Изменение состояния ОС0 определяется разрядами СОМ01:СОМ00 регистра TCCR0:

Таблица 15. Состояние вывода ОС0 МК

СОМ01 СОМ00 Описание состояния вывода ОС0
T/C отключен от вывода ОС0.
Зарезервировано.
1 0 Вывод ОС0 сбрасывается в 0 при прямом счете. Устанавливается в 1 при обратном счете. (Вывод ОС0 изменяет состояние, если регистр сравнения равен регистру счета).
Вывод ОС0 устанавливается в1 при прямом счете. Сбрасывается в 0 при обратном счете. (Вывод ОС0 изменяет состояние, если регистр сравнения равен регистру счета).

В ШИМ режиме при записи содержимое регистра сравнения выхода пересылается на временное хранение. Содержимое фиксируется при достижении таймером/счетчиком состояния $FF. Такой прием предохраняет от появления ШИМ импульсов увеличенной ширины (ложных выбросов) в случае несинхронной записи OCR0 или OCR2. Пример (для состояния СОМ01: СОМ00=1:0) см. на рис.21.

Рис. 21. Эффект несинхронной фиксации OCR

1.10.2. Таймер/счетчик 1 – T/C1

16-разрядный таймер/счетчик 1 может получать тактовый сигнал от тактового генератора, после предварительного делителя и от внешнего вывода. Кроме того его можно остановить, как показано в описании регистра управления таймером/счетчиком 1 – TCCR1B (Timer/Counter1 Control Register). В регистрах управления TCCR1A и TCCR1B находятся различные флаги, указывающие на переполнение, совпадение при сравнении и случаи захвата событий. В регистре масок прерываний TIMSK (Timer/Counter Interrupt Mask Register) устанавливаются разрешения/запрещения прерываний таймера/счетчика 1. При внешнем тактировании таймера/счетчика 1 внешний сигнал синхронизируется частотой тактового генератора CPU. Для правильной работы таймера/счетчика 1 по внешнему тактовому сигналу минимальное время между двумя переключениями внешнего тактового сигнала должно быть не менее одного периода тактового сигнала CPU. Синхронизация внешнего тактового сигнала ведется нарастающим фронтом внутреннего тактового сигнала CPU.

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

Таймер/счетчик 1 поддерживает две функции сравнения выхода, используя регистр1 сравнения выходов A и B –OCR1A и OCR1B в качестве источников данных, сравниваемых с содержимым таймера/счетчика1. Функции сравнения выхода включают очистку счетчика по совпадению сравнения A и воздействие на выводы сравнения выхода при обоих совпадениях сравнения.

Таймер/счетчик 1 может быть использован в качестве 8, 9 или 10-разрядного широтно-импульсного модулятора. В этом режиме счетчик и регистры OCR1A/OCR1B работают как сдвоенный самостоятельный ШИМ со сцентрированными импульсами, без формирования ложных импульсов.

Функция захвата входа таймера/счетчика 1 обеспечивает захват содержимого таймера/счетчика 1 в регистр захвата входа, запускаемый внешним событием на выводе входа захвата PD4/(IC1). Реальные установки захвата события определяются регистром управления таймером/счетчиком 1 TCCR1B (Timer/Counter1 Control Register). Подробно описание работы T/C1 в [1].

 

1.11. Сторожевой таймер (Watchdog Timer)

Сторожевой таймер (WatchDog Timer) предназначен для предотвращения катастрофических последствий от случайных сбоев программы. Идея использования стоpожевого таймера предельно проста и состоит в pегуляpном его сбpасывании под упpавлением пpогpаммы или внешнего воздействия до того, как закончится его выдеpжка вpемени и не произойдет сброс пpоцессоpа. Если пpогpамма pаботает ноpмально, то команда сбpоса сторожевого таймеpа должна pегуляpно выполняться, пpедохpаняя поцессоp от сбpоса. Если же пpоцессоp случайно вышел за пpеделы пpогpаммы (напpимеp, от сильной помехи по цепи питания) либо зациклился на каком-либо участке пpогpаммы, команда сбpоса стоpожевого таймеpа не будет выполнена в течение достаточного вpемени и в результате пpоизойдет сбpос пpоцессоpа, инициализиpующий все pегистpы и пpиводящий систему в pабочее состояние.

Рис. 22. Структура сторожевого таймера

Сторожевой таймер тактируется отдельным встроенным генератором, работающим с частотой 1 МГц при типовом напряжении питания VCC=5 В (см. типовые значения при других значениях VCC). Установкой коэффициента предварительного деления можно изменять длительность интервала до сброса по сторожевому таймеру от 16 тыс. до 2048 тыс. циклов (от 16 до 2048 мс). Команда WDR (Watchdog Reset) сбрасывает сторожевой таймер.

С момента сброса сторожевого таймера можно установить восемь периодов длительности тактового сигнала, устанавливая, таким образом длительность периода сброса (тайм-аута). Если период сброса завершается (в течение этого периода не поступил сигнал сброса сторожевого таймера), то микроконтроллер ATmega8515 сбрасывается и его работа продолжается по вектору сброса.

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

Непосредственно перед включением сторожевого таймера рекомендуется выполнить сброс командой WDR. Для выключения или смены периода тайм-аута сторожевого таймера необходимо выполнить последовательность команд. Это сделано для того, чтобы свести к минимуму вероятность непреднамеренного изменения конфигурации сторожевого таймера.

 

Регистр управления сторожевым таймером – WDTCR

(Watchdog Timer Control Register)

Таблица 16. Формат регистра WDTCR

Биты

 

$21 ($41)
- - - WDСE WDE WDP2 WDP1 WDP0

 

WDTCR
Чтение/Запись
R R R R/W R/W R/W R/W R/W

 

 
Начальное состояние

 

 

Bits 7..5 - Res: - Зарезервированные биты. Эти биты в микроконтроллерах ATmega8515 зарезервированы и при считывании всегда будут 0.

Bit 4 - WDСE: - Разрешение отключения сторожевого таймера.Данный бит должен быть установлен в состояние 1 при очистке бита WDE. В ином случае сторожевой таймер не будет запрещен.

Bit 3 - WDE: - Разрешение сторожевого таймера.Если бит WDE установлен в состояние 1 (сторожевой таймер разрешен) и если бит WDE очищен, то функционирование сторожевого таймера запрещено. Бит WDE может быть очищен только если установлен бит WDСE.

Для запрещения разрешенного сторожевого таймера необходимо выполнить следующую процедуру:

1. В одной операции записать логическую 1 в WDСЕ и WDE. Логическая 1 должна быть записана в WDE даже если этот бит был установлен перед началом операции запрета сторожевого таймера.

2. За время последующих четырех тактовых циклов записать логический 0 в WDE. Сторожевой таймер будет запрещен.

Bits 2..0 - WDP2, WDP1, WDP0: - биты установки коэффициента предварительного деления сторожевого таймера.Состояния битов WDP2, WDP1 и WDP0 определяют коэффициент предварительного деления тактовой частоты разрешенного сторожевого таймера. Коэффициенты и соответствующие им промежутки времени представлены в таблице17.

Таблица 17. Выбор коэффициента предварительного деления тактовой частоты сторожевого таймера

WDP2 WDP1 WDP0 Длительность цикла сторожевого таймера
16 тыс. циклов
32 тыс. циклов
64 тыс. циклов
128 тыс. циклов
256 тыс. циклов
512 тыс. циклов
1024 тыс. циклов
2048 тыс. циклов

 

МК ATmega8515 предусматривает несколько «уровней безопасности» – (0,1,2), каждый из которых накладывает определенные ограничения по изменению конфигурации сторожевого таймера.

Уровень 0 – при включении МК сторожевой таймер выключен, но он может быть включен в любой момент времени, записью логической 1 в разряд WDE Rg WDTCR.

Уровень 1– при включении МК сторожевой таймер включен. Для выключения сторожевого таймера необходимо одной командой записать логическую 1 в разряды WDE и WDСE, а в течение следующих четырех машинных циклов записать тоже одной командой 1 в WDE и 0 в WDСE. Для изменения периода тайм-аута необходимо одной командой записать логическую 1 в разряды WDE и WDTCE. В течение следующих четырех машинных циклов тоже одной командой установить WDE=1, WDTCE=0 и требуемые значения в разряды WDP2,1,0.

Уровень 2 – сторожевой таймер включен постоянно (WDE=1 всегда) и не может быть выключен. Для изменения периода тайм-аута необходимо одной командой записать логическую 1 в разряды WDE и WDСE, а в течение следующих 4 машинных циклов записать одной командой требуемые значения в разряды WDР2- WDР0, одновременно сбрасывая разряд WDСE. Значение записываемое в разряд WDE безразлично.

 

1.12. Универсальный синхронно-асинхронный приемопередатчик (USART)

Для передачи данных по последовательному каналу микроконтроллер ATmega8515 оснащен полнодуплексным универсальным приемопередатчиком (USART). Генератор обеспечивает любую скорость передачи информации в бодах.

Характеристики USART:

– Высокая скорость передачи при низкой частоте XTAL.

– 5– 9-разрядный форматы данных.

– Фильтрация шума.

– Обнаружение переполнения.

– Обнаружение ошибок формирования кадров.

Три отдельных прерывания:

– по завершению передачи (TX Complete),

– по пустому регистру передаваемых данных (TX Data Register Empty),

– по завершению приема (RX Complete).

Выводы МК, используемые USART:

1) PD0 (RxD) – вход USART,

2) PD1 (TxD) – выход USART,

3) PD4 (XCK) – вход-выход внешнего тактового сигнала USART.

В состав модуля USART входят три основные блока:

– тактирования,

– передатчика,

– приемника.

Рис. 23. Структура модуля USART

 

Блок тактирования USART включает: а) схему синхронизации, используемую для работы в синхронном режиме, б) контроллер скорости передачи.

Блок передатчика USART включает: а) одноуровневый буфер, б) сдвиговый регистр, в) схему управления.

Блок приемника USART включает: а) схемы восстановления тактового сигнала и данных, б) схему контроля четности, в) сдвиговый регистр, г) схему управления.

Буферные регистры приемника и передатчика располагаются по одному адресу пространства ввода-вывода ($0C ($2C)) и обозначаются как UDR. В этом регистре хранятся 8 младших разрядов принимаемых и передаваемых данных. При чтении выполняется обращение к буферному регистру UDR приемника, а при записи – к буферному регистру передатчика.

В модулях USART буфер приемника является двухуровневым (FIFO – буфер), изменение состояния которого происходит при любом обращении к регистру UDR.

Регистр данных USART - UDR - (USART I/O Data Register)

Таблица 18. Формат регистра UDR

Биты

 

$0C ($2C)
MSB             LSB

 

UDR
Чтение/Запись
R/W R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние

 

 

В состав USARTходят регистры управления и состояния модуля USART:

– регистр управления А: UCSRA ($0B($2B)),

регистр управления B: UCSRB ($0A($2A)),

– регистр управления C: UCSRC ($20 ($40)).

Регистр UCSRA

  $0B ($2B) RXC TXC UDRE FE DOR PE U2X MPCM   UCSRA Чтение/Запись R R/W …     Начальное состояние …

Регистр UCSRВ

  $0A ($2A) RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8   UCSRВ Чтение/Запись R/W R/W …     Начальное состояние …

Регистр UCSRС

  $20 ($40) URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL …   UCSRC Чтение/Запись R R/W …     Начальное состояние …

Формат кадра

Рис. 24. Формат кадра Формат кадра определяется разрядами UCSZ2,1,0 регистров управления USART.

Передача данных

Передача инициируется записью передаваемых данных в буферный регистр передатчика Rg UDR, затем данные поступают в сдвиговый регистр передатчика.… После пересылки слова данных в сдвиговый регистр флаг опустошения регистра… После загрузки сдвигового регистра его содержимое начинает сдвигаться вправо и поступать на вывод TxD. Скорость сдвига…

Прием данных

Логика восстановления данных производит выборку состояний вывода RXD с частотой в 16 раз большей, чем частота бодов. При нахождении линии в… Если же был обнаружен действительный стартовый бит, то начинает производиться… Тестирование выборок битов принимаемых символов показано на Рис. 25.

Последовательный периферийный интерфейс SPI

При обмене данными по интерфейсу SPI МК AVR может работать как ведущий (режим «MASTER») либо как ведомый (режим «SLAVE»). При этом пользователь… Соединения между ведущим и ведомым CPU, использующими SPI интерфейс, показаны… Одновременно при сдвиге данных из ведущего микроконтроллера в ведомый происходит сдвиг данных из ведомого…

Аналоговый компаратор (Analog Comparator)

Модуль аналогового компаратора входит в состав всех МК AVR семейства Mega. Компаратор позволяет сравнивать значения напряжений, присутствующих на двух выводах МК. Результатом сравнения является логическое значение, которое может быть прочитано из программы. По результату сравнения может быть сгенерировано прерывание, а также осуществлен захват состояния таймер/счетчика Т1. Используемые компаратором входы МК AIN0 (PB2), AIN1 (PB3).

Управление компаратором и контроль его состояния осуществляется с помощью регистра ACSR, расположенного по адресу ($08 ($28)).

По своему действию рассматриваемый узел МК является обычным компаратором. Если напряжение на выводе AIN0 (неинвертирующий вход) больше напряжения на выводе AIN1 (инвертирующий вход), то результат сравнения будет равен «1». В противном случае результат – «0». Подробно со структурой и функционированием модуля SPI можно ознакомиться в [1].

 

Система команд

.include “8515def.inc” Систему команд МК AVR ATmega8515 можно условно разбить на несколько групп… – логических операций,

Команды логических операций

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

– логическое умножение «И» – (AND Rd, Rr,...),

– логическое сложение «ИЛИ» – (OR Rd, Rr,…),

– операцию «исключающее ИЛИ» – (EOR Rd, Rr,…),

а также инверсию (COM Rd) и отрицание (NEG Rd) регистров.

К этой группе можно отнести также команды очистки (CLR Rd)/установки (SER Rd) регистров. Операции производятся между регистрами общего назначения, между регистром и константой, результат сохраняется в РОН. Все команды этой группы выполняются за один машинный цикл.

 

Команды арифметических операций и сдвига

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

– сложение (ADD Rd, Rr,…),

– вычитание (SUB Rd, Rr,…),

– инкремент (INC Rd),

– декремент (DEC Rd),

– сдвиги вправо (ROR Rd; LSR Rd,..) и влево (ROL Rd; LSL Rd,…),

– умножение 8-разрядных значений (MUL Rd, Rr,…).

Все операции производятся только над РОН. При этом МК AVR оперируют как знаковыми, так и беззнаковыми числами. Почти все команды выполняются за один машинный цикл.

Команды операций с битами

К данной группе относятся команды, выполняющие установку или сброс заданного разряда РОН (SBR Rd*, K; CBI Rd*, K) или регистра ввода/вывода (РВВ) (SBI P*,b; CBI P*,b). Причем, для изменения разрядов регистра состояния SREG используются специальные команды по установке и сбросу флагов. Условно к этой группе можно отнести команды типа «проверка/пропуск», которые пропускают следующую команду в зависимости от состояния разряда РОН (SBRC Rr, b; SBRS Rr, b,…) или РВВ (SBIC P*, b; SBIS P*, b,….).

Все команды данной группы выполняются за один машинный цикл, за исключением случаев, когда в результате проверки происходит пропуск команды.

 

Команды пересылки данных

Команды этой группы предназначены для пересылки содержимого ячеек, находящихся в адресном пространстве памяти данных. Разделение адресного пространства на три части (РОН, РВВ, ОЗУ) определяет разнообразие команд данной группы. Пересылка данных может производиться в следующих направлениях:

– РОН Û РОН (MOV Rd, Rr,...),

– РОН Û РВВ (IN Rd, P; OUT P, Rd,…),

– РОН Û память данных (LDS Rd, k; STS k, Rd,…).

К этой группе можно отнести команды обращения к стеку (PUSH Rr, POP Rd).

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

 

Команды передачи управления

В эту группу входят команды перехода, вызова подпрограмм (CALL k,..) и возврата из них (RET,..) и команды типа «проверка/пропуск» (CPSE Rd, Rr,…), пропускающие следующую за ними команду при выполнении некоторого условия. К этой группе команд относятся команды сравнения (CP Rd, Rr,…), формирующие флаги регистра SREG и предназначенные, как правило, для работы совместно с командами условного перехода.

В системе команд МК имеются команды как условного (BREQ k,…), так и безусловного перехода (JMP k,..).

Очевидно, что команды передачи управления нарушают нормальный (линейный) ход программы. Каждый раз, когда выполняется команда из этой группы (кроме команд сравнения), нормальное функционирование конвейера нарушается. Перед загрузкой в конвейер нового адреса производится остановка и очистка выполняемой последовательности команд.

 

Команды управления системой

В эту группу входят всего три команды:

– NOP – пустая команда,

– SLEEP– перевод МК в режим пониженного энергопотребления,

– WDR – сброс сторожевого таймера.

Все эти команды выполняются за один машинный цикл.

Перечень команд МК представлен в таблице 24 Приложение 1 (полный перечень команд в [1]).

 

Программирование МК AVR ATmega8515

При программировании микроконтроллеров отладка программы проводится в специальной среде эмулирующей функционирование реального ATmega8515.

Для закрепления приобретенных теоретических знаний и приобретения навыков программирования ATmega8515 рассмотрим работу программных средств разработки МПС – AVR Studio.

 

Лабораторная работа №1

Изучение принципа работы программных средств разработки МПС

Цель работы: знакомство с принципами программирования и отладки программ для микроконтроллеров AVR в IDE AVR Studio.

Теоретическая часть

Профессиональную разработку современных микроконтроллерных устройств невозможно представить без использования средств поддержки. Фирма Atmel уделяет большое внимание вопросам технической поддержки, предлагая разработчикам как программные так и различные аппаратные средства. AVR Studio – это интегрированная отладочная среда разработки приложений (IDE) для микроконтроллеров семейства AVR (AT90S, ATmega, ATtiny) фирмы Atmel.

IDE AVR Studio содержит:

· Транслятор языка ассемблера (Atmel AVR macroassembler).

· Отладчик (Debugger).

· Программное обеспечение верхнего уровня для поддержки внутрисхемного программирования (In-System Programming, ISP).

Отладчик AVR Studio поддерживает все типы микроконтроллеров AVR и имеет два режима работы: режим программной симуляции и режим управления различными типами внутрисхемных эмуляторов (In-Circuit Emulators) производства фирмы Atmel. Отладочная среда поддерживает выполнение программ как в виде ассемблерного текста, так и в виде исходного текста языка С.

Методические указания по выполнению лабораторной работы

Создайте новый проект.

  Рис. 27. Окно приглашения в AVR Studio

Напишите и отладьте программу LAB1

a) Наберите программу LAB1 в появившемся правом верхнем окне редактирования программы на языке ассемблера. b) Осуществите трансляцию программы и проверьте правильность ее написания.…

E) Покажите отчет по трассировке преподавателю.

F) Оформите отчет по лабораторной работе.

Контрольные вопросы.

1) Продемонстрируйте преподавателю ход создания проекта и работы программы LAB1.

 

Практическая часть

2.1. Задание:

1. Изучить методику создания проекта в AVR Studio.

2. Провести детальную трассировку программы LAB1 в AVR Studio, описать каждый шаг Program Counter, значения которого изменяются при каждом нажатии на клавишу F11.

3. Изменить значение на PIN порта ввода и отметить что произошло.

4. Ответить на контрольные вопросы.

5. Составить отчёт по трассировке.

Программа LAB1:

.include "8515def.inc" ; подключение файла описания МК

def temp = r16 ; задание временной переменной temp

cli ; глобальный запрет прерываний

;------------|Организация стека в верхних ячейках ОЗУ|-----------------------

ldi temp,low(RAMEND) ; загрузка в temp младшего байта адреса

; последней ячейки оперативной памяти МК

out SPL,temp ; определение указателя стека

; (младший байт)

ldi temp,high(RAMEND) ; загрузка в temp старшего байта адреса

; последней ячейки оперативной памяти МК

out SPH,temp ; определение указателя стека

; (старший байт)

;------------|Инициализация портов|-----------------------

ldi temp,$ff ; загрузка в temp числа $FF

out DDRB,temp ; запись в регистр направления порта В

; значения temp ($FF – порт вывода)

ldi temp,$00 ; загрузка в temp числа $00

out DDRD,temp ; запись в регистр направления порта D

; значения temp ($00 – порт ввода)

;------------|Основной блок программы|-----------------------

MAIN:

in temp,PIND

dec temp

rol temp

ror temp

swap temp

out PORTB,temp

rjmp MAIN

.exit

 

2.2 . Содержание отчета

· Наименование лабораторной работы.

· Цель лабораторной работы.

· Формулировка задания.

· Отчет по трассировке.

· Вычисления и выводы.

· Электронный вариант выполненной работы.

Практическая работа №1

Изучение системы команд МК AVR ATmega8515

Методические рекомендации по выполнению практической работы Необходимо составить алгоритм, написать программу на ассемблереМК AVR… В режиме реального времени ввести данные с портов x – (PА), y – (PВ), если состояние портов совпало (x=y), то в порт…

Содержание отчета

· Наименование практической работы.

· Цель практической работы.

· Формулировка задания.

· Блок-схема алгоритма.

· Программа на языке ассемблер.

· Проверка реализуемой задачи (выполнить функции, выставить флаги).

 

 

Лабораторная работа №2

Изучение работы с портами ввода/вывода МК AVR

Цель работы: знакомство со структурой и принципами функционирования портовввода/вывода МК AVR.

Задание 1.

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

Методические рекомендации по выполнению примера.

Создать проект в AVR Studio 4, написать и отладить программу, продемонстрировать преподавателю функционирование МК для данной задачи.

Пример выполнения задания на рис. 34.

Рис. 34. Рабочее окно AVR Studio 4 с результатами проверки задачи

Проверим правильность выставления флагов по выполнению команды сложения (результат на рис. 35) – все арифметические флаги =0, что подтверждает правильность теоретических расчетов в задании 1.

Рис. 35. Рабочее окно AVR Studio 4 с результатами проверки арифметических флагов

Задание 3. Получить у преподавателя задачу для реализации, выполнить задания № 1, 2 в соответствии с указанной методикой.

Ответить на контрольные вопросы.

Контрольные вопросы

1. Методика выставления арифметических флагов МК.

2. Методика работы в AVR Studio 4.

Литература

1. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL. Евстифеев А.В., 2-е изд., стер. – М.: Издательский дом «Додека – XXI», 2005. – 560с.

 

ПРИЛОЖЕНИЕ 1

Таблица 25. Система команд МК ATmega8515

Мнемоника Операнды Описание Операция Флаги Кол-во тактов
АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ КОМАНДЫ
ADD Rd, Rr Сложение двух регистров общего назначения без учета переноса Rd ¬Rd + Rr Z,C,N,V,H
ADC Rd, Rr Сложение двух регистров с учетом переноса Rd ¬Rd+Rr+C Z,C,N,V,H
ADIW Rdl, K Сложение регистровой пары с константой Rdh:Rdl ¬ Rdh:Rdl+K Z,C,N,V,S
SUB Rd, Rr Разность двух регистров без учета переноса Rd ¬Rd - Rr Z,C,N,V,H
SUBI Rd*, K Разность регистра и константы Rd ¬Rd - K Z,C,N,V,H
SBC Rd, Rr Разность двух регистров с учетом переноса Rd¬Rd-Rr - C Z,C,N,V,H
SBCI Rd*, K Разность регистра и константы с учетом переноса Rd¬Rd- K - C Z,C,N,V,H
SBIW Rdl, K Вычитание константы из регистровой пары Rdh:Rdl ¬ Rdh:Rdl - K Z,C,N,V,S
MUL Rd, Rr Умножение беззнаковых чисел R1:R0 ¬ Rd´Rr Z,C
MULS Rd, Rr Умножение чисел со знаком R1:R0 ¬ Rd´Rr Z,C
AND Rd, Rr Логическое И двух регистров Rd ¬Rd Rr Z,N,V
ANDI Rd*, K Логическое И регистра и константы Rd¬Rd K Z,N,V
OR Rd, Rr Логическое ИЛИ двух регистров Rd ¬Rd v Rr Z,N,V
ORI Rd*, K Логическое ИЛИ регистра и константы Rd ¬Rd v K Z,N,V
EOR Rd, Rr Исключающее ИЛИ двух регистров Rd ¬Rd vRr Z,N,V
COM Rd Инверсия регистра Rd ¬$FF Rd Z,C,N,V
NEG Rd Отрицание регистра Rd ¬$00 Rd Z,C,N,V,H
INC Rd Инкремент Rd ¬Rd + 1 Z,N,V
DEC Rd Декремент Rd ¬Rd 1 Z,N,V
TST Rd Тестирование на ноль и минус Rd ¬Rd Rd Z,N,V
CLR Rd Очистка регистра Rd ¬Rd Rd Z,N,V
SER Rd Установка регистра в FF Rd ¬$FF None
CP Rd, Rr Сравнение двух регистров Rd -Rr Z, N,V,C,H
CPC Rd, Rr Сравнение двух регистров с учетом переноса Rd -Rr -C Z, N,V,C,H
CPI Rd*, K Сравнение с константой Rd -K Z, N,V,C,H
КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ
RJMP k Безусловный переход на метку k+1 PC ¬PC + k + 1 None
IJMP   Переход на указатель (Z) PC ¬Z None
JMP k Переход на метку k PC ¬ k None
RCALL k Относительный вызов подпрограммы PC¬PC + k + 1 None
CALL k Абсолютный вызов подпрограммы PC ¬ k None
ICALL   Косвенный вызов подпрограммы PC ¬Z None
RET   Возврат из подпрограммы PC ¬STACK None
RETI   Возврат из подпрограммы обработки прерывания PC ¬STACK I
CPSE Rd,Rr Пропуск команды при равенстве двух РОН if (Rd = Rr)PC ¬PC + 2 or 3 None 1 / 2 / 3
SBRC Rr, b Пропустить команду, если разряд РОН сброшен if (Rr(b)=0)PC ¬PC + 2 or 3 None 1 / 2
SBRS Rr, b Пропустить команду, если разряд РОН установлен if (Rr(b)=1)PC ¬PC + 2 or 3 None 1 / 2
SBIC P*, b Пропустить команду, если разряд РВВ сброшен if (P(b)=0)PC ¬PC + 2 or 3 None 1 / 2
SBIS P*, b Пропустить команду, если разряд РВВ установлен if (P(b)=1)PC ¬PC + 2 or 3 None 1 / 2
BRBS s, k Переход, если разряд регистра SREG установлен if (SREG(s)=1) then РC¬PC+k+1 None 1 / 2
BRBC s, k Переход, если разряд регистра SREG сброшен if(SREG(s) = 0) then PC¬PC+k + 1 None 1 / 2
BREQ k Переход по «равно» if (Z = 1) then PC ¬PC + k + 1 None 1 / 2
BRCS k Переход по переносу if (C = 1) then PC ¬PC + k + 1 None 1 / 2
BRNE k Переход по «не равно» if (Z = 0) then PC ¬PC + k + 1 None 1 / 2
BRCC k Переход, если не было переноса if (C = 0) then PC ¬PC + k + 1 None 1 / 2
BRSH k Переход по «выше или равно» (для беззнаковых данных) if (C = 0) then PC ¬PC + k + 1 None 1 / 2
BRLO k Переход по «меньше» (для беззнаковых данных) if (C = 1) then PC ¬PC + k + 1 None 1 / 2
BRMI k Переход по «отрицательное значение» if (N = 1) then PC ¬PC + k + 1 None 1 / 2
BRPL k Переход по «положительное значение» if (N = 0) then PC ¬PC + k + 1 None 1 / 2
BRGE k Переход по «больше или равно» if (N ÅV= 0) then PC¬PC+k + 1 None 1 / 2
BRLT k Переход по «меньше» if (N ÅV= 1) then PC¬PC+k + 1 None 1 / 2
BRHS k Переход по половинному переносу if (H = 1) then PC ¬PC + k + 1 None 1 / 2
BRHC k Переход, если не было половинного переноса if (H = 0) then PC ¬PC + k + 1 None  
BRTS k Переход, если флаг Т установлен if (T = 1) then PC ¬PC + k + 1 None 1 / 2
BRTC k Переход, если флаг Т сброшен if (T = 0) then PC ¬PC + k + 1 None 1 / 2
BRVS k Переход по переполнению дополнительного кода if (V = 1) then PC ¬PC + k + 1 None 1 / 2
BRVC k Переход, если нет переполнения дополнительного кода if (V = 0) then PC ¬PC + k + 1 None 1 / 2
BRIE k Переход, если прерывания разрешены if ( I = 1) then PC ¬PC + k + 1 None 1 / 2
BRID k Переход, если прерывания запрещены if ( I = 0) then PC ¬PC + k + 1 None 1 / 2
КОМАНДЫ ПЕРЕСЫЛКИ ДАННЫХ
MOV Rd, Rr Пересылка между регистрами Rd ¬Rr None
LDI Rd*, K Загрузка константы Rd ¬K None
LD Rd, X Косвенное чтение памяти данных Rd ¬(X) None
LD Rd, X+ Косвенное чтение памяти данных с постинкрементом Rd ¬(X), X ¬X + 1 None
LD Rd, - X Косвенное чтение памяти данных с преддекрементом X ¬X – 1, Rd ¬(X) None
LD Rd, Y Косвенное чтение памяти данных Rd ¬(Y) None
LD Rd, Y+ Косвенное чтение памяти данных с постинкрементом Rd ¬(Y), Y ¬Y + 1 None
LD Rd, - Y Косвенное чтение памяти данных с преддекрементом Y ¬Y – 1, Rd ¬(Y) None
LDD Rd,Y+q Косвенное относительное чтение памяти данных Rd ¬(Y + q) None
LD Rd, Z Косвенное чтение памяти данных Rd ¬(Z) None
LD Rd, Z+ Косвенное чтение памяти данных с постинкрементом Rd ¬(Z), Z ¬Z+1 None
LD Rd, -Z Косвенное чтение памяти данных с преддекрементом Z ¬Z – 1, Rd ¬(Z) None
LDD Rd, Z+q Косвенное относительное чтение памяти данных Rd ¬(Z + q) None
LDS Rd, k Непосредственная загрузка из памяти данных Rd ¬(k) None
ST X, Rr Косвенная запись в память данных (X) ¬Rr None
ST X+, Rr Косвенная запись в память данных с постинкрементом ST (X) ¬Rr, X ¬X + 1 None
ST - X, Rr Косвенная запись в память данных с преддекрементом X¬X – 1, (X) ¬Rr None
ST Y, Rr Косвенная запись в память данных (Y) ¬Rr None
ST Y+, Rr Косвенная запись в память данных с постинкрементом (Y) ¬Rr, Y¬Y + 1 None
ST - Y, Rr Косвенная запись в память данных с преддекрементом Y ¬Y – 1, (Y) ¬Rr None
STD Y+q,Rr Косвенная относительная запись в память данных (Y + q) ¬Rr None
ST Z, Rr Косвенная запись в память данных (Z) ¬Rr None
ST Z+, Rr Косвенная запись в память данных с постинкрементом (Z) ¬Rr, Z¬Z + 1 None
ST -Z, Rr Косвенная запись в память данных с преддекрементом Z ¬Z – 1, (Z) ¬Rr None
STD Z+q,Rr Косвенная относительная запись в память данных (Z + q) ¬Rr None
STS k, Rr Непосредственная запись в память данных (k) ¬Rr None
LPM   Загрузка данных из памяти программ R0 ¬(Z) None
ELPM   Расширенная загрузка данных из памяти программ R0 ¬(RAMPZ: Z) None
IN Rd, P Ввод из порта Rd ¬P None
OUT P, Rr Вывод в порт P ¬Rr None
PUSH Rr Сохранение байта в стеке STACK ¬Rr; SP¬SP-1 None
POP Rd Извлечение байта из стека SP¬SP+1, Rd ¬STACK None
КОМАНДЫ РАБОТЫ С БИТАМИ
SBR Rd*, K Установка бита(тов) в регистре Rd ¬Rd v K Z,N,V
CBR Rd*, K Очистка бита(тов) в регистре Rd ¬Rd ($FF - K) Z,N,V
SBI P*,b Установка бита в регистре I/O I/O(P,b) ¬1 None
CBI P*,b Очистка бита в регистре I/O I/O(P,b) ¬0 None
LSL Rd Логический сдвиг влево Rd(n+1) ¬Rd(n), Rd(0) ¬0 Z,C,N,V
LSR Rd Логический сдвиг вправо Rd(n) ¬Rd(n+1), Rd(7) ¬0 Z,C,N,V
ROL Rd Циклический сдвиг влево через перенос Rd(0) ¬C, Rd(n+1) ¬Rd(n), C¬Rd(7) Z,C,N,V
ROR Rd Циклический сдвиг вправо через перенос Rd(7) ¬C, Rd(n) ¬Rd(n+1), C ¬Rd(0) Z,C,N,V
ASR Rd Арифметический сдвиг вправо Rd(n) ¬Rd(n+1), n=0..6 Z,C,N,V
SWAP Rd Обмен тетрадами Rd(3..0)¬Rd(7..4), Rd(7..4)¬Rd(3..0) None
BSET s Установка разряда регистра SREG SREG(s) ¬1 SREG(s)  
BCLR s Сброс разряда регистра SREG SREG(s) ¬0 SREG(s)  
BLD Rd, b Пересылка флага Т в РОН Rd(b) ¬T None
BST Rr, b Запись разряда РОН в флаг Т T ¬Rr(b) T
SEC   Установка флага С C ¬1 C
CLC   Очистка флага C C ¬0 C
SEN   Установка флага N N ¬1 N
CLN   Очистка флага N N ¬0 N
SEZ   Установка флага Z Z ¬1 Z
CLZ   Очистка флага Z Z ¬0 Z
SEI   Разрешение глобальных прерываний I ¬1 I
CLI   Запрет глобальных прерываний. I ¬0 I
SES   Установка флага S S ¬1 S
CLS   Очистка флага S S ¬0 S
SEV   Установка флага V V ¬1 V
CLV   Очистка флага V V ¬0 V
SET   Установка флага T T ¬1 T
CLT   Очистка флага T T ¬0 T
SEH   Установка флага H H ¬1 H
CLH   Очистка флага H H ¬0 H
КОМАНДЫ УПРАВЛЕНИЯ СИСТЕМОЙ
NOP   Нет операции None  
SLEEP   Спящий режим None  
WDR   Сброс по сторожевому таймеру None  

Обозначения, используемые в системе команд:

Rd - регистр-приемник результата, 0 £ d £ 31,

Rd* - регистр-приемник результата, 16 £ d £ 31,

Rdl: R24, R26, R28, R30. Для ADIW и SBIW команд,

Rr - регистр-источник,

P- адрес регистра ввода/вывода,

P*- адрес побитно адресуемого регистра ввода/вывода (адреса $00-$1F),

K - символьная или численная константа (8 бит),

k - адресная константа,

b - номер бита в регистре (3 бита),

s - номер бита в регистре статуса (3 бита),

X,Y,Z - регистры косвенной адресации (X=R27:R26, Y=R29:R28; Z=R31:R30).

 

 

– Конец работы –

Используемые теги: дисциплина, Микроконтроллеры, методические, указания, Условное, графическое, обозначение, УГО, микроконтроллера, AVR, ATmega85150.12

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Дисциплина МИКРОКОНТРОЛЛЕРЫ Методические указания 1.2 Условное графическое обозначение УГО микроконтроллера AVR ATmega8515

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Методические указания По курсовому и дипломному проектированию по дисциплине Ремонт автомобилей Методические указания предназначены для оказания практической помощи учащимся при выполнении курсового проекта по дисциплине Ремонт автомобилей . 1 Общая часть
Методические указания... По курсовому и дипломному проектированию... раздел Технологическая часть...

По дисциплине Композиционное моделирование - 1 семестр Одобрено секцией методических пособий научно-методического совета Указания составлены в соответствии с учебным планом и рабочей программой по дисциплине. ©Титова Е.А.
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования... Сибирская государственная автомобильно дорожная академия СибАДИ...

МЕТОДИЧЕСКИЕ УКАЗАНИЯ МЕТОДИЧЕСКИЕ УКАЗАНИЯ УЧЕБНО-ИССЛЕДОВАТЕЛЬСКИХ РАБОТ
МЕТОДИЧЕСКИЕ УКАЗАНИЯ...

Краткий курс механики в качестве программы и методических указаний по изучению курса Физика Краткий курс механики: Программа и методические указания по изучению курса Физика / С
Федеральное агентство железнодорожного транспорта... Омский государственный университет путей сообщения...

ПО ВЫПОЛНЕНИЮ ПРАКТИЧЕСКОГО ЗАДАНИЯ по дисциплине Финансы организаций Тема и варианты практического задания разработаны в соответствии с учебным материалом дисциплины. МЕТОДИЧЕСКИЕ УКАЗАНИЯ
ПО ВЫПОЛНЕНИЮ ПРАКТИЧЕСКОГО ЗАДАНИЯ по дисциплине Финансы организаций... ВВЕДЕНИЕ Тема и варианты практического задания разработаны в соответствии с учебным материалом дисциплины Учебные цели и задачи...

МЕТОДИЧЕСКИЕ УКАЗАНИЯ по технико-экономическому обоснованию дипломных проектов и работ специальности 220200 Автоматизированные системы обработки информации и управления Методические указания для специальности 2202 Автоматизированные системы обработки инфо
Российский химико технологический университет... им Д И Менделеева... Новомосковский институт Издательский центр...

Методические указания по выполнению контрольной работы Страхование: Методические указания по выполнению контрольной работы / Новосиб
ФГОУ ВПО Новосибирский государственный аграрный университет... Экономический институт Страхование...

Для подготовки к практическим занятиям по дисциплине Безопасность жизнедеятельности методическое пособие для студентов Методические указания
высшего профессионального образования... Волгоградский государственный медицинский университет... Министерства здравоохранения и социального развития РФ...

Методические указания к семинарским занятиям Методические указания по самостоятельной работе Банк тестовых заданий в системе UniTest
ВСЕОБЩАЯ ИСТОРИЯ ИСКУССТВА... Учебная программадисциплины gt Курс лекций Методические... Лекция Основные понятия истории искусства ч...

Задания и методические указания для выполнения курсового проектапо дисциплине Триботехника в автотранспортном комплексе Общие указания и индивидуальное
Задания и методические указания для выполнения курсового проектапо дисциплине Триботехника в автотранспортном...

0.029
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам