Реклама ⓘ
Главная » Начинающим
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Микроконтроллеры AVR для начинающих - 1

Микроконтроллеры (далее МК) прочно вошли в нашу жизнь, на просторах интернета можно встретить очень много интересных схем, которые исполнены на МК. Чего только нельзя собрать на МК: различные индикаторы, вольтметры, приборы для дома (устройства защиты, коммутации, термометры…), металлоискатели, разные игрушки, роботы и т.д. перечислять можно очень долго. Первую схему на микроконтроллере я увидел лет 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
Распиновка ATmega 8X

Расположение выводов моделей ATmega48x, 88x, 168x
Распиновка ATmega48x, 88x, 168x

Расположение выводов у моделей ATmega8515x
Распиновка ATmega8515x

Расположение выводов у моделей ATmega8535x
Распиновка ATmega8535x

Расположение выводов у моделей ATmega16, 32x
Распиновка ATmega16,32x

Расположение выводов у моделей ATtiny2313
Распиновка 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 - Вход МК (тактовый сигнал в МК)

ATmega8

Иногда еще используют вывода 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

Теги:

Романов А.С Опубликована: 2012 г. 0 10
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (23) | Я собрал (0) | Подписаться

0
streetboy163 #
Спасибо за статью. Я как раз начинаю осваивать микроконтроллеры. Только мне не понятно одно, если можно прошить МК без фьюзов, он будет работать? Тогда для чего они нужны?
Ответить
+2
Андрей #
Фьюзы задают конфигурацию контроллера
То есть чем будет тактироваться МК (от внутреннего генератора или от внешнего кварца), какой квац будет (низко-, средне- или высокочастотный), будет ли делится тактовая частота на 8, использование входа Reset по прямому назначению или как дополнительный порт ввода-вывода и т.п.
Ответить
0
Filipp #
МК без фьюзов прошивать рекомендуется только на первый раз, например проверить, работает ли устройство целиком. Простенькие схемы будут и без фьюзов работать, но фьюзы шить надо, они активируют порты, настраивают частоту кварца, внешний или внутренний. Если не выставить фьюзы, то У МК могут не работать некоторые порты, если не выставить фьюзы на работу кварца - МК будет тормозить, и так далее.
Ответить
0
Rhime #
Кто вам сказал этот бред?
Ответить
0
Адвансед #
Что конкретно из написанного им вы считаете бредом? Все именно так и есть, МК без фьюзов шить можно, некоторые проекты работают и без фьюзов (конечно смотря, что за фьюзы)
Ответить
0
shamil2012 #
Начал собирать одно устройство на атини2313, не могу найти у него вывод sck для программирования, он не используется или там какой то другой вывод надо использовать?
Ответить
0
Адвансед #
У Attiny2313 SCK это 19 нога.
Ответить
0
АНДРЕЙ КАЛ #
Изначально там стоят фьюзы завода изготовителя и вполне возможно, что их не надо выставлять.
Ответить
0
BOSS #
Статья неплохая. Я бы добавил, что меги которые работают на 16MHz могут спокойно работать на 27MHz практически без ошибок (да новичку то это и не нужно).
И максимальное напряжение 5v5, а не 6v. К питанию различной логики нужно относиться аккуратно. Но правда ВСЕ контроллеры отлично работают от 3v3.
Я бы ещё привёл не только меги, но и тиньки. Они проще, дешевле.
Ответить
+1
Матин Алексей #
Только вчера собрал кое-какую схемку из журнала, на ATtiny2313. Так вот, там стоит кварц на 20 МГц - значит, по уму, туда нужно ставить МК с индексом 20PU в конце маркировки. Я запихал туда ATtiny2313-10PU (другого не было), т.е. максимальная тактовая частота, на которую расчитан этот МК, казалось бы, вдвое ниже той, на которой он работает в схеме - и ничего, полет нормальный! Притом, что 10PU традиционно дешевле, чем 20PU. И это не первый случай, когда я так делал... Вообще-то, ситуация здесь, видимо такая же, как когда-то была с процессорами AMD - корпорации нужно было занять нишу бюджетных процессоров, и они решили не париться и стали просто писать 200 МГц на проциках под 350 МГц (кому-то повезло). Сомневаюсь я, что Atmel держит две линии, на которых плавят совершенно одинаковые камни, которые различаются только максимальной тактовой частотой - скорее всего, фирме просто хочется наварить пару центов на маркировке, вот и идут они проторенной AMD дорогой... Маркетинг, панимашь...
Ответить
0
андрей #
Хотелось бы визуально понять различия между: регистром, пином, линией порта. Нигде не встречал картинки с внятным подробным описанием.
Ответить
0
Валерий #
Прошу помочь:
Нужно, чтобы на выходе порта В в течении определенного времени, допустим 10 сек, была частота 800 Гц, затем она должна меняться. Не могу правильно организовать цикл.
// Частота 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;
………………………………….

}
}
}
Ответить
0
Ivan #
n=10 - это 10 циклов, а не секунд. 10 секунд - это 8000 циклов.
Ответить
0
Олег #
С МК только знакомлюсь. У меня мега8 в TQFP корпусе (квадратная). В даташите по нескольку ног VCC(4,6) и GND (3,5,21). Их все обязательно подключить к + и - соответственно, или есть только два вывода обязательных?
Ответить
0
TiC #
Лучше подключить соответствующие ноги к выводам
Ответить
0
Igor #
Обязательно все. Иначе могут быть проблемы.
Ответить
+1
Виталий #
Неверно! Все ноги нужно подключать лишь в случае использования МК на полную мощность.
Ответить
0
Александр #
Пробовал подключать Атмеги 8, 16, установленные на платах для внутрисхемной прошивки через lpt, com и usb-программатор. Везде ответ: не бнаружен или неизвестный device. Остается еще подключить генератор, как советуют в инете
Ответить
0
Алексей #
Про самые популярные ATmega168 и ATmega328 ничего нет
Ответить
0
liktrik #
Тоже только только начинаю изучать микроконтроллеры. Мужики, посоветуйте пожалуйста. Я стою перед выбором: С какого начинать? Аттини или Атмега?
Ответить
0
Олег #
Как определять адрес внешней памяти AVR ATmega128 при работе с модбас, модбас имеет 16-й регистр к примеру с адресом 0x0001 а при чтении из внешнего ОЗУ имеем два слова с адресами 01 и 10. Как вычислять адреса регистров модбас
Ответить
0
AdmiralBlack #
Подскажите пожалуйста есть микроконтроллер, Atmel ATmega128A, как его ресетнуть? И при физическом ресете удалится вся прошивка или нет? "Завис" он немного.
Ответить
0
coach2812 #
Очень полезная тема. ТС респект
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Набор начинающего радиолюбителя
Набор начинающего радиолюбителя
Мультиметр DT9205A USB-реле (2 канала)
вверх