Микроконтроллер ATtiny15L (лабораторная работа №3)
Цель работы.Целью лабораторной работы является отладка прикладных программ для микроконтроллера AVR семейства Tiny с помощью персонального компьютера и программных средств отладки.
ATtiny15L является 8-разрядным микроконтроллером с низким уровнем энергопотребления, основанным на AVR RISC архитектуре. Благодаря выполнению высокопроизводительных инструкций за один период тактового сигнала, ATtiny15L достигает производительности, приближающейся к уровню 1 MIPS на МГц, обеспечивая разработчику возможность оптимизировать уровень энергопотребления в соответствии с необходимым быстродействием. Ядро AVR содержит мощный набор инструкций (90 команд). Все 32 регистра общего назначения напрямую подключены к арифметико-логическому устройству (АЛУ), что обеспечивает доступ к двум независимым регистрам при выполнении одной инструкции за один такт. Данная архитектура позволяет повысить быстродействие вплоть до 10 раз по сравнению со стандартными микроконтроллерами CISC (рис. 4.1).
Рис. 4.1 – Структурная схема АТtiny15L
ATtiny15L имеет: 1 Кбайт Flash-памяти программ (512 16-разрядных ячеек), 64 байта энергонезависимой памяти данных EEPROM, 6 линий I/O общего назначения, 32 регистра общего назначения, два 8-разрядных универсальных таймера/счетчика, один с высокоскоростным выходом с ШИМ, встроенные генераторы, внутренние и внешние прерывания, программируемый сторожевой таймер, аналоговый компаратор, 4-канальный 10-раз-рядный АЦП, а также три программно выбираемых режима экономии энергопотребления. Режим ожидания «Idle Mode» останавливает CPU, но позволяет функционировать АЦП, аналоговому компаратору, таймеру/счетчикам и системе прерываний. Режим подавления шумов АЦП обеспечивает высокопрецизионные АЦП-измерения путем остановки CPU и сохранения работоспособности АЦП. Режим экономии энергопотребления «Power Down» сохраняет содержимое регистров, но останавливает тактовые генераторы, отключая все остальные функции микроконтроллера, вплоть до следующего внешнего прерывания, или до аппаратной инициализации. Функция активации, или прерывания при смене логического уровня на линии порта, позволяет ATtiny15L быть высокочувствительным к внешним событиям, при сохранении минимального уровня энергопотребления при нахождении в режимах экономии энергопотребления.
Устройство производится с применением технологии энергонезависимой памяти с высокой плотностью размещения, разработанной в корпорации Atmel. Благодаря совмещению усовершенствованного 8-разрядного RISC CPU с Flash-памятью с поддержкой внутрисистемного программирования на одном кристалле получился высокопроизводительный микроконтроллер ATtiny15L, обеспечивающий гибкое и экономически высокоэффективное решение для многих приложений встраиваемых систем управления, особенно в случае применения в зарядных устройствах, системах балластного освещения, и во всех типах приложений, использующих интеллектуальные датчики.
Напряжение питания от 2,7 В до 5,5 В. Внутренняя тактовая частота 1,6 МГц. Коммерческий и индустриальный диапазоны эксплуатационных температур. Корпус имеет 8 выводов (рис. 4.2). Альтернативные функции линий порта В указаны в табл. 4.1.
Таблица 4.1 – Дополнительные функции линий порта В
Линия РВ | Альтернативная функция |
PB0 | MOSI (Вход данных при программировании) AREF (Вход опорного напряжения для АЦП) AIN0 (Неинвертирующий вход аналогового компаратора) |
PB1 | MISO (Выход данных при программировании) OC1A (Выход таймера/счетчика Т1 в режиме ШИМ) AIN1 (Инвертирующий вход аналогового компаратора) |
PB2 | SCK (Вход тактового сигнала при программировании) INT0 (Вход внешнего прерывания) ADC1 (Вход АЦП) T0 (Вход внешнего тактового сигнала таймера/счетчика Т0) |
PB3 | ADC2 (Вход АЦП) |
PB4 | ADC3 (Вход АЦП) |
PB5 | RESET (Вход сброса) ADC0 (Вход АЦП) |
Обращение к порту В производится с помощью регистров PORTB (регистр данных порта В), DDRB (регистр направления порта В), PINB (регистр выводов порта В). Формат этих регистров приведен в табл. 4.2.
Таблица 4.2 – Формат регистров порта В
– | – | – | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 |
– | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 |
– | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 |
Максимальная нагрузочная способность выводов РВ4…РВ0 составляет 20 мА, а вывода РВ5 – 12 мА. Вывод РВ5 может функционировать либо как вход, либо как выход с открытым стоком (на выводе может присутствовать только сигнал логического 0).
При установке разряда DDBn в 1 соответствующий n-вывод порта является выходом, при сбросе в 0 – входом. Для линий, сконфигурированных как входные, имеется возможность подключения внутренних подтягивающих резисторов сопротивлением 35…120 кОм между входом и шиной питания Vcc. Если разряд PUD (6-ой бит регистра MCUCR) установлен в 1, подтягивающие резисторы отключаются от всех линий порта. Для подключения подтягивающего резистора необходимо сбросить разряд PUD и записать 1 в соответствующий разряд регистра PORTB (вывод РВ5 не имеет внутреннего подтягивающего резистора).
Полный перечень регистров ввода/вывода микроконтроллера АТtiny15L приведен в табл. 4.3. Младшие адреса памяти программ отведены под таблицу векторов прерываний (табл. 4. 4).
Таблица 4.3 – Регистры ввода/вывода (адрес, название и функция)
$3F SREG Status Register
$3B GIMSK General Interrupt Mask Register
$3A GIFR General Interrupt Flag Register
$39 TIMSK Timer/Counter Interrupt Mask Register
$38 TIFR Timer/Counter Interrupt Flag Register
$35 MCUCR MCU Control Register
$34 MCUSR MCU Status Register
$33 TCCR0 Timer/Counter0 Control Register
$32 TCNT0 Timer/Counter0 (8-bit)
$31 OSCCAL Oscillator Calibration Register
$30 TCCR1 Timer/Counter1 Control Register
$2F TCNT1 Timer/Counter1 (8-bit)
$2E OCR1A Timer/Counter1 Output Compare Register A
$2D OCR1B Timer/Counter1 Output Compare Register B
$2C SFIOR Special Function I/O Register
$21 WDTCR Watchdog Timer Control Register
$1E EEAR EEPROM Address Register
$1D EEDR EEPROM Data Register
$1C EECR EEPROM Control Register
$18 PORTB Data Register, Port B
$17 DDRB Data Direction Register, Port B
$16 PINB Input Pins, Port B
$08 ACSR Analog Comparator Control and Status Register
Окончание табл. 4.3
$07 ADMUX ADC Multiplexer Select Register
$06 ADCSR ADC Control and Status Register
$05 ADCH ADC Data Register High
$04 ADCL ADC Data Register Low
Таблица 4.4 – Векторы прерываний (адрес, источник и описание)
$000 RESET External Reset, Power-on Reset,
Brown-out Reset, and Watchdog Reset
$001 INT0 External Interrupt Request 0
$002 I/O Pins Pin Change Interrupt
$003 TIMER1, COMPA Timer/Counter1 Compare Match A
$004 TIMER1, OVF Timer/Counter1 Overflow
$005 TIMER0, OVF Timer/Counter0 Overflow
$006 EE_RDY EEPROM Ready
$007 ANA_COMP Analog Comparator
$008 ADC ADC Conversion Complete
Таймеры ATtiny15L
Таймер/счетчик Т0 (счетный регистр TCNT0) может работать в режиме таймера (на вход поступают импульсы тактового сигнала микроконтроллера непосредственно или через предделитель) или в режиме счетчика внешних событий. Режим работы задают три младших разряда регистра управления ТССR0 (табл. 4.5). Другие разряды этого регистра не используются.
Таблица 4.5 – Выбор источника тактового сигнала для Т0
CS02 | CS01 | CS00 | Источник тактового сигнала |
Таймер/счетчик остановлен | |||
СК (тактовый сигнал микроконтроллера) | |||
СК/8 | |||
СК/64 | |||
СК/256 | |||
СК/1024 | |||
Вывод Т0, инкремент счетчика производится по спадающему фронту импульсов | |||
Вывод Т0, инкремент счетчика производится по нарастающему фронту импульсов |
При переходе таймера/счетчика из состояния $FF в состояние $00 устанавливается флаг TOV0 (табл. 4.6) и генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в 1 разряда TOIE0 (табл. 4.7) при условии, что флаг общего разрешения прерываний I регистра SREG также установлен в 1.
Таблица 4.6 – Формат регистра флагов прерываний TIFR
– | OCF1A | – | – | – | TOV1 | TOV0 | – |
Таблица 4.7 – Формат регистра масок прерываний TIMSK
– | OCIE1A | – | – | – | TOIE1 | TOIE0 | – |
В таймере/счетчике Т1 возможность счета внешних импульсов отсутствует. Однако он может выполнять определенные действия при равенстве содержимого счетного регистра TCNT1 и регистров выходного сравнения OCR1A и OCR1B. Кроме того, он может работать как широтно-импульсный модулятор для генерирования сигнала с программируемой частотой и скважностью. Дальнейшее описание Т1 приводится именно для режима ШИМ.
При работе таймера/счетчика в режиме ШИМ состояние счетного регистра изменяется от $00 до значения, находящегося в регистре OCR1B, после чего счетный регистр сбрасывается и цикл повторяется. При равенстве содержимого счетного регистра и регистра OCR1A состояние вывода РВ1 (ОС1А) изменяется в соответствии со значениями разрядов СОМ1А1 и СОМ1А0 регистра управления ТССR1 (табл. 4.9). Выбор источника тактового сигнала задается разрядами CS13…CS10 этого регистра (табл. 4.10), а включение режима ШИМ – записью 1 в разряд PWM1 (табл. 4.8).
Таблица 4.8 – Формат регистра ТССR1
CTC1 | PWM1 | СОМ1А1 | СОМ1А0 | CS13 | CS12 | CS11 | CS10 |
Таблица 4.9 – Поведение вывода РВ1 (ОС1А) в режиме ШИМ
СОМ1А1 | СОМ1А0 | РВ1 (ОС1А) |
Таймер/счетчик Т1 отключен от вывода | ||
Таймер/счетчик Т1 отключен от вывода | ||
Сбрасывается в 0 при равенстве TCNT1 и OCR1A, устанавливается в 1 при TCNT1=$00 | ||
Устанавливается в 1 при равенстве TCNT1 и OCR1A, сбрасывается в 0 при TCNT1=$00 |
Таблица 4.10 – Выбор источника тактового сигнала для таймера Т1
Регистр ТССR1 | Источник тактового сигнала | |||
CS13 | CS12 | CS11 | CS10 | |
Таймер/счетчик остановлен | ||||
СКх16 | ||||
СКх8 | ||||
СКх4 | ||||
СКх2 | ||||
СК (тактовый сигнал МК) | ||||
СК/2 | ||||
СК/4 | ||||
СК/8 | ||||
СК/16 | ||||
СК/32 | ||||
СК/64 | ||||
СК/128 | ||||
СК/256 | ||||
СК/512 | ||||
СК/1024 |
Содержимое регистра сравнения OCR1B определяет частоту ШИМ-сигнала (табл. 4.11), содержимое регистра сравнения OCR1А определяет скважность ШИМ-сигнала.
Таблица 4.11 – Зависимость частоты ШИМ-сигнала от тактовой частоты
Частота тактового сигнала таймера/счетчика | Содержимое регистра OCR1B | Частота ШИМ-сигнала (кГц) |
СК | ||
СКх2 | ||
СКх4 | ||
СКх4 | ||
СКх8 | ||
СКх8 | ||
СКх8 | ||
СКх8 | ||
СКх8 | ||
СКх16 | ||
СКх16 | ||
СКх16 | ||
СКх16 | ||
СКх16 | ||
СКх16 |
При работе таймера/счетчика Т1 в режиме ШИМ может генерироваться прерывание по переполнению Т1, а также прерывание от схемы сравнения (см. флаги и биты разрешения регистров TIFR и TIMSK).
В микроконтроллере ATtiny15L имеется встроенный синтезатор частоты, формирующий сигнал с частотой, в 16 раз превышающей частоту тактового сигнала встроенного RC-генератора. Номинальная частота RC-генератора равна 1,6 МГц, а частота на выходе синтезатора частоты равна 25,6 МГц.
Основная функция сторожевого таймера – защита устройства от сбоев. Благодаря сторожевому таймеру можно прервать выполнение зациклившейся программы. Если сторожевой таймер включен, то через определенные промежутки времени выполняется сброс микроконтроллера. При нормальном выполнении программы сторожевой таймер должен периодически сбрасываться командой WDR.
Для управления сторожевым таймером предназначен регистр WDTCR (табл. 4.12). Краткое описание разрядов этого регистра приведено в табл. 4.13. Непосредственно перед включением сторожевого таймера рекомендуется выполнить его сброс командой WDR.
Таблица 4.12 – Формат регистра WDTCR
– | – | – | WDTOE | WDE | WDP2 | WDP1 | WDP0 |
Таблица 4.13 – Разряды регистра WDTCR
Разряд | Название | Описание |
7…5 | – | Зарезервированы |
WDTOE | Разрешение выключения сторожевого таймера | |
WDE | Разрешение включения сторожевого таймера | |
2…0 | WDP2…WDP0 | Коэффициент деления предделителя частоты |
Период наступления тайм-аута сторожевого таймера задается с помощью разрядов WDP2…WDP0 согласно табл. 4.14. Сторожевой таймер имеет независимый тактовый генератор с номинальным значением частоты 1 МГц и может работать даже в режиме Power Down.
Таблица 4.14 – Задание периода сторожевого таймера
WDP2 | WDP1 | WDP0 | Число тактов генератора |
16К | |||
32К | |||
64К | |||
128К | |||
256К | |||
512К | |||
1024К | |||
2048К |
Стек
В микроконтроллерах AVR семейства Tiny стек реализован аппаратно. Глубина стека равна трем уровням, а разрядность равна размеру счетчика команд (9 разрядов). При вызове подпрограммы адрес команды, расположенной за командой RCALL, сохраняется в стеке. При возврате из подпрограммы этот адрес извлекается из стека и загружается в счетчик команд. То же происходит и во время прерывания программы.
Непосредственно из программы стек недоступен, так как в наборе команд микроконтроллера отсутствуют команды занесения в стек и извлечения из стека. Указатель стека также недоступен из программы. Микроконтроллер сам управляет перемещением данных по стеку.
Дата добавления: 2016-01-09; просмотров: 2887;