Краткое описание архитектуры микроконтроллера ATmega16

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

Изучение основ программирования RISC - микроконтроллеров Гарвардской архитектуры на примере микроконтроллера ATmega16(32) компании Atmel

Краткое описание архитектуры микроконтроллера ATmega16

§ Высокопроизводительный, потребляющий малую мощность 8 разрядный микроконтроллер [МК] Advanced RISC-архитектуры;

§ 131 машинная инструкция;

§ 32 8-разр. регистров общего назначения + регистры управления встроенной периферией;

§ Производительность до 16 млн. операций в секунду (MIPS)при тактовой частоте 16 МГц;

§ Встроенное умножающее устройство выполняет умножение за 2 машинных цикла;

§ 16KBytes в системе программируемой внутренней Flash памяти программ;

§ 512Bytes внутренней перепрограммируемой памяти данных EEPROM;

§ 1KByte внутренней SRAM;

§ Количество циклов записи в флэш - память: 10,000 Flash/100,000 EEPROM;

§ Хранение данных: 20 лет при 85°C/100 лет при 25°C(1);

§ Внутрисистемное программирование встроенной загрузочной программой;

§ Программируемая защита кода программы;

§ Интерфейс SPI для внутрисистемного программирования;

§ Интерфейс JTAG (совместимость со стандартом IEEE 1149.1);

§ Два 8-разрядных таймера/счетчика с отдельным предделителем и режимом сравнения и захвата;

§ Один 16-разрядный Таймер/счетчик с отдельным предделителем, режимом сравнения и захвата;

§ Счетчик реального времени с отдельным внешним кваррцевым генератором;

§ Четыре канала для формирования ШИМ (широтно – импульсной модуляции);

§ 8-канальный аналоговый мультиплексор и 10 разрядный АЦП;

§ 2 встроенных усилителя аналоговых сигналов с программируемым коэффициентом на 1x, 10x, или 200x;

§ Байт-ориентированный двухпроводной последовательный интерфейс I2C

§ Программируемый последовательный USART (аналог RS232)

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

§ Встроенный аналоговый компаратор;

§ Внешние и внутренние источники прерываний;

§ Встроенный RC задающий генератор;

§ Шесть режимов снижения энергопотребления:

• холостой ход (Idle);

• уменьшение шумов АЦП;

• экономичный (Power-save);

• выключение (Power-down);

• дежурный (Standby) ;

• и расширенный дежурный (Extended Standby);

§ Программный выбор тактовой частоты;

§ 32 программируемые линии ввода-вывода;

§ Корпус 40-pin PDIP, 44-выводный TQFP;

§ Напряжение питания 2.7 – 5 Вольт;

§ Рабочая частота 0 – 16Мгц;

§ Потребляемый ток

• Active: 0.6 мА

• Режиме ожидания: 0,2 мА

Режим выключения питания: < 1 мкА

Варианты корпусов:

 

 

 

Укрупненная функциональная схема:

 

 

Функциональная схема:

 

 

Память программ представляет собой внутрисистемную. программируемую флэш-память в которой хранятся команды управляющие работой МК, а также константы не меняющиеся во время работы.

Для адресации к памяти программ используется счетчик команд.

По адресу $0000 находится вектор сброса. При сбросе МК (вход RESET) выполнение программы начинается с этого адреса.

Память данных состоит из двух независимых не зависимых пространств ( регистровой памяти + SRAM) и EEPROM данных.

Регистровая память состоит из 32 РОН и 4 –х регистров портов ввода –вывода RA, RB, RC, RD.

 

Порты ввода вывода.

 

 

 

 

С каждым выводом микроконтроллера связывается бит в трех регистрах регистрах DDRx и PORTx и PINx.

Регистр DDRx задает направление передачи. При DDRx=1 - вывод информации (выход). При этом выводимая информация (0 или 1) записывается в регистр PORTx и после этого появляется на выводе Pxn.

При DDRx=1 вывод настраивается на ввод (вход). При этом вводимая информация появляется в регистре PINx. В том случае если PORTx = 1, то ножка микроконтроллера подключается (подтягивается ) через высокоомный резистор к напряжению питания (+5В). Это режим используется, когда надо подтянуть не используемые выводы к напряжению питания для исключения помех, которые могут на нем появится и нарушить работу МК. Если PORTx = 0, то вход переходит в третье (высокоомное состояние - отключается "повисает в воздухе" от схемы и не влияет на работу других схем соединенных с этим выводом). Этот режим используется если вывод подключается к общей шине. Таким способом вывод можно отключать и он не будет мешать другим выводам, с ним соединенным.

Настройка нулевого вывода порта С на вывод информации.

DDRC.0=1; PORTC.0 =0; на ножке порта PnC.0 ,появится 0.

DDRC.0=1; PORTC.0 =1; на ножке порта PnC.0 ,появится 1.

Настройка нулевого вывода порта С на ввод информации.

DDRC.0=0; PORTC.1 =0; из бита PINC.0 , можно считать состояние на 0 -ножке порта С. Если к этому порту через кнопку подать 5вольт , то обнаружить факт нажатия на кнопку с учетом задержки на дребезг контактов можно следующим образом

 

if (PINС.0==1) {for(k=1;k<300;k++); /* здесь может быть действие. если кнопка нажата*/}

Если DDRC.0=0; PORTC.1 =1; то будет вход подтянут к напряжению +5В высокоомным резистором.

 

 

У каждого вывода порта есть альтернативные функции. Например, вход PD2 может служить просто входом, а может быть настроен на прием сигнала запроса на прерывание INT0.

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

Бит PUD = 1 в регистре управления SFIOR отключает все подтягивающие резисторы.

 

 

 

Уровни прерываний, закрепленные за усройствами и их приоритеты приведены в таблице:

 

 

Разряд 7 в регистре статуса SREG.7=1 разрешает все прерывания (глобальное прерывание)

§ Для каждого типа прерываний есть локальные разрешения

прерываний, которые находятся в управляющих регистрах соответствующих устройств МК.

В среде СodeVision при формировании проекта можно выбрать прерывание от соответствующих устройства, при этом в коде программы появится секция для кода обработчика прерываний.

 

Список устройств, их структура и функционирование, также и назначение битов регистров, управляющих работой устройств можно изучить в русскоязычном документе ATmega128 из папки с файлами лабораторной рабты. Архитектура этого процессора во многом схожа с архитектурой процессора ATmega16.

Назначение битов регистров приведено в конце документа.