- •Шахты 2005
- •Ю.А. Валюкевич
- •Введение
- •1 Общее описание структуры микроконтроллеров семейства avr
- •2. Регистры управления и работа с ними на примере микроконтроллера ат90s2313.
- •3. Система команд микроконтроллеров семейства avr
- •Include - Вложить другой файл
- •Выражения
- •4.Среда разработки программ avr Studio XX
- •Режимы работы отладчика
- •Отладка проекта при помощи программного симулятора
- •5. Программирование Flash-памяти программ микроконтроллера
- •6. Лабораторный практикум
- •6.1 Лабораторный стенд
- •6.2 Задания на выполнение лабораторных работ Лабораторная работа 1
- •Лабораторная работа 2
- •Лабораторная работа 3
- •Лабораторная работа 4
- •Лабораторная работа 5
- •6.3 Порядок выполнения и пример оформления лабораторной работы
- •Лабораторная работа 1
- •6.4 Примеры программирования на языке ассемблера для микроконтроллеров avr
- •Библиографический список
- •Основные параметры микроконтроллеров семейства avr
- •Приложение 2
6.4 Примеры программирования на языке ассемблера для микроконтроллеров avr
При установке интегрированной среды разработки AVR Studio в папке Appnotes размещён ряд подпрограмм на языке ассемблера часто встречающихся при решении практических задач. Все исходные тексты приведенных программных фрагментов разработаны специалистами фирмы Atmel corp. и достаточно подробно откомментированы на английском языке. Перечень названий файлов с исходными текстами и их назначение приведены в приложении 4. Для углублённого изучения программирования для микроконтроллеров семейства AVR можно обратиться к руководящим техническим материалам (Application Notes) размещенным на сайте Atmel corp. (www.atmel.com).
Библиографический список
К разделу 1
Кривченко И.В AVR - микроконтроллеры: очередной этап на пути развития/ "Компоненты и технологии" N3, М., 2002г. С 5 14.
1.2 AVR RISC Microcontroller Data Book. Atmel Corp. 1999
К разделу 2
2.1Микроконтроллер архитектуры AVR AT90S2313./ Пер. с англ. Ю. Андриенко. Atmel corp. 2002г.
К разделу 3
3.1 Справка по Ассемблеру для AVR / Пер. с англ Руслан Шимкевич, Atmel corp. 2000г
К разделу 4
4.1 Гребнев В.В. Микроконтроллеры семейства AVR фирмы Atmel.-M.: ИП Радиософт, 2002 -176с.:ил
4. 2. Золотухо Р.Н. Аппаратно-программные средства поддержки разработок на основе микроконтроллеров AVR фирмы Atmel / Электронная версия: http://atmel.ru/Articles/Atmel20.htm#n1
К разделу 5
5.1 А. Редчук AVReAl -- программирование AVR через LPT ver1.23rev4/
Электронная версия: http://www.ln.com.ua/~real/avreal/index.html
Приложение 1
Основные параметры микроконтроллеров семейства avr
Таблица 1. Cемейство "tiny"
-
Наименование
Flash ROM
EEPROM
RAM
ISP (I), Self-Prog (S)
I/O (Pins)
UART
8/16-bit Timer
N-канальный ШИМ
Аналоговый компаратор
N-канальный АЦП 10-bit
Сторожевой таймер
Количество инструкций
Vcc (V)
Тактовая частота, МГц
Тип корпуса
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ATtiny11L*
1 KB
I****
6
1/-
+
+
90
2.7-5.5
0-2
DIP8, SOIC8
ATtiny11*
1 KB
I****
6
1/-
+
+
90
4.0-5.5
0-6
DIP8, SOIC8
ATtiny12V*
1 KB
64B
I
6
1/-
+
+
90
1.8-5.5
0-1
DIP8, SOIC8
ATtiny12L*
1 KB
64B
I
6
1/-
+
+
90
2.7-5.5
0-4
DIP8, SOIC8
ATtiny12*
1 KB
64B
I
6
1/-
+
+
90
4.0-5.5
0-8
DIP8, SOIC8
ATtiny13**
1 KB
64B
64B
I
6
1/-
2
+
+
120
1.8-5.5
0-24
DIP8, SOIC8
ATtiny15L
1 KB
64B
I
6
2/-
+
4
+
90
2.7-5.5
1,6
DIP8, SOIC8
ATtiny26L
2 KB
128B
128B
I
16
2/-
+
11
+
118
2.7-5.5
0-8
DIP20, SOIC20
ATtiny26
2 KB
128B
128B
I
16
2/-
+
11
+
118
4.5-5.5
0-16
DIP20, SOIC20
ATtiny28V
2 KB
20
1/-
+
+
90
1.8-5.5
0-1
DIP28, TQFP32
ATtiny28L
2 KB
20
1/-
+
+
90
2.7-5.5
0-4
DIP28, TQFP32
ATtiny2313**
2KB
128B
128B
I
18
1
1/1
2
+
+
120
1.8-5.5
0-16
DIP20, SOIC20, MLF32
Таблица 2. Cемейство "classic"
Наименование |
Flash ROM |
EEPROM |
RAM |
Дополнительная внешняя RAM |
ISP (I), Self-Prog (S) |
I/O (Pins) |
UART |
SPI |
I2C |
8/16-bit Timer |
N-канальный ШИМ |
Аналоговый компаратор |
N-канальный АЦП 10-bit |
Внутренний RC-генератор |
Сторожевой таймер |
Апп. перемножитель |
Количество инструкций |
Vcc (V) |
Тактовая частота, МГц |
Тип корпуса |
Дальнейшее развитие |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
AT90S1200* |
1 KB |
64B |
|
|
I |
15 |
|
|
|
1/- |
|
+ |
|
+ |
+ |
|
89 |
2.7-6.0 |
0-12 |
DIP20, SOIC20, SSOP20 |
ATtiny2313 |
AT90S2313* |
2 KB |
128B |
128B |
|
I |
15 |
1 |
|
|
1/1 |
|
+ |
|
|
+ |
|
118 |
2.7-6.0 |
0-10 |
DIP20, SOIC20 |
ATtiny2313 |
AT90LS2323 |
2 KB |
128B |
128B |
|
I |
3 |
|
|
|
1/- |
|
|
|
|
+ |
|
118 |
2.7-6.0 |
0-4 |
DIP8, SOIC8 |
|
AT90S2323 |
2 KB |
128B |
128B |
|
I |
3 |
|
|
|
1/- |
|
|
|
|
+ |
|
118 |
4.0-6.0 |
0-10 |
DIP8, SOIC8 |
|
AT90LS2343 |
2 KB |
128B |
128B |
|
I |
5 |
|
|
|
1/- |
|
|
|
+ |
+ |
|
118 |
2.7-6.0 |
0-4 |
DIP8, SOIC8 |
|
AT90S2343 |
2 KB |
128B |
128B |
|
I |
5 |
|
|
|
1/- |
|
|
|
+ |
+ |
|
118 |
4.0-6.0 |
0-10 |
DIP8, SOIC8 |
|
AT90LS4433* |
4 KB |
256B |
128B |
|
I |
20 |
1 |
1 |
|
1/1 |
|
+ |
6 |
|
+ |
|
118 |
2.7-6.0 |
0-4 |
DIP28, TQFP32 |
ATmega8 |
AT90S4433* |
4 KB |
256B |
128B |
|
I |
20 |
1 |
1 |
|
1/1 |
|
+ |
6 |
|
+ |
|
118 |
4.0-6.0 |
0-8 |
DIP28, TQFP32 |
ATmega8 |
AT90S8515* |
8 KB |
512B |
512B |
до 64 КВ |
I |
32 |
1 |
1 |
|
1/1 |
|
+ |
|
|
+ |
|
118 |
2.7-6.0 |
0-8 |
DIP40, PLCC44, TQFP44 |
ATmega8515 |
AT90LS8535* |
8 KB |
512B |
512B |
|
I |
32 |
1 |
1 |
+ |
2/1 |
|
+ |
8 |
|
+ |
|
118 |
2.7-6.0 |
0-4 |
DIP40, PLCC44, TQFP44 |
ATmega8535 |
AT90S8535* |
8 KB |
512B |
512B |
|
I |
32 |
1 |
1 |
+ |
2/1 |
|
+ |
8 |
|
+ |
|
118 |
4.0-6.0 |
0-8 |
DIP40, PLCC44, TQFP44 |
ATmega8535 |
Таблица 3. Cемейство "mega"
Наименование |
Flash ROM |
EEPROM |
RAM |
Дополнительная внешняя RAM |
ISP (I), Self-Prog (S) |
I/O (Pins) |
UART |
SPI |
I2C |
8/16-bit Timer |
N-канальный ШИМ |
Аналоговый компаратор |
N-канальный АЦП 10-bit |
Сторожевой таймер |
Апп. перемножитель |
Количество инструкций |
Vcc (V) |
Тактовая частота, МГц |
Тип корпуса |
Дальнейшее развитие |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Atmega48*** |
4 KB |
256 |
512B |
|
I, S |
23 |
1 |
2 |
+ |
2/1 |
6 |
+ |
8 |
+ |
+ |
130 |
1.8-5.5 |
0-16 |
PDIP28, TQFP32, MLF32 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega8L |
8 KB |
512B |
1КB |
|
I, S |
23 |
1 |
1 |
+ |
2/1 |
3 |
+ |
6/8 |
+ |
+ |
130 |
2.7-5.5 |
0-8 |
DIP28, TQFP32, MLF32 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega8 |
8 KB |
512B |
1КB |
|
I, S |
23 |
1 |
1 |
+ |
2/1 |
3 |
+ |
6/8 |
+ |
+ |
130 |
4.0-5.5 |
0-16 |
DIP28, TQFP32, MLF32 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega88*** |
8 KB |
512 |
1КB |
|
I, S |
23 |
1 |
2 |
+ |
2/1 |
6 |
+ |
8 |
+ |
+ |
130 |
1.8-5.5 |
0-16 |
PDIP28, TQFP32, MLF32 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega8515L |
8 KB |
512B |
512B |
до 64 KB |
I, S |
35 |
1 |
1 |
|
1/1 |
3 |
+ |
|
+ |
+ |
130 |
2.7-5.5 |
0-8 |
PDIP40, TQFP44, PLCC44, MLF44 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega8515 |
8 KB |
512B |
512B |
до 64 KB |
I, S |
35 |
1 |
1 |
|
1/1 |
3 |
+ |
|
+ |
+ |
130 |
4.5-5.5 |
0-16 |
PDIP40, TQFP44, PLCC44, MLF44 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega8535L |
8 KB |
512B |
512B |
|
I, S |
35 |
1 |
1 |
+ |
2/1 |
4 |
+ |
8 |
+ |
+ |
130 |
2.7-5.5 |
0-8 |
PDIP40, TQFP44, PLCC44, MLF44 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega8535 |
8 KB |
512B |
512B |
|
I, S |
35 |
1 |
1 |
+ |
2/1 |
4 |
+ |
8 |
+ |
+ |
130 |
4.5-5.5 |
0-8 |
PDIP40, TQFP44, PLCC44, MLF44 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega16L |
16 KB |
512B |
1КB |
|
I, S |
32 |
1 |
1 |
+ |
2/1 |
4 |
+ |
8 |
+ |
+ |
130 |
2.7-5.5 |
0-8 |
DIP40, TQFP44 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega16 |
16 KB |
512B |
1КB |
|
I, S |
32 |
1 |
1 |
+ |
2/1 |
4 |
+ |
8 |
+ |
+ |
130 |
4.0-5.5 |
0-16 |
DIP40, TQFP44 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega161L* |
16 KB |
512B |
1КB |
|
I, S |
35 |
2 |
1 |
|
2/1 |
|
+ |
|
+ |
+ |
130 |
2.7-5.5 |
0-4 |
DIP40, TQFP44 |
ATmega162 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega161* |
16 KB |
512B |
1КB |
|
I, S |
35 |
2 |
1 |
|
2/1 |
|
+ |
|
+ |
+ |
130 |
4.0-5.5 |
0-8 |
DIP40, TQFP44 |
ATmega162 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega162V |
16 KB |
512B |
1КB |
до 64 КВ |
I, S |
35 |
2 |
1 |
|
2/2 |
6 |
+ |
|
+ |
+ |
131 |
1.8-5.5 |
0-8 |
PDIP40, TQFP44, MLF44 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega162 |
16 KB |
512B |
1КB |
до 64 КВ |
I, S |
35 |
2 |
1 |
|
2/2 |
6 |
+ |
|
+ |
+ |
131 |
2.7-5.5 |
0-16 |
PDIP40, TQFP44, MLF44 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega163L* |
16 KB |
512B |
1КB |
|
I, S |
32 |
1 |
1 |
+ |
2/1 |
3 |
+ |
8 |
+ |
+ |
130 |
2.7-5.5 |
0-4 |
DIP40, TQFP44 |
ATmega16L |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega163* |
16 KB |
512B |
1КB |
|
I, S |
32 |
1 |
1 |
+ |
2/1 |
3 |
+ |
8 |
+ |
+ |
130 |
4.0-5.5 |
0-8 |
DIP40, TQFP44 |
ATmega16 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega168*** |
16 KB |
512 |
1КB |
|
I, S |
23 |
1 |
2 |
+ |
2/1 |
6 |
+ |
8 |
+ |
+ |
131 |
1.8-5.5 |
0-16 |
PDIP28, TQFP32, MLF32 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega169 |
16 KB |
512B |
1КB |
|
I, S |
54 |
1 |
1 |
+ |
2/1 |
4 |
+ |
8 |
+ |
+ |
130 |
1.8-5.5 |
0-16 |
TQFP64, MLF64 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega329*** |
32 KB |
1КB |
2КB |
|
I, S |
54 |
1 |
1 |
+ |
2/1 |
tba |
+ |
8 |
+ |
+ |
130 |
1.8-5.5 |
0-16 |
TQFP64, MLF64 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega323L* |
32 KB |
1КB |
2КB |
|
I, S |
32 |
1 |
1 |
+ |
2/1 |
4 |
+ |
8 |
+ |
+ |
130 |
2.7-5.5 |
0-4 |
DIP40, TQFP44 |
ATmega32L |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega323* |
32 KB |
1КB |
2КB |
|
I, S |
32 |
1 |
1 |
+ |
2/1 |
4 |
+ |
8 |
+ |
+ |
130 |
4.0-5.5 |
0-8 |
DIP40, TQFP44 |
ATmega32 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega32L |
32 KB |
1КB |
2КB |
|
I, S |
32 |
1 |
1 |
+ |
2/1 |
4 |
+ |
8 |
+ |
+ |
130 |
2.7-5.5 |
0-8 |
DIP40, TQFP44 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATmega32 |
32 KB |
1КB |
2КB |
|
I, S |
32 |
1 |
1 |
+ |
2/1 |
4 |
+ |
8 |
+ |
+ |
130 |
4.0-5.5 |
0-16 |
DIP40, TQFP44 |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
ATmega64L |
64 KB |
2КB |
4KB |
до 64 КВ |
I, S |
53 |
2 |
1 |
+ |
2/2 |
8 |
+ |
8 |
+ |
+ |
130 |
2.7-5.5 |
0-8 |
TQFP64 |
|
ATmega64 |
64 KB |
2КB |
4KB |
до 64 КВ |
I, S |
53 |
2 |
1 |
+ |
2/2 |
8 |
+ |
8 |
+ |
+ |
130 |
4.0-5.5 |
0-16 |
TQFP64 |
|
ATmega128L |
128 KB |
4KB |
4KB |
до 64 КВ |
I, S |
53 |
2 |
1 |
+ |
2/2 |
8 |
+ |
8 |
+ |
+ |
133 |
2.7-5.5 |
0-8 |
TQFP64, MLF64 |
|
ATmega128 |
128 KB |
4KB |
4KB |
до 64 КВ |
I, S |
53 |
2 |
1 |
+ |
2/2 |
8 |
+ |
8 |
+ |
+ |
133 |
4.0-5.5 |
0-16 |
TQFP64, MLF64 |
|
ATmega128CAN 11*** |
128 KB |
4KB |
4KB |
до 64 КВ |
I, S |
53 |
2 |
1 |
+ |
2/2 |
8 |
+ |
8 |
+ |
+ |
133 |
2.7-5.5 |
0-16 |
TQFP64, QFN64, CA-BGA64 |
|
ATmega256*** |
256 KB |
4KB |
8KB |
до 64 КВ |
I, S |
53 |
2 |
1 |
+ |
2/2 |
tba |
+ |
8 |
+ |
+ |
133 |
2.7-5.5 |
0-16 |
TQFP64, MLF64 |
|
* позиции, не рекомендованные для новых разработок
**доступны инженерные образцы, серийное производство планируется в начале 2004 года
*** позиции, запланированные к выпуску во 2-й половине 2004 года
**** режим последовательного высоковольтного программирования
Обозначения принятые в таб. 1-3
Flash ROM - объем энергонезависимой памяти программ (в килобайтах);
EEPROM - объем энергонезависимой памяти данных (в байтах);
RAM - объем статической памяти данных (в байтах);
External RAM - возможность подключения к микроконтроллеру дополнительной микросхемы внешней статической памяти данных (в килобайтах);
ISP - возможность программирования микроконтроллера в системе (на целевой плате) при основном напряжении питания;
SPM - функция самопрограммирования Flash ROM памяти микроконтроллера в системе без участия внешнего программатора;
JTAG - встроенный JTAG - интерфейс;
I/O (pins) - максимальное количество доступных линий ввода / вывода;
Timer(s) 8/16 bit - количество и разрядность таймеров/счетчиков;
USI - универсальный коммуникационный интерфейс;
AC - аналоговый компаратор;
ADC (channels) - количество каналов аналого-цифрового преобразования;
Internal RC - наличие внутренней RC-цепочки для автономной работы микроконтроллера (без внешнего источника опорной частоты);
WDT - сторожевой таймер;
BDC - аппаратный программируемый блок защиты от сбоев при внезапном (в том числе и кратковременном) пропадании напряжения питания микроконтроллера;
UART - асинхронный последовательный приемопередатчик;
SPI - синхронный трехпроводной последовательный интерфейс;
I2C - двухпроводной последовательный интерфейс;
RTC - система реального времени;
PWM (channels) - количество независимых каналов широтно - импульсной модуляции;
Command Set - количество различных инструкций в системе команд микроконтроллера;
Vcc - диапазон рабочих напряжений питания (в Вольтах);
Clock - диапазон рабочих частот (в мегагерцах);
Packages - типы корпусов, в которые опрессовывается микроконтроллер, и общее количество выводов.