AVR микроконтроллеры. Программирование для начинающих
Начинающим о AVR микроконтроллерах
Микроконтроллеры (далее мы их просто будем называть МК) завоевывают все большую популярность у радиолюбителей. С их помощью можно собрать практически все что угодно- индикаторы, вольтметры, приборы для дома (устройства защиты, коммутации, термометры…), металлоискатели, разные игрушки, роботы и т.д. перечислять можно очень долго....
В этих статьях мы постараемся изучить микроконтроллеры AVR фирмы ATMEL, научимся работать с ними, рассмотрим программы для прошивки, изготовим простой и надежный программатор, рассмотрим процесс прошивки и самое главное проблемы, которые могут возникнуть( и не только у новичков).
Основные параметры микроконтроллеров семейства AVR
Микроконтроллер |
Память FLASH |
Память ОЗУ |
Память EEPROM |
Порты ввода/вывода |
U питания |
Частота |
ATmega48 |
4 |
512 |
256 |
23 |
2,7-5,5 |
0-10-20 |
ATmega48V |
4 |
512 |
256 |
23 |
1,8-4,8-5,5 |
0-4-10 |
ATmega8515 |
8 |
512 |
512 |
35 |
4,5-5,5 |
0-16 |
ATmega8515L |
8 |
512 |
512 |
35 |
2,7-5,5 |
0-8 |
ATmega8535 |
8 |
512 |
512 |
32 |
4,5-5,5 |
0-16 |
ATmega8535L |
8 |
512 |
512 |
32 |
2,7-5,5 |
0-8 |
ATmega8 |
8 |
1K |
512 |
23 |
4,5-5,5 |
0-16 |
ATmega8L |
8 |
1K |
512 |
23 |
2,7-5,5 |
0-8 |
ATmega88 |
8 |
1K |
512 |
23 |
2,7-5,5 |
0-10-20 |
ATmega88V |
8 |
1K |
512 |
23 |
4,5-5,5 |
0-4-10 |
ATmega16 |
16 |
1K |
512 |
32 |
4,5-5,5 |
0-16 |
ATmega16L |
16 |
1K |
512 |
32 |
2,7-5,5 |
0-8 |
ATmega32 |
32 |
2K |
1K |
32 |
4,0-5,5 |
0-16 |
ATmega32L |
32 |
2K |
1K |
32 |
2,7-5,5 |
0-8 |
Дополнительные параметры МК AVR mega:
Рабочая температура: -55…+125*С
Температура хранения: -65…+150*С
Напряжение на выводе RESET относительно GND: max 13В
Максимальное напряжение питания: 6.0В
Максимальный ток линии ввода/вывода: 40мА
Максимальный ток по линии питания VCC и GND: 200мА
Цоколевка выводов моделей ATmega 8X
Цоколевка выводов моделей ATmega48x, 88x, 168x
Цоколевка выводов ATmega8515x
Расположение выводов у моделей
Цоколевка выводов у моделей ATmega16, 32x
Расположение выводов у моделей ATtiny2313
В конце статьи, во вложении, есть даташиты на некоторые микроконтроллеры
Установочные FUSE биты MK AVR
BODEN |
BODLEVEL |
BOOTRST |
BOOTSZ0 |
BOOTSZ1 |
CKSEL0 |
CKSEL1 |
SPIEN |
CKSEL2 |
CKSEL3 |
EESAVE |
FSTRT |
INCAP |
RCEN |
RSTDISBL |
SUT0 |
SUT1 |
|
|
|
|
|
|
|
Запомните, запрограммированный фьюз – это 0, не запрограммированный – 1. Осторожно стоит относиться к выставлению фьюзов, ошибочно запрограммированный фьюз может заблокировать микроконтроллер. Если вы не уверены какой именно фьюз нужно запрограммировать, лучше на первый раз прошейте МК без фьюзов.
Самыми популярными микроконтроллерами у радиолюбителей являются ATmega8, затем идут ATmega48, 16, 32, ATtiny2313 и другие. Микроконтроллеры продаются в TQFP корпусах и DIP, новичкам рекомендую покупать в DIP. Если купите TQFP, будет проблематичнее их прошить, придется купить или изготовить переходник и паять плату т.к. у них ножки располагаются очень близко друг от друга. Советую микроконтроллеры в DIP корпусах, ставить на специальные панельки (сокеты), это удобно и практично, не придется выпаивать МК если приспичит перепрошить, или использовать его для другой конструкции.
Почти все современные МК имеют возможность внутрисхемного программирования ISP, т.е. если ваш микроконтроллер запаян на плату, то для того чтобы сменить прошивку нам не придется выпаивать его с платы.
Для программирования используется 6 выводов:
RESET - Вход МК
VCC - Плюс питания, 3-5В, зависит от МК
GND - Общий провод, минус питания.
MOSI - Вход МК (информационный сигнал в МК)
MISO - Выход МК (информационный сигнал из МК)
SCK - Вход МК (тактовый сигнал в МК)
Иногда еще используют вывода XTAL 1 и XTAL2, на эти вывода цепляется кварц, если МК будет работать от внешнего генератора, в ATmega 64 и 128 вывода MOSI и MISO не применяются для ISP программирования, вместо них вывода MOSI подключают к ножке PE0, a MISO к PE1. При соединении микроконтроллера с программатором, соединяющие провода должны быть как можно короче, а кабель идущий от программатора на порт LPT так-же не должен быть слишком длинным.
В маркировке микроконтроллера могут присутствовать непонятные буквы с цифрами, например Atmega 8L 16PU, 8 16AU, 8A PU и пр. Буква L означает, что МК работает от более низкого напряжения, чем МК без буквы L, обычно это 2.7В. Цифры после дефиса или пробела 16PU или 8AU говорят о внутренней частоте генератора, который есть в МК. Если фьюзы выставлены на работу от внешнего кварца, кварц должен быть установлен на частоту, не превышающей максимальную по даташиту, это 20МГц для ATmega48/88/168, и 16МГц для остальных атмег.
Первые цифры в названии микроконтроллера обозначают объем FLASH ПЗУ в килобайтах, например ATtiny15 – 1 Кб, ATtiny26 – 2 Кб, AT90S4414 – 4 Кб, Atmega8535 – 8 Кб, ATmega162 – 16Кб, ATmega32 – 32 Кб, ATmega6450 – 64Кб, Atmega128 – 128Кб.
Иногда встречаются схемы, где применены микроконтроллеры с названиями типа AT90S… это старые модели микроконтроллеров, некоторые из них можно заменить на современные, например:
AT90S4433 – ATmega8
AT90S8515 – ATmega8515
AT90S8535 – ATmega8535
AT90S2313 – ATtiny2313
ATmega163 – ATmega16
ATmega161 – ATmega162
ATmega323 – ATmega32
ATmega103 – ATmega64/128
ATmega 8 имеет несколько выводов питания, цифровое – VCC, GND и аналоговое – AVCC, GND. В стандартном включении обе пары выводов соединяют параллельно, т.е. вместе. Микроконтроллеры AVR не любят повышенного напряжения, если питание выше 6 вольт, то они могут выйти из строя. Я обычно применяю маломощный стабилизатор напряжения на 5 вольт, КР142ЕН5 или 78L05. Если напряжение питания слишком низкое, то МК не прошьется, программа будет ругаться и выдавать ошибки (к примеру -24 в PonyProg).
На этом закончим, пока можете выбрать в интернете понравившуюся схему и изучить ее, можете заодно сходить и купить нужный микроконтроллер. Далее мы будем собирать простой и надежный программатор, познакомимся с программами для прошивания и попробуем прошить МК.
Источник- http://cxem.net/