Микроконтроллеры (далее МК) прочно вошли в нашу жизнь, на просторах интернета можно встретить очень много интересных схем, которые исполнены на МК. Чего только нельзя собрать на МК: различные индикаторы, вольтметры, приборы для дома (устройства защиты, коммутации, термометры…), металлоискатели, разные игрушки, роботы и т.д. перечислять можно очень долго. Первую схему на микроконтроллере я увидел лет 5-6 назад в журнале радио, и практически сразу же перелистнул страницу, подумав про себя "все равно не смогу собрать". Действительно, в то время МК для меня были чем то очень сложным и непонятым устройством, я не представлял как они работают, как их прошивать, и что делать с ними в случае неправильной прошивки. Но около года назад, я впервые собрал свою первую схему на МК, это была схема цифрового вольтметра на 7 сегментных индикаторах, и микроконтроллере ATmega8. Так получилось, что микроконтроллер я купил случайно, когда стоял в отделе радиодеталей, парень передо мной покупал МК, и я тоже решил купить, и попробовать собрать что-нибудь. В своих статьях я расскажу вам про микроконтроллеры 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
Расположение выводов у моделей ATmega8535x
Расположение выводов у моделей 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).
На этом закончим, пока можете выбрать в интернете понравившуюся схему и изучить ее, можете заодно сходить и купить нужный микроконтроллер. В следующих частях статьи мы будем собирать простой и надежный программатор, познакомимся с программами для прошивания и попробуем прошить МК.
Даташит ATmega8
Даташит ATmega16
Даташит ATmega32
Даташит ATmega48/88/168
Даташит ATmega128
Даташит ATmega8515
Даташит ATmega8535
Даташит ATtiny2313
Комментарии (22) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
То есть чем будет тактироваться МК (от внутреннего генератора или от внешнего кварца), какой квац будет (низко-, средне- или высокочастотный), будет ли делится тактовая частота на 8, использование входа Reset по прямому назначению или как дополнительный порт ввода-вывода и т.п.
И максимальное напряжение 5v5, а не 6v. К питанию различной логики нужно относиться аккуратно. Но правда ВСЕ контроллеры отлично работают от 3v3.
Я бы ещё привёл не только меги, но и тиньки. Они проще, дешевле.
Нужно, чтобы на выходе порта В в течении определенного времени, допустим 10 сек, была частота 800 Гц, затем она должна меняться. Не могу правильно организовать цикл.
{
int n=0;
m1:
PORTB.0=1;
delay_us(630); //Задержка в мкс.
PORTB.0=0;
delay_us(630); //Задержка в мкс.
n=n+1;
if(n>=10)goto m2;
goto m1;
}
m2: //Частота 9кГц.
PORTB.0=1;
delay_us(56); //Задержка в мкс.
PORTB.0=0;
………………………………….
}
}
}