Программирование атмега8 для начинающих: Пошаговая инструкция программирования микроконтроллеров atmega8. Микроконтроллеры Atmega8. Программирование Atmega8 для начинающих. Обучение и совершенствование навыков

Содержание

мир электроники — Программирование для начинающих. часть1

материалы в категории

Начинающим о AVR микроконтроллерах

Микроконтроллеры (далее мы их просто будем называть МК) завоевывают все большую популярность у радиолюбителей. С их помощью можно собрать практически все что угодно- индикаторы, вольтметры, приборы для дома (устройства защиты, коммутации, термометры…), металлоискатели, разные игрушки, роботы и т.д. перечислять можно очень долго….

В этих статьях мы постараемся изучить микроконтроллеры AVR фирмы ATMEL, научимся работать с ними, рассмотрим программы для прошивки, изготовим простой и надежный программатор, рассмотрим процесс прошивки и самое главное проблемы, которые могут возникнуть( и не только у новичков).

Основные параметры микроконтроллеров семейства AVR

Дополнительные параметры МК AVR mega:

Рабочая температура: -55…+125*С
Температура хранения: -65…+150*С
Напряжение на выводе RESET относительно GND: max 13В
Максимальное напряжение питания: 6.
Максимальный ток линии ввода/вывода: 40мА
Максимальный ток по линии питания VCC и GND: 200мА

Цоколевка выводов моделей ATmega 8X

Цоколевка выводов моделей ATmega48x, 88x, 168x

Цоколевка выводов ATmega8515x

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

Цоколевка выводов у моделей ATmega16, 32x

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

В конце статьи, во вложении, есть даташиты на некоторые микроконтроллеры

Установочные FUSE биты MK AVR

запрограммированный фьюз – это 0, не запрограммированный – 1. Осторожно стоит относиться к выставлению фьюзов, ошибочно запрограммированный фьюз может заблокировать микроконтроллер. Если вы не уверены какой именно фьюз нужно запрограммировать, лучше на первый раз прошейте МК без фьюзов.

Самыми популярными микроконтроллерами у радиолюбителей являются ATmega8, затем идут ATmega48, 16, 32, ATtiny2313 и другие. Микроконтроллеры продаются в TQFP корпусах и DIP, новичкам рекомендую покупать в DIP. Если купите TQFP, будет проблематичнее их прошить, придется купить или изготовить переходник и паять плату т.к. у них ножки располагаются очень близко друг от друга. Советую микроконтроллеры в DIP корпусах, ставить на специальные панельки (сокеты), это удобно и практично, не придется выпаивать МК если приспичит перепрошить, или использовать его для другой конструкции.

Почти все современные МК имеют

Для программирования используется 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).

На этом закончим, пока можете выбрать в интернете понравившуюся схему и изучить ее, можете заодно сходить и купить нужный микроконтроллер. Далее мы будем собирать простой и надежный программатор, познакомимся с программами для прошивания и попробуем прошить МК.

Программирование AVR урок 1 — введение

Всем привет. Как и обещал, с сегодняшнего дня начинаем изучать программирования AVR микроконтроллеров (на примере Atmega8). Тем же читателям, которым интересно программирование платы ардуино, не волнуйтесь, статьи по данному направлению будут продолжаться 🙂 .

Можно задать логичный вопрос, почему из ряда других микроконтроллеров (далее — МК) в качестве подопытного выбран именно МК AVR. На это есть несколько причин:

  • МК AVR повсеместно доступны;
  • У них достаточно невысокая цена;
  • В интернете можно найти много бесплатных программ, что помогут при работе с данными МК.
  • Кроме этого, существует великое множество написанных статей и форумов, на которых можно задать вопросы по данным МК AVR.

Как говорил ранее, в качестве подопытного будем использовать МК Atmega8. Почему именно его?

Данный микроконтроллер может похвастаться наличием 3 портов ввода/вывода. Кроме этого он довольно дешевый.

Под портами, понимают шины данных, которые могут работают в двух противоположных направлениях (то бишь на вывод и на ввод).

У Atmega8 3 порта. Порт B состоит из 8 ножек-выводов (нумерация 0,1,2,3,4,5,6,7). Порт С состоит из 7 ножек-выводов (нумерация 0,1,2,3,4,5,6). Порт D состоит из 8 ножек-выводов (нумерация 0,1,2,3,4,5,6,7).

Запитывать микроконтроллер можно от 3,3 и 5 В. При напряжении питания 5 В максимальная частота тактирования составляет 16 МГц, а при напряжении питания 3,3 В – максимальная частота тактирования 8 МГц. Пока не будем заморачиваться относительно частот тактирования.

Питания подаётся на 7 ножку-вывод, а «земля» подводится к 8 ножке.

Несколько слов о программной среде (далее — ПС) для работы с МК AVR. Для данный марки МК существует специальная ПС Atmel Studio.

Скачивается бесплатно. Скачали, установили, запустили 🙂

Первое, с чего следует начать знакомство с Atmel Studio – это создание проекта.

Выбираем File — new — project .

Откроется окно выбора. Выбираем папку «Browse», в которой будем сохранять написанные проекты. Папку для проектов создал заранее.

Присваиваем имя проекту, в моём случае lesson_avr_1

Обратите внимание на галочку «create directory for solution». Если отметка стоит, то в той папке, которую мы выбрали для сохранения проектов, будет создана отдельная папка под текущий проект.

Дальше появится окно выбора микроконтроллера. В поисковой строке пишем Atmega8. В информационном окне есть ссылка на datasheet для данной модели МК.

На этом всё – проект создан.

Займемся настройкой созданного нами проекта. Нажимаем Projest — lesson_avr_1 properties или (alt+F7)

Переходим на вкладку Tool. Выбираем – симулятор. Совершенные нами действия сделают возможным отлаживать написанный код. Сохраняем изменения. Можно сохранить изменения в одном (текущем) файле или же во всех файлах проекта сразу. Закрываем настройки.

Комментарии бывают двух видов, с помощью одних можно «закомментировать» одну строку, а с помощью других «закомментировать» целые куски кода.

  • /*…………………*/ — текст между указанными границами;
  • // одна строка;

Откомпилируем проект (соберём его). Нажмём «build solution» или F7.

После удачной компиляции мы увидим следующее сообщение)

На этом пока всё. Продолжении следует)

Набор начинающего микроконтроллерщика | Мир микроконтроллеров

Стартовый набор микроконтроллерщика

Стартовый набор микроконтроллерщика состоит из 24 позиций радиоэлектронных и вспомогательных компонентов и предназначен для практического изучения устройства и программирования микроконтроллеров AVR.

Покупая Стартовый набор в интернет-магазине МирМК Вы получаете не только основу для качественного изучения устройства и программирования микроконтроллеров AVR семейств ATmega и ATtiny, базу для сборки и тестирования своих проектов, но и сопровождение — с января 2019 года на сайте Мир микроконтроллеров начнется публикация серии статей по программированию микроконтроллеров в среде ATMEL STUDIO для начинающих микроконтроллерщиков на языке высокого уровня С и языке низкого уровня — Ассемблер. Надеюсь, что я смогу Вам помочь в изучении устройства микроконтроллеров AVR и в их программировании.
Набор составлен исходя из соображений минимальной достаточности и относительно не высокой стоимости, а главное — иметь под рукой все необходимое для первого шага (да и для последующих тоже) в мир микроконтроллеров.

Стартовый набор микроконтроллерщика идеальный подарок для Ваших близких и друзей. Освоение микроконтроллеров и языков программирования большое подспорье на будущее — специальность программиста на рынке труда очень востребована и очень хорошо оплачиваемая.

Состав набора:

Основа набора — микроконтроллеры ATmega8А-16PU (или ATmega8-16PU), ATtiny2313А-PU и малыш ATtiny13A-PU — наиболее популярные в любительских проектах:

1. Микроконтроллер ATmega8A-PU — 1 шт
2, Микроконтроллер ATtiny2313A-PU — 1 шт
3. Микроконтроллер ATtiny13A-PU — 1 шт
Простой и надежный программатор, который будет использоваться и как источник питания проектов
4. Программатор USBASP AVR — 1 шт
Преоразователь USB — UART (RS232) TTL собран на новом чипе PL2303TA и предназначен для общения микроконтроллера с персональным компьютером:
5. Конвертер USB — UART (RS232) TTL, PL2303ТА
Качественная макетная плата МВ-102 (720 точек), желательно иметь 2 такие платы — они жестко стыкуются между собой и позволят собирать и тестировать более громоздкие проекты, если бюджет позволяет — покупайте вторую плату, не пожалеете:
6. Макетная плата для монтажа без пайки — 1 шт
П-образные и гибкие перемычки папа-папа, мама-мама (мама-папа) предназначены для соедения деталей на макетной плате и подключения внешних устройств

7. Соединительные перемычки гибкие к макетной плате папа-папа — 1 к-т
8. Соединительные перемычки гибкие мама-мама (или мама-папа)- 10 шт
9. Соединительные П-образные перемычки к макетной плате — 1 к-т
Семисегментный светодиодный и буквенно-цифровой индикаторы (в дальнейшем, как и все что перечисленно ниже, можно использовать в своих проектах):

10. Индикатор семисегментный четырехразрядный, ОА (или ОК), -1 шт
11. Буквенно-цифровой LCD индикатор 1602А, 2 строки по 16 символов, латинский шрифт, совместимость с HD44780, питание 5 Вольт — 1 шт (набор комплектуется одним из двух индикаторов, по наличию: или белый шрифт на темно-синем фоне с подсветкой, или черный шрифт на светло-зеленом фоне с подсветкой)
Транзисторы биполярные NPN и PNP структуры:
12. Транзисторы ВС557В — 5 шт

13.Транзисторы ВС547В — 5 шт
Датчики, микросхемы, RTC, светодиоды, кнопки, кварцы, резисторы:

14. Датчик температуры DS18В20 — 1 шт

15. Часы реального времени DS1307DIP — 1 шт
16. Регистр сдвига SN74HC595N — 1 шт

17. Кварц HC-49S 8 МГЦ — 1 шт

18. Кварц HC49UC 32,768 кГц 12,5 pF — 1 шт

19. Светодиод 3(5) мм — 8 шт

20. Кнопка тактовая двухконтактная 6*6*5 — 5 шт

21. Набор резисторов (30 номиналов по 10 шт)
22. Резистор подстроечный 10 кОм (для LCD) — 1 шт
23. Конденсатор керамический 22pF (для кварцев) — 2 шт
24. Штыревая линейка однорядная PLS20 (для LCD) — 1 шт

Советы начинающим программистам микроконтроллеров / Хабр

Очень давно хотелось поделиться своим опытом, с начинающими радиолюбителями, потому что об этом пишут очень мало и разрозненно. Мой опыт не хороший, не плохой, он такой какой есть. С некоторыми утверждениями вы в праве не согласиться и это нормально, ведь у каждого свое видение ситуации. Цель данного материала, обратить внимание читателя на некоторые вещи, что то взять на заметку и сформировать собственное мнение и видение ситуации, ни в коем случае нельзя воспринимать это как истину.

1. Многие начинающие электронщики не знают с чего начать

, поэтому спрашивают совета. Большинство бывалых радиолюбителей ответят, что начни собирать какую нибудь схему. Естественно в голове любого начинающего сразу мелькает LCD дисплей с jpeg картинками, какой нибудь mp3 плеер или часы, без малейшей мысли о том, что не имея базовых знаний это неподъемная задача.

Я категорически против такого подхода. Обычно это все заканчивается — либо ничем, либо забитые форумы с мольбами помочь. Даже если кому то помогают, то в 90% он больше никогда не всплывет на сайтах по электронике. В остальных 10% он так и продолжает заливать форумы мольбами, его будут сначала пинать, затем поливать грязью. Из этих 10% отсеивается еще 9%. Далее два варианта: либо таки до глупой головы доходит и все же происходит goto к началу, либо в особо запущенных вариантах, его удел копировать чужие конструкции, без единой мысли о том как это работает. Из последних зачастую рождаются ардуинщики.

Путь с нуля на мой взгляд заключается в изучении периферии и особенностей, если это микроконтроллер. Правильнее сначала разобраться с тем как дрыгать ножками, потом с таймерами, затем интерфейсами. И только тогда пытаться поднимать свой FAT. Да это не быстро, да это потребует времени и усилий, но практика показывает, как бы вы не пытались сократить этот путь, все равно всплывут проблемы, которые придется решать и время вы потратите куда больше, не имея этой базы.

Только не нужно путать теплое и мягкое. Первое — из всех правил есть исключения, лично видел людей, которые в руках раньше не держали микроконтроллеров, но за крайне короткий срок смогли обскакать бывалых опытных радиолюбителей, их в расчет не берем. Второе — мне попадались личности, которые начинали с копирования схем и сходу разбирались, но скорее это тоже исключение из правил. Третье — и среди ардуинщиков попадаются опытные программисты, это ведь всего навсего платформа, но и это скорее исключение.

Если говорить об общей массе, то дела обстоят именно так как я описал вначале: нежелание разбираться с основами, в лучшем случае оттягивает момент того, когда придется вернуться к этим вопросам. В худшем случае, вы быстро упретесь в потолок своих знаний и все время винить в своих проблемах кого то другого.

2. Перед решением задачи, дробите ее до абсурда вплоть до «припаять резистор», это помогает, проверено. Мелкие задачи решать куда проще. Когда большая задача разбита на кучу мелких действий, то все что остается — это выполнить их. Могу привести еще один годный совет, хоть он вам и покажется бредовым — заведите блокнотик и пишите в него все что собираетесь сделать. Вы думаете, итак запомню, но нет. Допустим сегодня у меня хорошее настроение и думаю о том, как собрать плату. Запиши план действий: сходить купить резистор, подготовить провода, сделать крепление дисплея. Потом все забудешь, откроешь блокнотик и смотришь — ага сегодня настроение попилить и построгать, сделаю крепление. Или собираешь ты плату и уже осталось допаять последний компонент, но не тут то было резисторы кончились, вот записал бы перед тем как паять, то вспомнил.

3. Не пользуйтесь кодогенераторами, нестандартными фичами и прочими упрощалками, хотя бы на первых этапах. Могу привести свой личный пример. Во времена активного использования AVR я пользовался кодогеном CAVR. Меня он полностью устраивал, хотя все говорили, что он кака. Звоночки звенели постоянно, были проблемы с библиотеками, с синтаксисом, с портированием, но было тяжело от этого отказаться. Я не разбирался как это работает, просто знал где и как поставить галочки.

Кол в мой гроб был вбит с появлением STM32, нужно было обязательно переползать на них, вот тогда то и появились проблемы. Проблемы мягко сказано, фактически мне пришлось осваивать микроконтроллеры и язык Си с нуля. Больше я не повторял прошлых ошибок. Надо сказать это уже пригодилось и не один раз. С тех пор мне довелось поработать с другими платформами и никаких затруднений не испытываю, подход оправдывает себя.

По поводу всех улучшалок и упрощалок, было одно очень хорошее сравнение, что они подобны инвалидным коляскам, которые едут по рельсам, можно ехать и наслаждаться, но вставать нельзя, куда везут — туда и приедешь.

4. Изучайте язык Си. Эх, как же часто я слышу, как начинающие радиолюбители хвалятся, что хорошо знают сишку. Для меня это стало кормом, всегда люблю проконсультироваться у таких собеседников. Обычно сразу выясняется, что язык они совершенно не знают. Могу сказать, что не смотря на кажущуюся простоту, людей которые действительно хорошо бы его знали, встречал не так много. В основном все его знают на столько, на сколько требуется для решения задач.

Однако, проблема на мой взгляд заключается в том, что не зная возможностей, вы сильно ограничиваете себя. С одной стороны не оптимальные решения, которые потребуют более мощного железа, с другой стороны не читаемый код, который сложно поддерживать. На мой взгляд, читаемость и поддерживаемость кода занимает одно из важнейших мест и мне сложно представить, как можно этого добиться не используя все возможности языка Си.

Очень многие начинающие брезгуют изучением языка, поэтому если вы не будете как все, то сразу станете на две ступени выше остальных новичков. Так же не никакой разницы, где изучать язык. На мой взгляд, микроконтроллер для этого не очень подходит. Гораздо проще поставить какую нибудь Visual studio или Qt Creator и порешать задачки в командной строке.

Хорошим подспорьем будет также изучение всяких тестов по языку, которые дают при собеседованиях. Если порыться то можно много нового узнать.

5. Изучение ассемблера? Бояться его не нужно, равно как и боготворить. Не нужно думать, что умея написать программу на ассемблере, вы сразу станете гуру микроконтроллеров, почему то это частое заблуждение. В первую очередь это инструмент. Даже если вы не планируете использовать его, то все равно я бы настоятельно рекомендовал написать хотя бы пару программ. Это сильно упростит понимание работы микроконтроллера и внутреннего устройства программ.

6. Читайте даташит. Многие разработчики, пренебрегают этим. Изучая даташит вы будете на две ступени выше тех разработчиков. Делать это крайне полезно, во первых это первоисточник, какие бы сайты вы не читали, в большинстве случаев они повторяют информацию из даташита, зачастую с ошибками и недосказанностями. Кроме того, там может находиться информация, о которой вы не задумываетесь сейчас, но которая может пригодиться в будущем. Может статься так, что вылезет какая то ошибка и вы вспомните что да, в даташите об этом было сказано. Если ваша цель стать хорошим разработчиком, то этого этапа не избежать, читать даташиты придется, чем раньше вы начнете это делать, тем быстрее пойдет рост.

7. Часто народ просит прислать даташит на русском. Даташит — это то, что должно восприниматься как истина, самая верная информация. Даже там не исключены ошибки. Если к этому добавятся ошибки переводчика, он ведь тоже человек, может даже не нарочно, просто опечататься. Либо у него свое видение, может что-то упустить, на его взгляд не важное, но возможно крайне важное для вас. Особенно смешной становится ситуация, когда нужно найти документацию на не сильно популярные компоненты.

На мой взгляд, намного проще исключить заранее весь слой этих проблем, чем вылавливать их потом. Поэтому я категорически против переводов, единственный верный совет — изучайте английский язык, чтобы читать даташиты и мануалы в оригинале. Понять смысл фразы с помощью программ переводчиков можно, даже если уровень вашего языка полный ноль.

Мною был проведен эксперимент: в наличии был студент, даташит и гугл переводчик. Эксперимент №1: студенту вручен даташит и дано задание самостоятельно найти нужные значения, результат — «да как я смогу», «да я не знаю английский», «я ничего не нашел/я не понял» типичные фразы, говорящие о том, что он даже не пытался. Эксперимент №2: тому же студенту, вручен все тот же даташит и тоже задание, с той разницей, что я сел рядом. Результат — через 5 минут он сам нашел все нужные значения, абсолютно без моего участия, без знания английского.

8. Изобретайте велосипед. Например, изучаете какую то новую штуку, допустим транзистор, дядька Хоровиц со страниц своей книги авторитетно заявляет, что транзистор усиливает, всегда говорите — НЕ ВЕРЮ. Берем в руки транзистор включаем его в схему и убеждаемся что это действительно так. Есть целый пласт проблем и тонкостей, которые не описываются в книгах. Прочувствовать их можно только, когда возьмешь в руки и попробуешь собрать. При этом получаем кучу попутных знаний, узнаем тонкости. Кроме того, любая теория без практики забудется намного быстрее.

На первоначальном этапе, мне очень сильно помог один метод — сначала собираешь схему и смотришь как она работает, а затем пытаешься найти обоснование в книге. То же самое и с программной частью, когда есть готовая программа, то проще разобраться в ней и соотнести куски кода, какой за что отвечает.

Также важно выходить за рамки дозволенного, подать побольше/поменьше напряжение, делать больше/меньше резисторы и следить за изменениями в работе схемы. В мозгу все это остается и оно пригодится в будущем. Да это чревато расходом компонентов, но я считаю это неизбежным. Первое время я сидел и палил все подряд, но теперь перед тем как поставить тот или иной номинал, всегда вспоминаю те веселые времена и последствия того, если поставить неверный номинал.

9. А как бы я сделал это, если бы находился на месте разработчиков? Могу ли я сделать лучше? Каждый раз задавайте себе эти вопросы, это очень хорошо помогает продвигаться в обучении. Например, изучите интерфейсы 1wire, i2c, spi, uart, а потом подумайте чем они отличаются, можно ли было сделать лучше, это поможет осознать почему все именно так, а не иначе. Так же вы будете осознавать, когда и какой лучше применить.

10. Не ограничивайтесь в технологиях. Важно что этот совет имеет очень тонкую грань. Был этап в жизни, когда из каждой подворотни доносилось «надо бы знать ПЛИС», «а вот на ПЛИС то можно сделать». Формально у меня не было целей изучать ПЛИСины, но и пройти мимо было никак нельзя. Этому вопросу было выделено немного времени на ознакомление. Время не прошло зря, у меня был целый ряд вопросов, касаемых внутреннего устройства микроконтроллеров, именно после общения с плисинами я получил ответы на них. Подобных примеров много, все знания, которые я приобретал в том или ином виде, рано или поздно пригодились. У меня нет ни единого бесполезного примера.

Но как было сказано, вопрос технологий имеет тонкую грань. Не нужно хвататься за все подряд. В электронике много направлений. Может вам нравится аналог, может цифра, может вы специалист по источникам питания. Если не понятно, то попробуйте себя везде, но практика показывает, что вначале лучше сконцентрироваться на чем то конкретном. Даже если нужно жать в нескольких направлениях, то лучше делать это ступеньками, сначала продавить что то одно.

11. Если спросить начинающего радиолюбителя, что ему больше нравится программирование или схемотехника, то с вероятностью 99% ответ будет программирование. При этом большую часть времени эти программисты тратят на изготовление плат ЛУТом/фоторезистом. Причины в общем то понятны, но довольно часто это переходит в некий маразм, который состоит в изготовлении плат ради изготовления плат.

В интернетах практически единственный трушный путь к программированию это стать джедаем изготовления печатных плат. Я тоже прошел через этот путь, но каждый раз задаю себе вопрос зачем? С тех пор, как я приобрел себе пару плат, на все случаи жизни, каждый раз думаю о том, что мог бы спокойно прожить все это время без самодельных плат. Мой совет, если есть хоть капля сомнений, то лучше не заморачиваться и взять готовую отладочную плату, а время и средства лучше бы потратить на программирование.

12. Следующий совет, особенно болезненный, мне очень не хочется его обсуждать, но надо. Часто мне пишут, мол ххх руб за ууу дорого, где бы подешевле достать. Вроде бы обычный вопрос, но обычно я сразу напрягаюсь от него, так как зачастую он переходит в бесконечные жалобы на отсутствие денег. У меня всегда возникает вопрос: почему бы не оторвать пятую точку и не пойти работать? Хоть в тот же макдак, хоть на стройку, потерпеть месяц, зато потом можно приобрести парочку плат, которых хватит на ближайший год. Да я знаю, что маленьких городах и селах сложно найти работу, переезжайте в большой город. Работайте на удаленке, в общем нужно крутиться. Просто жаловаться нет смысла, выход из ситуации есть, кто ищет его тот находит.

13. В ту же копилку внесу очень болезненный вопрос инструмента. Инструмент должен позволять вам максимально быстро разрабатывать устройства. Почему то очень многие разработчики не ценят свое время. Типичный пример, дешевая обжимка для клемм, на которой так любят экономить многие работодатели. Проблема в том, что она даже обжимает не правильно, из-за этого провода вываливаются. Приходится производить кучу дополнительных манипуляций, соответственно тратить время. Но как известно дурак платит трижды, поэтому низкая цена кримпера возрастет во много раз, за счет затрачиваемого времени и плохого качества обжима.

Не говорю что дешевое = плохое, нет — все зависит от ситуации. Вернусь к примеру кримпера, было время когда обжимал чем попало, поэтому часто возникали проблемы. Особенно неприятно, когда заводишь плату и она не работает, после долгих поисков ошибки понимаешь что из-за плохо обжатого проводочка, обидно. С тех пор как появилась нормальная обжимка этих проблем нет. Да внутренняя жаба и квакала, и душилась от ее стоимости, но ни разу не пожалел об этом решении. Все что я хочу сказать, что поработав с нормальным инструментом, совершенно не хочется возвращаться к плохому, даже не хочется обсуждать это. Как показывает практика, лучше не экономить на инструментах, если сомневаетесь — возьмите у кого нибудь потестить, почитайте отзывы, обзоры.

14. Заведите сайт, можно писать на нем, что угодно, просто как записки. Практика показывает, что работодатели все равно его не читают, но сам факт производит большой эффект.

15. Тонкий вопрос: профильное высшее образование, нужно ли оно? Мне известны не единичные случаи, когда люди работали абсолютно без образования и по опыту и знаниям они могли дать прикурить любому дипломированному специалисту. Собственно, у меня нет профильного образования, испытываю ли я от этого дискомфорт? В определенной степени да.

Еще в самом начале, когда микроконтроллеры были для меня хобби, я много помогал с курсовыми и дипломами разных вузов, просто чтобы оценить свой уровень. Могу сказать уверенно, что уровень в целом невысок вне зависимости от имени вуза. Учиться несколько лет, для того чтобы написать такой диплом, совершенно необязательно. Достигнуть этого можно самостоятельно за весьма короткий срок. И все же зачастую бывали моменты, когда студенты знали какой то предмет, который они проходили на 2-3 курсе, а я этого не знал. Хоть все эти знания и компенсировались самообразованием, но все же лучше было бы не тратить на это время.

Вуз ради бумажки. Могу сказать, что были и такие ситуации, когда предлагали работу, которая требовала обязательного наличия образования и было обидно, что именно в тот момент бумажки не было. Но в целом, история показывает, что большинству работодателей наплевать на вашу бумажку.

Следующий момент довольно часто не учитывается, это окружение. Не забывайте, что люди, с которыми вы учитесь это ваше поколение, не исключено что вам с ними работать. Количество фирм работающих в одной отрасли сильно ограничено. Практика показывает, что даже в больших городах все и все друг о друге знают, вплоть до интимных подробностей.

Еще один момент это возможности. Зачастую у вузов есть свои возможности — оборудование, может какие то секции, может какие то программы работы за рубежом, этим нужно пользоваться, если есть хоть малейшая возможность. Если в вузе вы не видите перспективы, идите в другой, мир на каком то одном не заканчивается.

Если подытожить то совет таков: если есть хоть малейшая возможность — нужно идти учиться, обязательно по профилю, если есть хоть какие то шансы, то лезть везде, а не отсиживать штаны на задней парте. Заводить знакомства, параллельно дома самому практиковаться, развиваться.

16. Поздно ли начинать программировать в 20, 30, 40, 50 лет? Практика других людей показывает, что возраст вообще не помеха. Многие почему то не учитывают то, что есть целый пласт работы, которую молодые в силу своих амбиций не хотят делать. Поэтому работодатели предпочитают брать тех, кто будет ее тащить. Это ваш шанс зацепиться, а дальше все зависит только от вас.

И последний совет. Многие радиолюбители необщительные, сердитые и раздражительные — считайте это спецификой работы. Излучайте добро и позитив, будьте хорошим человеком.

cxema.org — Прошивка микроконтроллеров AVR

Не редко, в радиолюбительской практике, возникает необходимость в прошивке микроконтроллера семейства AVR. Для себя я решил эту проблему изготовлением простейших программаторов под самые ходовые микроконтроллеры среди радиолюбителей, для ATMEGA8 и ATtyny2313. Схема программатора очень проста, при его изготовлении не возникнет проблем даже у начинающего радиолюбителя.

Программатор подключается к COM порту компьютера, для питания микроконтроллера требуется внешний источник питания. Я для этих целей спаял шнур, позволяющий запитывать микроконтроллер от порта USB того же компьютера.

Этим программатором можно прошить любой микроконтроллер семейства AVR, достаточно подключить выходы программатора к соответствующим ножкам микроконтроллера:

Для прошивки AVR микроконтроллеров я использую специализированную программу PonyProg.

При первом включении программы, требуется указать программе используемый нами программатор и куда мы его подключили, для этого, заходим в настройки оборудования,

выбираем последовательный порт, тип программатора — SI Prog API, выбираем COM порт, в который воткнули программатор, и жмём кнопку Проверка, Если всё сделали правильно, появится соответствующее окошко. Если нет, ищите ошибки в монтаже.

После удачно пройденого теста необходимо пройти калибровку программы под ваш компьютер, для этого выбираем соответствующий пункт меню в разделе настроек. В появившемся оне жмём утвердительно кнопку Да.

Об окончании калибровке программа сообщит соответствующим появившемся окошком. Эта процедура проводиться только один раз, при первом подключении программатора к компьютеру, и в дальнейшем проводить не требуется. Что бы убедиться в работоспособности программатора на панели выбираем семейство AVR micro, тип подключенного микроконтроллера, в моём случае ATmega8, и жмём кнопку Читать содержимое устройства.

Начнётся процесс чтения, и по окончании программа выдасть код, содержащийся в памяти микроконтроллера. Если микроконтроллер новый, память будет забита единицами. В шеснадцатеричном коде — FF.

Для записи в микроконтроллер необходимого кода жмём на кнопку Открыть содержимое устройства из файла, выбираем необходимый HEX файл и жмём открыть.

Программа отобразит открытый код. Далее жмём кнопку Запись устройства.

В появившемся окне жмём ДА. Начнётся процесс записи.

Потом проверки, и в случае успешной записи, программа выдаст соответствующее сообщение.

Некоторые авторы выкладывают прошивку не целиком, а по отдельности. Отдельно область программ и отдельно область данных. То же самое, но для чтения и записи используются соседние кнопки с буквами P (программа) и D (данные). Файлы могут иметь расширение не HEX, а e2p.

Теперь настал самый ответственный момент, требующий особого внимания, это запись битов конфигурации (fuse bits). Для этого жмём кнопку с замком Биты конфигурации и защиты. Откроется соответствующее окно, в котором необходимо расставить птички так, как рекомендует автор устройства, которое вы повторяете.

После чего жмём ОК, начнётся запись конфигурации.

Это самый ответственный момент, из-за неправильно установленных битов конфигурации можно заблокировать микроконтроллер, и его работа может быть неправильная, а перепрограммирование будет возможно лишь на параллельном программаторе, конструкция которогог довольно сложна. Все авторы работают с разными программами, в которых биты конфигурации выставляются по разному. Для примера, теже биты конфигурации, но в программе Algorithm Builder

Обратите внимание, биты конфигурации выставлены инверсно!

Что бы не возникало вопросов, как надо выставлять фьюзы, перед изменением битов жмём кнопку Читать и смотрим на бит SPIEN, по умолчанию он всегда включен. Этот бит разрешает последовательное программирование. В PonyProg он специально заблокирован, что бы его случайно не выключить. Сравнивая этот бит в статье автора и со своей программой делаем выводы, как надо ставить биты, инверсно или нет, так как у автора он тоже включен!

Существуют программаторы, подключаемые к USB разъёму компьютера, собрал и я себе такой

Сразу же возникли проблемы с драйверами под windows7. Так же проблемы с софтом, так как не каждая программа умеет с ним работать. Пробовал разные версии прошивок программатора, различные варианты разных авторов, но всё таки отложил его в сторону.

Плата программатора для ATmega8 в формате lay тут

Программатор USBASP — Инструменты — AVR project.ru

Решил заменить свою рабочую лошадку STK200+PonyProg, на нечто более современное, легко собираемое и обязательно поддерживающее подключение по USB. Выбор пал на хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48) . Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку. Еще одним плюсом программатора является то, что благодаря большой популярности он приобрел поддержку во многих средствах разработки, в том числе и в Bascom-AVR начиная с версии 1.11.9.6. И поэтому консольность программы, с которой он работал первоначально, перестала быть отпугивающим моментом для начинающих.

Схема программатора USBASP под микроконтроллер Atmega8 в корпусе TQFP32 приведена ниже (обратите внимание, что распиновка микроконтроллера отличается от распиновки в корпусе DIP):

Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дергую а постоянно шью с ней.

Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования.
Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-и пинового ISP разъема:

На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз.
Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки.
Плата получилась двухсторонняя, размерами 45х18 мм.

Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это учень удобно

Прошивка управляющего микроконтроллера

Прошивать, как я писал выше, можно с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку под свой тип контроллера можно скачать ниже:

Для работы устройства необходимо настроить фьюзы на внешний кварц 12МГц. В PonyProg настройка фьюзов будет выглядеть следующим образом:

После прошивки должен загореться светодиод подключенный к 23 ноге микроконтроллера. В случае если программа в память микроконтроллера зашита, а фьюзы не выставлены светодиод также загориться, поэтому
незабываем
прошивать фуз-биты.

Установка драйвера

Установка велась на машину с системой Windows 7 и никаких проблем не возникло.
При первом подключении к компьютеру выйдет сообщение об обнаружении нового устройства, с предложением установки драйвера. Выбираем установку из указанного места:

Выбираем папку где лежат дрова и жмем Далее

Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:

Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера

Все, теперь программатор готов к работе. Осталось выбрать программу, посредством которой будем работать с программатором.

USBASP и Bascom

Как писал ранее, полную поддержку USBASP в Bascom-AVR сделали начиная с версии 1.11.9.6. Попалась тут мне страничка, иллюстрирующая, как можно подружить USBASP с более ранней версией компилятора, но тогда придется ставить avrdude.

Настройка программатора для совместной работы с Bascom-AVR происходит в пункте меню Options-Programmer, в списке программаторов выбираем USBASP

Строка конфигурации Clock Frequency служит для выбора частоты работы программатора. Помнишь про джампер который необходимо замыкать когда нужно прошить микроконтроллер с частотой тактирования меньше 1,5 МГц? Так вот, в новой версии прошивки программатора реализавана возможность программно изменять частоту работы, эту фишку и использует Bascom. Можно выбрать частоту работы в диапазоне от 500Гц до 1,5МГц, по рекомендациям частота должна быть вчетверо меньше частоты работы прошиваемого микроконтроллера. Например, если требуется прошить контроллер с тактовой частотой 1МГц, нужно ставить частоту работы не более 250кГц или, для надежной работы, еще меньше. Я оставил в этом пункте автоопределение частоты.

Khazama AVR Programmer

Еще одна небольшая программа для работы с программатором USBASP. Мне она понравилась минимальным интерфейсом и кнопочками, срисованными с PonyProg =)

Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор.
Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.

Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All.
Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную.

Эта фича помогает в случаях когда нужно прошить большое количество микроконтроллеров, не нужно будет каждый раз вручную выставлять галки при каждой прошивке МК.
Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
. Важно . Как выяснилось, если использовать эту функцию биты Lock Bits необходимо выставлять вручную.

В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.

Ниже можно скачать архив с прошивками и печатной платой, а так же программу Khazama:

Раз народ активно интересуется данным программатором и спрашивает меня о возможности изготовления, решил изготовить печатные платы на производстве и сделать инструмент, которым приятно пользоваться. Пока в наличии имеются готовые печатные платы для этого программатора или можете приобрести уже готовый к работе программатор.
Предложение ограничено, спешите 😉
Все программаторы успешно обрели своих владельцев, а тем временем обдумываю о необходимость заново сделать заказ на производство печатных плат. Надо ли?

UPD 26.01.13

Если появятся желающие приобрести программатор USBASP на заводской плате, записывайтесь в очередь;) и делайте предзаказ! Условия на форуме http://avrproject.ru/forum/11-69-1#1307

Программатор снова стал доступен для покупки! Условия и цена приобретения выложены здесь http://avrproject.ru/index/usbasp/0-41

Порты ввода-вывода микроконтроллера

Устройство микроконтроллера:
– назначение, устройство и программирование портов ввода-вывода микроконтроллера

Доброго дня уважаемые радиолюбители!
Приветствую вас на сайте “Радиолюбитель“

Ну вот, уважаемые радиолюбители, сегодня этой статьей я закончу загрузку ваших (и своих) мозгов чистой теорией. Дальше будет легче и приятней: теорию совместим с практикой.
Ну а сегодня мы рассмотрим очень важный и интересный вопрос – порты ввода/вывода микроконтроллера.

Порты ввода/вывода (далее я буду писать сокращенно – ПВВ) – предназначены для общения микроконтроллера с внешними устройствами. С их помощью мы передаем информацию другим устройствам и принимаем информацию от них. В зависимости от типа, микроконтроллер может иметь на своем борту от одного до семи ПВВ. Каждому порту ввода/вывода присвоено буквенное обозначение – A, B, C, D, E, F, G. Все порты в микроконтроллере равнозначные, восьмиразрядные (содержат восемь линий, они же выводы, они же разряды, они же биты) и двунаправленные – могут как передавать, так и принимать информацию. ПВВ в микроконтроллере обслуживают все его устройства, в том числе и периферийные. Поэтому, в зависимости от того какое устройство будет работать с портом он может принимать и передавать или цифровую информацию, или аналоговую.

Вообще, порты классифицируются по типу сигнала:
цифровые порты – которые работают с цифровыми сигналами – логическими “нулями” и логическими “единицами”
— аналоговые порты – которые работают с аналоговыми сигналами – использующими плавно весь диапазон входных напряжений от нуля вольт до напряжения питания МК
— смешанные порты – они и используются в наших МК, могут оперативно переключаться с режима “цифровой порт” в режим “аналоговый порт”, и обратно.

В технической литературе и схемам ПВВ обозначаются следующим образом:
– “Р” – первая буква, означающая слово “порт”
– “А” (В, С, D, E, F, G) – вторая буква, обозначающая конкретный порт
– “0” (1, 2, 3, 4, 5, 6, 7) – третий символ – цифра, обозначающая конкретный вывод (регистр, бит) порта.
К примеру: “порт А” – РА, “пятый разряд порта А” – РА5.
Если в МК есть несколько портов, то не обязательно их имена могут идти по порядку – A, B, C. Может быть и так – В, С, D. Поэтому пугаться и судорожно искать где же порт А не надо.
Кроме того, хотя порты восьмиразрядные, выводов у порта не обязательно должно быть 8, может быть и меньше, к примеру 3 – PA0, PA1, PA2. В таком случае порт называют неполным, или урезанным.
Давайте посмотрим на конкретный МК – ATmega8:

Как видите, в этом МК порта с именем “А” нет (отсутствует как класс ;). Порт РВ и порт PD – полные, имеют по восемь выводов. А порт С – неполный (ущемленный, нет места в корпусе МК для его вывода), в нем отсутствует восьмой разряд (реально, внутри корпуса МК, он есть, но работать мы с ним не можем).

Для управления портами в их электрической схеме имеется два переключателя, которыми мы можем “щелкать” программно, используя специальные регистры ввода/вывода. Такие переключатели имеются для каждого вывода, что означает возможность управлять любым выводом порта. К примеру, один вывод порта можно настроить на ввод информации, три разряда этого же порта на вывод, а оставшиеся вообще не настраивать, оставить их в “Z- состоянии” .
Давайте разберемся с этим вопросом конкретней, на примере вот этой схемы:

Обратите внимание на два переключателя – Sin и Sout, и сопротивление Rup.
С помощью Sin осуществляется переключение вывода порта или для работы на вход, или для работы на выход. Управляется этот переключатель с помощью регистра ввода/вывода DDRx. У каждого порта свой регистр. Каждый разряд регистра управляет соответствующим разрядом порта (нулевой – нулевым, первый – первым и т.д.). Символ “x” в названии порта заменяется соответствующим именем порта: для порта А – DDRA, для порта С – DDRC. При записи в разряд регистра DDRx “единицы”, соответствующий ему разряд порта переключается на вывод информации, а при записи “нуля” – на ввод информации. Просмотрите рисунки ниже, и вы поймете как работать с регистром DDRx.

1. Переключение всех выводов порта на вывод информации:

2. Переключение всех выводов порта на ввод информации:

3. Переключение части выводов порта на ввод, и части на вывод информации:

В “классическом” Ассемблере настройка выводов портов на ввод и вывод информации выглядит так (просто пример 3-го рисунка):

Idi R20, 0b01100010 — этой командой мы записываем в РОН R20 двоичное число 01100010, которым определяем – какой вывод порта будет работать на вывод (1), а какой на ввод (0) информации. В данном случаем разряды порта В 1,5,6 – настраиваются на вывод информации, а 0,2,3,4,7 – на ввод информации
Out DDRB, R20 — этой командой мы переносим содержимое РОН R20 в регистр ввода/вывода порта В.

В Algorithm Builder запись немного отличается:
#b01100010 – DDRB
Дело в том, что Algorithm Builder несколько более смещен к языкам высокого уровня, поэтому мы просто прописываем “свое желание” одной строчкой, но а при компилировании (переводе в машинные коды), программа сама преобразует эту строчку как и в “классической” записи.

Второй переключатель – Sout. Этот переключатель имеет двойное назначение, в зависимости от настройки разрядов порта на вывод или ввод информации.
Если разряд порта настроен на вывод информации, то с его помощью мы устанавливаем на выходе разряда или логическую “1”, или логический “0”.
Если разряд порта настроен на ввод информации
, то с его помощью подключается так называемый “подтягивающий резистор” – Rup, или “внутренний нагрузочный резистор”. Благодаря этому резистору упрощается подключение внешних кнопок и переключателей, т.к. обычно контакты требуют внешнего резистора.
Как и переключатель Sin, Sout – это регистр ввода/вывода под названием PORTx, где “х” – буквенное обозначение порта (к примеру для порта D регистр будет иметь вид – PORTD).
В семейств МК Mega имеется дополнительный переключатель – PUD, — 2-й разряд регистра ввода/вывода SFIOR (он называется “Регистр специальных функций”). С помощью этого PUD осуществляется общее управление подтягивающими резисторами:
— при записи в этот разряд “1” – все подтягивающие резисторы для всех портов отключаются;
– при записи в этот разряд “0” – состояние подтягивающих резисторов определяется регистром PORTx.
Зачем нужно общее отключение резисторов, да и этот PUD заодно, мы сегодня рассматривать не будем.
В режиме работы разрядов порта на вывод, задача регистра PORTx очень проста – то, что мы в него запишем, то и будет на выходе. Запишем одни “нули” – на выходах буду логические нули, запишем “единицы” – на выходе буду логические “единицы”.
Например:
Настраиваем порт В на вывод информации:
Idi R20, 0b11111111
Out DDRB, R20
Выводим в разряды 0-3 логический ноль, а в разряды 4-7 логическую единицу:
Idi R20, 0b11110000
Out PORTB, R20
В Algorithm Builder:
#b11111111 – DDRB
#b11110000 – PORTB
Надеюсь, что пока все понятно.
Вышеприведенные примеры позволяют настроить весь порт сразу, и вывести нужные значения на все выводы порта за один раз.
Если необходимо настроить только один разряд порта на ввод или вывод, а также вывести “0” или “1” только в один разряд порта, не затрагивая состояние и содержание других разрядов этого порта, существуют следующие команды:
SBI A,b – установить разряд регистра
CBI A,b – сбросить разряд регистра
При этом: “А” – номер регистра, “b” – разряд этого регистра.
Данные команды работают не только с РВВ DDRx и PORTx, но и с теми, которые имеют номера от 0 до 31.

Пример:
— “классический” Ассемблер:
Настраиваем порт В на вывод информации:
Idi R20, 0b11111111
Out DDRB, R20
Нам нужно переключить 1-й разряд порта на ввод информации:
CBI $17, 1 (где $17 – номер РВВ порта В – DDRB, 1 – разряд порта В)
— Algorithm Builder:
#b11111111 – DDRB
0 – PORTB.1

У портов ввода/вывода есть еще один регистр: PINx, регистр выводов порта (“х” – буквенное обозначение порта)
Этот регистр предназначен для считывания информации с вывода порта, независимо в какой он конфигурации – на ввод, или на вывод. Записать в этот регистр мы ничего не можем, он предназначен только для считывания.

Состояние выводов портов в зависимости от их конфигурации:

* PUD нет в МК Tiny и в МК модели ATMega161

Подавляющее большинство контактов портов имеют дополнительные функции и используются периферийными устройствами. При этом может быть две ситуации: в одном случае мы должны самостоятельно задавать конфигурацию вывода, а в другом случае – вывод конфигурируется самостоятельно, при включении соответствующего периферийного устройства.

Некоторые рекомендации по использованию портов ввода/вывода:

При сбросе или включении питания микроконтроллера все выводы всех портов (за очень-очень редким случаем) переводятся в высокоимпедансное состояние – “Z- состояние”. Этот момент следует учитывать в реальных схемах. Если нагрузкой выхода служит транзисторный ключ, то для того, чтобы его база (затвор полевого транзистора) не болтались в воздухе, необходимо ставить дополнительные внешние резисторы сопротивлением 10-100 кОм.

Если вы не используете выводы порта, то не следует их оставлять “парящими в воздухе” – из-за этого повышается потребляемый ток МК (почему – не так важно, но это так). Все неиспользуемые выходы в схеме рекомендуется нагружать на сопротивления 10-100 кОм (можно использовать и внутренние подтягивающие резисторы), или переводить выводы в режим цифровых выходов.

При использовании аналогового компаратора, следует следить, чтобы подтягивающие резисторы были отключены – иначе пострадают показания абсолютных уровней сигнала.

Подтягивающие резисторы не совсем “резисторы” – их роль выполняют полевые транзисторы, которые имеют большой технологический разброс – номинал подтягивающего сопротивления может колебаться в пределах 30-100 кОм. При мощных помехах, да и в других “критических случаях” рекомендуется (хотя такой рекомендации и нет в даташитах) подключать дополнительные подтягивающие резисторы номиналом 2-5 кОм. Такие резисторы следует устанавливать на вывод “Reset”, на выводы внешних прерываний, если они не используются. Также следует устанавливать резисторы при работе выводов МК на общую шину (I2C, или просто при подсоединении выхода МК к выходу другого устройства с открытым коллектором, при подключении к двухвыводным кнопкам). Сопротивление встроенного резистора в таких случаях слишком велико, чтобы отсеивать электромагнитные помехи.

Итак, уважаемые читатели, мы уже ознакомились со структурой микроконтроллера, разобрали простые команды ассемблера. Теперь можно приступить к написанию простой программы.

Для этого нам понадобится среда AVRStudio (о которой упоминалось раньше) и середа для симуляции микроконтроллера – Proteus 7. В сети маса примеров по установке этих программ, так что на этом останавливаться не будем.

Первая наша программа будет состоять из:

Подключения файла директив, инициализации МК;

Настройки портов ввода-вывода МК;

Простейшего цикла переключения портов из логического состояния «0» в «1»;

Подпрограммы простой задержки с использованием регистров общего назначения.

При штатной установке программы AVR Studio, файлы с директивами микроконтроллера располагается по следующему адресу C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes.

В нашем примере будем использовать микроконтроллер Attiny2313. Его inc файл имеет название 2313def.

Для начала откроем программу AVR Studio 4 и создадим проект.

Нажимаем на клавишу создания нового проекта.

Далее откроется окно, где необходимо указать название файла, выбрать язык программирования и указать путь к сохранению проекта.

В последнем окне необходимо выбрать симулятор и тип нашего МК. Далее, нажимаем на клавишу «finish» и можно будет увидеть, как откроется новое окно нашего проекта.

Наш проект уже создан и его можно наполнять программным кодом. Как говорилось раньше, первым делом нужно подключить файл директив данного микроконтроллера. Если возникнет необходимость проводить симуляцию проекта в среде AVR Studio 4, то желательно указать еще и имя нашего МК. Для этого нужно прописать следующую строку «.device ATtiny2313».

Для подключения inc файла, нужно прописать .include “tn2313def.inc”. Тем самым мы разрешим компилятору использовать файл директив данного МК.

Этот файл существенно упрощает задачу программирования, так как мы можем придерживаться определенных стандартов и обращаться к разным адресам МК словами, а не цифрами.

К примеру, на следующем рисунке обозначена строка значения ОЗУ нашего МК. В программе мы пишем «spl», хотя можно написать и« $3d».

Правильно будет в обоих случаях, и компилятор не выдаст вам ошибок и предупреждений. Но так сложнее зрительно воспринимать команды.

Так как в разных микроконтроллерах эти адреса имеют свои значения, открыв новый проект, не совсем понятно будет, что там написано. А когда мы используем директивы, то все эти адреса заменяем понятными для нас словами. При желании в файле директив можно поменять все названия на свои. Но тут есть подвох, вы не сможете открыть и скомпилировать какой-то проект с интернета, точно так и ваш проект никто не сможет скомпилировать и проверить на ошибки или внести изменения. Для этого необходимо будет переделывать файлы директив.

Итак, на Листинге 1 приведу пример нашей простой программы.

.device Attiny2313 ; указываем тип устройства

.include “tn2313def.inc” ; подключаем файл директив МК ATtiny2313

.def temp = r16 ; задаем имя нашему регистру общего назначения

.org 0x0000 ; начало программы с 0 адреса

ldi temp,ramend ; грузим значение ramend в регистр temp

ser temp ; настраиваем все выводы порта В на выход

sbi portb,5; устанавливаем логическую «1» в PORTB5

Итак, разберем все по строкам, что мы сделали.

Первым делом, на всякий случай указали тип устройства .device Attiny2313.

Подключили файл директив .include “tn2313def.inc”.

Для простоты написания программы задали регистру R16 имя .def temp = r16. Такая операция хорошо будет упрощать написание программы в дальнейшем. Ведь словесное название регистра нам проще запомнить, нежели просто писать R16. Таким образом, можно присвоить имя любому регистру начинаю от R0 и заканчивая R31.

Командой ser temp мы грузим в регистр temp значение 255 и выгружаем его в out DDRB. Тем самым конфигурируем порт на выход. В дальнейшем, при симуляции программы в Proteus 7, мы увидем как данные порты приймут состояние логического нуля.

Устанавливаем на порте вывода PB5 логическую единицу с помощью команды sbi portb,5.

В самом конце необходимо организовать какой-то цикл, чтобы микроконтроллер не завис.

После того как наша программа написана, можно компилировать проект. Для этого нажимаем клавишу F7. Если программа написана без ошибок, то появится диалоговое окно внизу проекта с зеленым кружочком и отчетом об использовании памяти и ошибок.

Открываем среду моделирования Proteus 7 и смотрим результат.

Теперь немного усложним задачу и заставим порт вывода переключаться с логического нуля в единицу. Для этого нам необходимо немного доработать нашу программу, Листинг 2. Все изменения происходит только в цикле «main», так что весь код не будем повторять.

sbi portb,5; устанавливаем логическую “1” в PORTB5

cbi portb,5; устанавливаем логический “0” в PORTB5

Смотрим результат моделирования в среде Proteus 7, пподключив к выводу PB5 осциллограф.

Как видно, сигнал на выходе порта появился. Однако частота переключения близка к частоте микроконтроллера.

Чтобы понизить скорость переключения, нам необходимо воспользоваться простой задержкой. На Листинге 3 показан простой пример реализации задержки.

sbi portb,5; устанавливаем логическую “1” в PORTB5

rcall delay ;вызываем подпрограмму задержки

cbi portb,5; устанавливаем логический “0” в PORTB5

clr r20; очистить регистры

inc r20; добавить 1

cpi r20,200 ; сравниваем, R20 = 200 ?

brne d_1; если не равно, то переходим по метке d_1, иначе пропускаем

После выполнения данной программы скорость переключения порта снизилась до 100мс. Задавая значения сравнения в регистры R20 и R21 можно регулировать этот интервал. На следующем рисунке видим результат работы программы.

На этом закончим. В следующей части мы разберем примеры программы с подключением кнопок, напишем цикл бегущей строки.

Предыдущие статьи:

Микроконтроллер и как его победить
Микроконтроллер и системы счисления
Микроконтроллер и логические операции
Общее устройство микроконтроллера
Арифметико-логическое устройство и организация памяти – память программ, память данных, энергонезависимая память
Регистры общего назначения, регистры ввода/вывода, стек, счетчик команд
Регистр состояния SREG

Программирование ATmega8 с использованием Arduino IDE

«Я написал свой код для платы Arduino UNO. Можно ли загрузить мой скетч на микроконтроллер AVR, кроме ATmega328? Думаю, это самый частый вопрос любителей Arduino. Это может иметь разные причины, например:

  • Использование более дешевого микроконтроллера AVR
  • Требуется микроконтроллер AVR с большим или даже меньшим количеством контактов, чем у ATmega328
  • У вас есть все виды AVR, кроме ATmega328: D

В этом руководстве вы будете узнайте, как программировать ATmega8 с помощью Arduino IDE.Он не ограничивается только ATmega8 и может быть распространен на другие ядра, доступные на GitHub MCUDude. Он состоит из двух частей. В первой части описывается установка загрузчика Arduino на ATmega8. Во второй части показано, как программировать ATmega8 с использованием Arduino IDE и преобразователя USB в TTL.

Часть первая: Установка загрузчика Arduino

В этой части мы добавляем поддержку ATmega8 в Arduino IDE. Затем мы установили макет и подключили ATmega8 к плате Arduino UNO.

Шаг первый: Добавление поддержки ATmega8 в Arduino IDE с помощью Board Manager

В репозитории MCUDude на GitHub доступны различные типы ядер.MiniCore используется для микроконтроллера ATmega8. В этом ядре поддерживаются следующие микроконтроллеры:

  • ATmega8
  • ATmega48
  • ATmega88
  • ATmega168
  • ATmega328

Чтобы установить MiniCore в IDE Arduino, выполните следующие действия.

  • В меню File щелкните Preferences .
  • Теперь в URL-адресах менеджера дополнительных плат введите следующий URL-адрес:

https: //mcudude.github.io / MiniCore / package_MCUdude_MiniCore_index.json

  • Перейдите в меню Tools и затем выберите Board >Boards Manager
  • В окне Boards Manager найдите MiniCore и установите последнюю версию.

Вышеуказанные шаги показаны графически здесь:

1/4 • Добавление поддержки ATmega8 в Arduino IDE с помощью диспетчера плат (установка MiniCore)

ATmega8 показана на следующем рисунке.

Шаг второй: Программирование Arduino как ISP (внутрисистемное программирование)

Чтобы записать загрузчик Arduino, нам нужно сделать наш Arduino UNO как ISP.Во встроенных примерах Arduino IDE есть эскиз под названием ArduinoISP . Выполните следующие действия, чтобы запрограммировать Arduino UNO в качестве интернет-провайдера.

  • Открыть файл >Примеры >11.ArduinoISP >ArduinoISP
  • Загрузите этот эскиз на свой Arduino UNO.

Шаг третий: Запись загрузчика

  • Подключите Arduino к ATmega8, как показано ниже.

Arduino ———- ATmega8

SCK / контакт 13 ———- SCK / PB5

MOSI / контакт 11 ———- MOSI / PB3

1/2 • Запись загрузчика Arduino

  • Перейдите к Tools >Board и выберите ATmega8 .Вы также можете выбрать тип часов и частоту в меню Инструменты .
  • Выберите тип программатора в Tools >Программист: как « Arduinoкак ISP ».
  • Теперь в меню Tools щелкните Burn Bootloader .

Успешная запись загрузчика

Если операция прошла успешно, отображается сообщение « Готово записать загрузчик ». Поздравляю! Вы сделали это.

Часть вторая: Программирование ATmega8 с использованием Arduino IDE и преобразователя USB в TTL

Здесь у нас есть ATmega8 с загрузчиком Arduino.Как вы знаете, на всех платах Arduino есть преобразователь USB в TTL. Он действует как мост между микроконтроллером и Arduino IDE. Мы используем модуль конвертера USB в TTL Ch440 для загрузки скетча в ATmega8.

Шаг четвертый: Настройка подключений

Подключите компоненты, как показано ниже.

1/2 • Программирование ATmega8 с использованием Arduino IDE и модуля USB to TTL

Шаг пятый: загрузка эскиза в ATmega8

Нажмите и удерживайте кнопку сброса.Теперь нажмите на загрузку в IDE. Удерживайте кнопку, пока в строке состояния IDE не появится надпись «Загрузка…». Отпустите кнопку после того, как начнется процесс загрузки. Это потому, что микроконтроллер должен находиться в состоянии СБРОС, когда начинается процесс загрузки.

Примечание. Если процесс завершился неудачно, установите конденсатор емкостью 100 нФ на Vcc и GND микроконтроллера как можно ближе.

Примечание. Некоторые модули преобразователя USB в TTL имеют вывод с именем DTR. Если у вас тоже есть этот вывод, вы можете подключить его к выводу RESET ATmega8, и нет необходимости использовать кнопку для ручного сброса микроконтроллера.

Программирование ATmega8 с использованием Arduino IDE

«Я написал свой код для платы Arduino UNO. Можно ли загрузить мой скетч на микроконтроллер AVR, кроме ATmega328? Думаю, это самый частый вопрос любителей Arduino. Это может иметь разные причины, например:

  • Использование более дешевого микроконтроллера AVR
  • Требуется микроконтроллер AVR с большим или даже меньшим количеством контактов, чем у ATmega328
  • У вас есть все виды AVR, кроме ATmega328: D

В этом руководстве вы будете узнайте, как программировать ATmega8 с помощью Arduino IDE.Он не ограничивается только ATmega8 и может быть распространен на другие ядра, доступные на GitHub MCUDude. Он состоит из двух частей. В первой части описывается установка загрузчика Arduino на ATmega8. Во второй части показано, как программировать ATmega8 с использованием Arduino IDE и преобразователя USB в TTL.

Часть первая: Установка загрузчика Arduino

В этой части мы добавляем поддержку ATmega8 в Arduino IDE. Затем мы установили макет и подключили ATmega8 к плате Arduino UNO.

Шаг первый: Добавление поддержки ATmega8 в Arduino IDE с помощью Board Manager

В репозитории MCUDude на GitHub доступны различные типы ядер.MiniCore используется для микроконтроллера ATmega8. В этом ядре поддерживаются следующие микроконтроллеры:

  • ATmega8
  • ATmega48
  • ATmega88
  • ATmega168
  • ATmega328

Чтобы установить MiniCore в IDE Arduino, выполните следующие действия.

  • В меню File щелкните Preferences .
  • Теперь в URL-адресах менеджера дополнительных плат введите следующий URL-адрес:

https: //mcudude.github.io / MiniCore / package_MCUdude_MiniCore_index.json

  • Перейдите в меню Tools и затем выберите Board >Boards Manager
  • В окне Boards Manager найдите MiniCore и установите последнюю версию.

Вышеупомянутые шаги показаны здесь графически:

Распиновка ATmega8 показана на следующем рисунке.

Шаг второй: Программирование Arduino как ISP (внутрисистемное программирование)

Чтобы записать загрузчик Arduino, нам нужно сделать наш Arduino UNO как ISP.Во встроенных примерах Arduino IDE есть эскиз под названием ArduinoISP . Выполните следующие действия, чтобы запрограммировать Arduino UNO в качестве интернет-провайдера.

  • Открыть файл >Примеры >11.ArduinoISP >ArduinoISP
  • Загрузите этот эскиз на свой Arduino UNO.

Шаг третий: Запись загрузчика

  • Подключите Arduino к ATmega8, как показано ниже.

Arduino ———- ATmega8

SCK / контакт 13 ———- SCK / PB5

MOSI / контакт 11 ———- MOSI / PB3

  • Перейти к инструментам >Board и выберите ATmega8 .Вы также можете выбрать тип часов и частоту в меню Инструменты .
  • Выберите тип программатора в Tools >Программист: как « Arduinoкак ISP ».
  • Теперь в меню Tools щелкните Burn Bootloader .

Если операция прошла успешно, отображается сообщение « Готово записать загрузчик ». Поздравляю! Вы сделали это.

Часть вторая: Программирование ATmega8 с использованием Arduino IDE и преобразователя USB в TTL

Здесь у нас есть ATmega8 с загрузчиком Arduino.Как вы знаете, на всех платах Arduino есть преобразователь USB в TTL. Он действует как мост между микроконтроллером и Arduino IDE. Мы используем модуль конвертера USB в TTL Ch440 для загрузки скетча в ATmega8.

Шаг четвертый: Настройка подключений

Подключите компоненты, как показано ниже.

Шаг пятый: Загрузка эскиза в ATmega8

Нажмите и удерживайте кнопку сброса.Теперь нажмите на загрузку в IDE. Удерживайте кнопку, пока в строке состояния IDE не появится надпись «Загрузка…». Отпустите кнопку после того, как начнется процесс загрузки. Это потому, что микроконтроллер должен находиться в состоянии СБРОС, когда начинается процесс загрузки.

Примечание. Если процесс завершился неудачно, установите конденсатор емкостью 100 нФ на Vcc и GND микроконтроллера как можно ближе.

Примечание. Некоторые модули преобразователя USB в TTL имеют вывод с именем DTR. Если у вас тоже есть этот вывод, вы можете подключить его к выводу RESET ATmega8, и нет необходимости использовать кнопку для ручного сброса микроконтроллера.

Atmega8. Программирование Atmega8 для начинающих

Atmega8 — самые популярные представители своего семейства. Во многом они обязаны, с одной стороны, простоте эксплуатации и незамысловатой структуре, с другой — достаточно широкому функционалу. В этой статье рассматривается программирование Atmega8 для начинающих.

Общая информация

Микроконтроллеры повсюду. Вы можете найти их в холодильниках, стиральных машинах, телефонах, заводских машинах и большом количестве других технических устройств.Микроконтроллеры одновременно просты и чрезвычайно сложны. Последние предлагают значительно больше функций и возможностей. Но разобраться в сложной технике не получится. Сначала вам нужно узнать что-то простое. И в качестве образца будет взят от Atmega8. Программирование не сложное благодаря грамотной архитектуре и понятному интерфейсу. К тому же он обладатель производительности, достаточной для использования в большинстве любительских устройств. Более того, они применяются даже в промышленности. В случае с Atmega8 программирование предполагает знание таких языков, как AVR (C / Assembler).С чего начать? Развитие этой технологии возможно по трем направлениям. И каждый выбирает, с чего начать с Atmega8

  1. Программирование с использованием Arduino.
  2. Приобрести готовый прибор.
  3. Самостоятельная сборка микроконтроллера.

Будем рассматривать первый и третий абзацы.

Arduino

Это удобная платформа, разработанная как электронный конструктор, идеально подходит для быстрого создания различных устройств. На плате уже есть все необходимое в виде микроконтроллера, его привязки и программатора.Пройдя этот маршрут, человек получит следующие льготы:

  1. Низкие пороговые требования. Не нужно иметь специальных навыков и умений для разработки технических систем.
  2. Широкий ассортимент товаров будет доступен для подключения без дополнительного обучения.
  3. Быстрый старт разработки. С Arduino вы можете перейти к созданию устройств.
  4. Наличие большого количества обучающих материалов и примеров реализации различных конструкций.

Но есть и недостатки. Итак, Arduino программирование Atmega8 не позволяет глубже погрузиться в мир микроконтроллера и разобраться во многих полезных аспектах. Кроме того, вам придется изучить язык программирования, отличный от того, который применяется в AVR (C / Assembler). И снова у Arduino довольно узкий модельный ряд. Поэтому рано или поздно нужно использовать микроконтроллер, который не используется в печатных платах. Но в целом это хороший способ работать с Atmega8.Программирование через Arduino позволит вам уверенно стартовать в мире электроники. Люди вряд ли сдадутся из-за неудач и проблем.

Как выйти из «Скайпа» на «Андроиде» и не только

Как выйти из «Скайпа» «Андроид»? Этот вопрос беспокоит многих пользователей. Все дело в том, что мессенджер не так уж и сложен. Но есть функции, которые есть только в мобильных версиях. Выйти из Skype в этом случае сложнее, чем кажется.Но я …

Как добраться из Штормграда в Танарис: практические советы

World of Warcraft — культовая MMORPG, объединяющая миллионы игроков по всему миру. Здесь много локаций и головоломок, секретных троп и больших, но довольно опасных троп. Рано или поздно каждый игрок выберет сторону Альянса, мы должны …

Самостоятельная сборка

Благодаря дружелюбному дизайну они могут сделать сами. Потому что для этого нужны дешевые, доступные и простые компоненты. Это позволит вам ознакомиться с устройством микроконтроллера Atmega8, программирование которого после сборки покажется проще.При необходимости вы можете выбрать дополнительные компоненты под конкретную задачу. Правда, есть определенные недостатки — сложность. Собрать микроконтроллер, когда не нужны знания и навыки, непросто. Этот вариант мы рассматриваем.

Что нужно построить?

Изначально нужно завести себе Atmega8. Программирование микроконтроллера без него, знаете ли, невозможно. Он будет стоить несколько сотен рублей — при этом обеспечивая приличный функционал. Также стоит вопрос, как это будет реализовано при программировании Atmega8.USBAsp — это довольно неплохое устройство, зарекомендовавшее себя с самой лучшей стороны. Но можно использовать любой другой программатор. Или сделай сам. Но в этом случае есть риск, что при неудачном создании он превратит микроконтроллер в сломанную пластиковую деталь и железо. Не мешает наличие макета и перемычек. Они не являются обязательными, но сэкономят время и нервы. И напоследок — нужен источник питания на 5В.

Программирование Atmega8 для начинающих на примере

Давайте разберемся, как, в общих чертах, происходит создание устройства.Итак, допустим, у нас есть микроконтроллер, светодиод, резистор, программатор, соединительные провода, макет и блок питания. Первый шаг — написание прошивки. Под ней понимают набор команд для микроконтроллера, который представлен как конец файла специального формата. Необходимо прописать подключение всех элементов и взаимодействие с ними. После этого можно приступать к построению схем. На ножке ВКК должно быть питание. Любой другой, предназначенный для работы с устройствами и предметами, к которым сначала подключается резистор, а затем светодиод.Мощность первого зависит от потребностей второго в питании. Они могут посмотреть на эту формулу: R = (Up-Up) / Is. Здесь p — мощность, а s — светодиод. Представим, что у нас есть светодиод, потребляющий 2 В и требующий тока питания 10 мА, переведем в более удобный для математических операций вид и получим 0,01 А. Тогда формула будет выглядеть следующим образом: R = (5 В-2 В) / 0,01 А = 3 В /0.01 А = 300 Ом. Но на практике зачастую невозможно найти идеальный предмет. Поэтому взял наиболее подходящий. Но нужно использовать резистор с сопротивлением выше, чем значение, полученное математическим путем.Благодаря такому подходу мы продлим срок его службы.

Что дальше?

Итак, у нас небольшая схема. Теперь нам необходимо подключиться к программатору микроконтроллера и записать в его память созданную прошивку. Есть один момент! Собирая схему, необходимо создать ее так, чтобы микроконтроллер можно было прошить без распайки. Это сэкономит время, нервы и продлит срок службы элементов. Включая Atmega8. Следует отметить, что внутрисхемное программирование требует знаний и навыков.Но это также позволяет создавать более сложные дизайны. Ведь часто бывает, что при распайке предметы повреждаются. После этого схема готова. Может подавать напряжение.

Важные моменты

Я хочу дать детям полезные советы по программированию Atmega8. Встроенные переменные и функции не меняются! Прошить устройство, сгенерированное программой, желательно после проверки отсутствия «вечных циклов», блокирующих любое другое вмешательство, и с использованием хорошего передатчика.В случае использования поделки для этих целей следует морально подготовиться к выходу микроконтроллера из системы. При прошивке устройства программатором следует подключить соответствующие выходы, VCC, GND, SCK, MOSI, RESET, MISO. И безопасность не нарушайте! Если в технических характеристиках предусмотрено, что он должен быть запитан на 5В, то нужно придерживаться такого напряжения. Даже использование элементов 6В может негативно сказаться на производительности микроконтроллера и сократить срок его службы.Конечно, батареи на 5В имеют определенные отличия, но в целом все в разумных пределах. Например, максимальное напряжение останется на уровне 5,3 В.

Обучение и навыки

К счастью, Atmega8 — очень популярный микроконтроллер. Поэтому найти единомышленников или просто знающих и способных людей не составит труда. Если вы не хотите изобретать велосипед, а просто хотите решить определенную задачу, можно найти нужную схему во всемирной паутине.Кстати, вот подсказка: хотя в России сегмент робототехники довольно популярен, но если нет ответа, вам стоит поискать его на английском языке — он содержит большой объем информации. Если есть сомнения в качестве имеющихся советов, можно поискать книгу, посвященную Atmega8. К счастью, производитель учитывает популярность своих разработок и предоставляет им специализированную литературу, где опытные люди могут рассказать, что и как, и привести примеры работы устройства.

Трудно начать создавать что-то свое?

Достаточно 500-2000 рублей и несколько свободных вечеров. Этого времени более чем достаточно, чтобы ознакомиться с архитектурой Atmega8. После небольшой практики вы легко сможете создавать свои собственные проекты для выполнения определенных задач. Например, роботизированная рука. Одного Atmega8 будет более чем достаточно, чтобы передать основные двигательные функции пальцев. Конечно, это довольно сложная задача, но вполне выполнимая. Впоследствии, как правило, можно создавать сложные вещи, для которых потребуются десятки микроконтроллеров.Но это все впереди, необходимо получить хорошую школьную практику на чем-то простом.

Учебные пособия по микроконтроллеру AVR для начинающих

Руководства по микроконтроллерам AVR: В этой статье мы собираемся представить полный список руководств по микроконтроллерам AVR. Прочитав эту статью, вы получите полное представление о микроконтроллерах avr. Этот список содержит более 20 руководств по микроконтроллерам AVR. мы полностью узнаем о микроконтроллере AVR и взаимодействии с другим компонентом с помощью микроконтроллера AVR.Итак, мы обсудили здесь некоторое введение и некоторые важные особенности микроконтроллера AVR. Полный список руководств по микроконтроллерам avr приведен ниже:

  • Начало работы с микроконтроллером AVR : В этом руководстве мы обсудили микроконтроллер AVR, поэтому сначала мы знаем, что такое микроконтроллер? Микроконтроллер AVR был впервые разработан компанией Atmel в 1996 году. Это усовершенствованная версия мини-компьютера, встроенного в небольшой чип, который имеет процессор, память и программируемые периферийные устройства ввода-вывода.AVR доступны от 8 до 100 контактов; Совсем недавно использовались 40-контактные ATmega16 или ATmega32.

Характеристики микроконтроллера AVR

  • Многофункциональный
  • Несколько внутренних генераторов
  • Флэш-память до 256 КБ
  • Внутренние данные EEPROM до 4 КБ
  • InternalSRAM до 16 КБ
  • Два таймера 8-битные и один 16-битный
  • Микроконтроллер ATmega16: В этом руководстве мы полностью узнали о микроконтроллере Atmega16, а также о его контактах. It — это 8-битный микроконтроллер Atmel’s. Он основан на улучшенной архитектуре RISC. ATmega16 — это 40-контактный микроконтроллер. Имеется 32 линии ввода / вывода (ввода / вывода), которые разделены на четыре 8-битных порта, обозначенных как PORTA, PORTB, PORTC и PORTD.
  • Учебное пособие по VMLAB для начинающих: В этом разделе мы обсудили «Лаборатория Visual Micro». Это специальный инструмент, который предоставляет виртуальную среду для мягкого моделирования и написания программного обеспечения. Также он используется для компиляции программы микроконтроллера AVR.
  • Учебник PonyProg для начинающих: В этом уроке мы узнали, как программировать микроконтроллер для программирования микроконтроллера AVR, нам нужен мощный программист, которым является PonyProg. Это программное обеспечение для программирования последовательных устройств с удобным графическим интерфейсом, доступное для Windows95 / 98 / ME / NT / 2000 / XP и Intel Linux.
  • Atmel Studio 6 Пошаговое руководство: В этом руководстве мы узнаем об Atmel Studio 6. Как использовать Atmel Studio 6 и что такое Atmel Studio 6? Что такое Atmel Studio 6? Это IDE от Atmel для разработки и отладки микроконтроллера Atmel AVR.Он предоставляет среду для написания, сборки и отладки ваших приложений, написанных на C / C ++ или ассемблерном коде.
  • Начало работы с Atmel Studio 6:В этом проекте мы узнали, как использовать Atmel Studio 6 и как создать первый проект в Atmel Studio 6. Он очень прост в использовании, в котором мы можем создавать любой тип. применения согласно требованию. Для получения полных рекомендаций мы следуем этим шагам, чтобы начать работу с Atmel Studio 6;
  • Загрузить Atmel Studio 6 Веб-сайт: www.atmel.com
  • Откройте Atmel Studio
  • После установки. Процесс установки очень простой
  • Создать новый проект
  • Выбор устройства
  • Написать программу
  • Составьте код
  • Выберите программист
  • Программирование устройств
  • Светодиод мигает с использованием микроконтроллера AVR ATMEGA32: В этом руководстве мы узнали об AVR Atmega32 и его программировании, а также о том, как разработать код для мигания светодиода через Atmeg32.Сначала мы напишем код на языке C в Atmel Studio 6. Для программирования Atmega32 мы использовали два регистра DDR и PORT. DDR сообщает нам контакт входа или выхода Atmega32, а ПОРТ сообщает нам, являются ли контакты активным низким или активным высоким. Для кода и моделирования для этого проекта посетите
  • Как использовать кнопку с микроконтроллером ATMEGA32 AVR : Это руководство предназначено для новичков в области программирования Atmel AVR. Я надеюсь, что вы прочитали мой первый учебник «Мигание светодиода» с использованием Atmega32 и Atmel Studio.В этом разделе мы узнаем, что такое кнопка и как мы можем использовать кнопку с микроконтроллером AVR Atmega32. Что такое кнопка? Это небольшое управляющее устройство, которое приводится в действие электрическим устройством путем нажатия. Здесь кнопка используется для переключения с микроконтроллером. Код и моделирование этого проекта можно найти на сайте .
  • Интерфейс ЖК-дисплея с микроконтроллером AVR ATMEGA32: В этом руководстве мы обсудим ЖК-дисплей и взаимодействие с микроконтроллером AVR Atmega32.ЖК-дисплей 16 × 2 — это модуль, который используется для отображения персонажа. Это очень простой модуль, который обычно используется во многих электронных устройствах и проектах. Он может отображать 2 строки по 16 символов. ЖК-дисплей 16 × 2 может быть сопряжен с микроконтроллером в 8-битном или 4-битном режиме. Они отличаются тем, как данные и команды отправляются на ЖК-дисплей. В 8-битном режиме символьные данные (как 8-битный ASCII) и ЖК-команда отправляются по линиям данных с D0 по D7. То есть 8-битные данные отправляются за один раз, а строб данных выдается через E ЖК-дисплея.
  • Двигатель постоянного тока, взаимодействующий с Atmega32 и L293D: В этом руководстве мы узнали о двигателе постоянного тока, о том, как взаимодействовать с микроконтроллером AVR, а также узнали о драйвере двигателя L293D. Прямое подключение двигателя постоянного тока к микроконтроллеру нецелесообразно, потому что двигателю требуется больше тока, иначе микроконтроллер будет обеспечивать ток. Итак, чтобы решить эту проблему, мы используем драйвер двигателя для взаимодействия с микроконтроллером. Мы используем микросхемы типа L293D или L298.
  • Интерфейс DS18S20 с микроконтроллером PIC и AVR: В этом руководстве мы обсудим DS18S20 и способ взаимодействия с микроконтроллером PIC и Atmega32.DS18S20 — это 9-битный цифровой термометр, который используется для измерения температуры в градусах Цельсия. Он связывается с микроконтроллерами только одним проводом.
  • Оптопара, взаимодействующая с микроконтроллерами AVR PIC и 8051: В этом разделе мы узнаем об оптопаре, работе оптопары и о том, как взаимодействовать с микроконтроллерами AVR, PIC и 8051. Что такое оптопара? Он также известен как оптоизолятор. Это электрический компонент, который соединяется с двумя отдельными электрическими элементами, которые используются для передачи входного сигнала с помощью светочувствительного элемента.
  • Как использовать таймеры микроконтроллера AVR: В этой теме мы обсудили таймер AVR и способы использования таймеров AVR в различных проектах по мере необходимости. AVR ATmega32 состоит из трех таймеров Timer0, Timer1 и Timer2 соответственно. Два таймера — это 8-битные регистры, а один — 16-битный регистр.

Микроконтроллеры Atmega8. Программирование Atmega8 для начинающих

Atmega8 — самые популярные представители своего семейства.Во многом они обязаны этим, с одной стороны, простоте работы и понятной структуре, с другой — достаточно широкому функционалу. В статье будет рассмотрено программирование Atmega8 для начинающих.

общая информация

  1. Программирование через Arduino.
  2. Покупка готового устройства.
  3. Самостоятельная сборка микроконтроллера.

Рассмотрим абзацы первый и третий.

Arduino

  1. Низкий порог требований. Для разработки технических устройств не требуются специальные навыки и умения.
  2. Широкий спектр элементов будет доступен для подключения без дополнительного обучения.
  3. Быстрый старт разработки. С Arduino можно сразу переходить к созданию устройств.
  4. Наличие большого количества обучающих материалов и примеров реализации различных конструкций.

Но есть и недостатки.Итак, Arduino программирование Atmega8 не позволяет глубже окунуться в мир микроконтроллера и разобраться во многих полезных аспектах. Кроме того, вам придется изучить язык программирования, отличный от используемого AVR (C / Assembler). И еще: Arduino имеет довольно узкую линейку моделей. Поэтому рано или поздно возникнет необходимость в использовании микроконтроллера, который в платах не используется. В целом, это хороший способ работы с Atmega8. Программирование через Arduino позволит вам уверенно стартовать в мире электроники.И человек вряд ли потеряет руку из-за неудач и проблем.

Самостоятельная сборка

Благодаря удобному дизайну они могут быть изготовлены самостоятельно. Ведь для этого нужны дешевые, доступные и простые компоненты. Это даст возможность изучить устройство микроконтроллера Atmega8, программирование которого после сборки покажется проще. Также при необходимости вы можете самостоятельно выбрать другие компоненты под конкретную задачу. Правда, здесь есть некий минус — сложность.Самостоятельно собрать микроконтроллер непросто, когда нет необходимых знаний и навыков. Рассмотрим этот вариант.

Что вам нужно построить?

Программирование Atmega8 для начинающих на примере

А что дальше?

Важные моменты

Обучение и развитие навыков

К счастью, Atmega8 — очень популярный микроконтроллер. Поэтому найти единомышленников или просто знающих и способных людей несложно. Если нет желания изобретать велосипед, а просто хочется решить определенную задачу, то можно искать нужную схему на просторах мировой сети.Кстати, небольшая подсказка: хотя в русском сегмент робототехники довольно популярен, но если ответа нет, то стоит поискать на англоязычном — там информации на порядок больше. Если есть сомнения по поводу имеющихся рекомендаций, то можно поискать книги, в которых рассматривается Atmega8. К счастью, компания-производитель учитывает популярность своих разработок и снабжает их специализированной литературой, где опытные люди рассказывают, что и как, а также приводят примеры работы устройства.

Трудно начать создавать что-то свое?

Учебник по программированию на Atmega8 c pdf

Как записать шестнадцатеричный файл программы на микроконтроллер avr, используя avr studio, usbasp, burnomat duration. Мы установим связь между мобильным телефоном android и atmega8 через модуль bluetooth, который осуществляется через протокол последовательной связи uart.Микроконтроллер Atmega8 имеет 23 программируемых контакта ввода-вывода, которые можно использовать для взаимодействия с внешним миром. Взаимодействие модуля bluetooth hc05 с atmega8 avr. Теперь желтый курсор находится на первой строке основной программы, и ide готов к отладке программы. Особенности микроконтроллера avr atmega8 и блок-схема с расширением. Ассемблерный эквивалент инструкции c показан ниже серым цветом. Как язык, c претерпел множество преднамеренных обновлений и изменений. Программатор состоит из 10-контактного стандартного последовательного разъема для.Windows, вероятно, попытается установить драйвер, и это иногда не удается или устанавливает неправильный драйвер. Одной из важных особенностей atmega8 является то, что, кроме 5 контактов, все остальные контакты поддерживают два сигнала. Программист на c может легко записать байт в регистр управления периферийного компонента компьютера.

Pdf 19 июня 2014 г. aravind e vijayan и другие опубликовали руководство для начинающих по. Он предназначен для новичков в этом семействе микроконтроллеров. Atmega8 поддерживается полным набором инструментов для разработки программ и систем, включая компиляторы c, макроассемблеры, имитаторы программ и оценочные комплекты.В следующих публикациях мы шаг за шагом познакомим вас с созданием вашего первого простого файла. Он предназначен для новичков в этой семье. 20 ноября 2012 года вот учебник для Mac вот один для Linux ubuntu вот один для Windows. Приведенный ниже код показывает базовую структуру встроенного кода. Эта книга не является книгой по программированию на языке c или книгой для изучения основ микропроцессоров.

Это упрощает программирование для avr для любого, кто хорошо владеет встроенным языком c. Он разделен на первую часть, как руководство для начинающих, и вторую часть, которая представляет собой файл.Мы будем использовать набор инструментов компилятора winavr gcc c с avr studio через модуль расширения. Atmega8 — это мощный микроконтроллер, который обеспечивает очень гибкое и экономичное решение для многих встраиваемых приложений управления. Связь между двумя микроконтроллерами avr, делающая наши проекты беспроводными, всегда делает их привлекательными, а также расширяет диапазон, в котором им можно управлять. Основная особенность микроконтроллера atmega8 заключается в том, что все выводы микроконтроллера поддерживают два сигнала, кроме 5 контактов.Pdf avr atmega128 учебник francisco martinez academia. Быстрое программирование, увеличенная функциональность, по той же цене, что и его предшественник, pickit 3. mplab pickit 4 теперь имеет программертго функциональность для 8-битных, 16-битных и 32-битных устройств pic mcus и dspics, а также устройств sam mcu. Atmega8, имеющий продвинутую архитектуру виртуального риска, представляет собой микроконтроллер с 28-контактным DIP-корпусом, совместимым с макетной платой. Краткое руководство по программированию atmega arduino без программного обеспечения arduino Эта серия руководств охватывает программирование многих функций микросхемы atmega с использованием языка программирования c.

Atmega8 l av cc av cc — это вывод напряжения питания для преобразователя рекламы, порт c 30 и adc 76. Это упрощает и ускоряет переход от программирования к автономному и избавляет от некоторой путаницы. Директива ассемблерного кода в ein cprogramm eingebunden werden. Прежде чем приступить к изучению этого руководства, вы должны иметь базовое представление о. Кристофер Штайнер, университет побережья Мексиканского залива, Флорида, стр. 3. Пересмотренные черновые заметки о программировании микроконтроллеров AVR в c. В этом руководстве мы узнаем, как подключить модуль bluetooth hc05 к микроконтроллеру avr atmega8.Вместо контактных площадок микросхему часто помещают в печатную плату, которая имеет контакты заголовка, в которые вставляется программатор, распиновка заголовка стандартизирована, так что любой программист может использоваться после правильного подключения заголовка. Это руководство предназначено для программистов, которым необходимо понимать язык программирования c с нуля. Дело в том, что большинство микроконтроллеров программируются на c, это легкий язык программирования, который хорошо подходит для ограничительной среды. Регистрация активности порта симулятора и входные сигналы вывода.Программирование atmel atmega328p на c foravrgccv4 с помощью. Узнайте, как установить atmel studio 6 и настроить функции программирования микроконтроллера.

Программирование на C в студии avr с использованием winavr sepehr naimi bihe 20100608. В этом руководстве мы добавляем возможность взаимодействия человека с микроконтроллером. Изучив c, вы сможете легко переключаться между семействами микроконтроллеров, много писать программное обеспечение. То, что мы хотим сделать, описано в главе «Порты io, настройка вывода», стр. 52. Приступаем к программированию на c для микроконтроллеров atmel avr от son lam phung версии 2.Обратите внимание, что порт c 54 использует цифровое напряжение питания v cc. Первый столбец показывает адрес памяти, где находится инструкция сборки. Пошаговое руководство по программированию на avr atmega32 avr. Учебное пособие по микроконтроллеру AVR научится выполнять проект AVR. Также подробно объясняется каждый из регистров, используемых для ADC. В этом руководстве мы рассмотрим, что необходимо для прохождения этого пути программирования. Я надеюсь помочь вам освоить программирование на языке c на конкретном микроконтроллере и. Этот учебник по c даст вам достаточно знаний о языке программирования c, из которого вы сможете подняться на более высокий уровень знаний.Avr atmega8 особенности микроконтроллера и структурная схема.

Щелкните меню отладки, выберите окна и затем разобрать. Я новичок в программировании, но очень хорошо знаком с программированием на ассемблере. Если используется АЦП, он должен быть подключен к V CC через фильтр нижних частот. Чтобы выполнить инструкции построчно, нажмите клавишу f10 или щелкните значок перехода. Изначально avrgcc был разработан для систем unix. Следующим шагом является подготовка первой программы avr c. Предварительные знания в области программирования микроконтроллеров ни на ассемблере, ни на другом языке не требуются.Список проектов на базе микроконтроллера avr atmega8 включает atmega8, который представляет собой 8-битный микроконтроллер avr, основанный на архитектуре Risk и в основном используемый во встроенных системах и проектах промышленной автоматизации. Компилятор преобразует программы на языке c в машинные инструкции. В этом руководстве представлена ​​информация об инструменте и основные шаги по программированию микроконтроллеров atmel avr с использованием c. Как записать шестнадцатеричный файл на микроконтроллер avr с помощью avr studio, usbasp, burnomat duration.

Программирование чипа с загрузчиком на нем выходит за рамки этого руководства.Как программировать микроконтроллеры AVR, дешево и просто. В этом руководстве мы узнаем, как подключить модуль bluetooth hc05 к микроконтроллеру avr atmega8. В следующем окне выберите симулятор в качестве отладчика, а затем закройте его, нажав x рядом с toggleproject. Программирование портов Avr io для начинающих и профессионалов с характеристиками, проектированием, процессорами, микроконтроллерами, инструментами, режимами адресации, языком ассемблера, прерываниями, встроенным программированием на c, миганием светодиода, последовательной связью, программированием ЖК-дисплея, программированием клавиатуры и т. Д.Если у вас уже закружилась голова от скучной теории, просыпайтесь. Введение в программирование микроконтроллера atmega. 24 февраля 2012 г. это первое в серии руководств, в которых более подробно рассматривается, что именно заставляет arduino работать.

Микроконтроллер Atmel и программирование на c simon led light game. 14 июня 2014 г. программирование atmega8 с помощью avrusbasp elementzonline 14 июня 2014 г. atmega8, имеющий усовершенствованную архитектуру виртуального риска, представляет собой микроконтроллер с 28-контактным DIP-корпусом, совместимым с макетной платой.Avr studio 4 имеет модульную архитектуру, которая позволяет еще больше взаимодействовать со сторонними поставщиками программного обеспечения. Обзор atmega8 — это 8-битный cmos-микроконтроллер малой мощности, основанный на архитектуре avr Risk. Знание платформы роботов, программирование adc в atmega8. Плагины Gui и другие модули могут быть написаны и подключены к системе. В этом проекте мы будем управлять светодиодом через bluetooth нашего смартфона. Вот простое пошаговое руководство по программированию микроконтроллера atmega8 и использованию его встроенного аналого-цифрового преобразователя.Введение в архитектуру микроконтроллера atmega8 и. Atmel studio руководство пользователя предисловие atmel studio — это интегрированная среда разработки ide для написания и отладки приложений avrarm в средах windows xpwindows vista windows 78. Выполняя мощные инструкции за один такт, atmega8 достигает пропускной способности, приближающейся к 1 миллиону в секунду на МГц, что позволяет разработчику системы оптимизировать энергопотребление в зависимости от скорости обработки. Список проектов на базе микроконтроллера avr atmega8 pdf.Поддержка языков c, pascal, basic и ассемблера. Введение в avr gcc winavr. Avr gcc plugin — это графический интерфейс для gnu make и avrgcc.

Их можно настроить как вход или выход, задав конкретное значение регистра посредством программирования. Этот пост предназначен, чтобы помочь начинающим программировать atmega8 ics с использованием usbasp. Это руководство представляет собой высокоуровневый обзор всех частей и частей экосистемы Arduino. Введение в архитектуру микроконтроллера atmega8 и ее. Если вы не знакомы с битами, портами и программированием, я рекомендую вам прочитать основы avr и завершить проект с мигающим светодиодом, прежде чем начинать это, потому что основы порта и основы программирования не являются частью этого руководства.Введение в функции микроконтроллера atmega8 с его схемой контактов, блок-схемой внутренней архитектуры и таблицей данных atmega8 в формате pdf для загрузки. Единственная цель этого документа — облегчить начало работы. Сегодня он доступен практически для любой системы и очень широко используется. Это первое из серии руководств, в которых более подробно рассматривается, что именно заставляет arduino работать.

Эти ассемблерные языковые особенности языка c служат для того, чтобы сделать c языком высокого уровня, который выбирают программисты микроконтроллеров.Это введение в программирование микроконтроллеров avr с использованием языка c. Привет, мне нужна статья о программировании на языке c, которая поможет мне использовать базовые расширения или код в контроллере atmega8 для развития моего логического мышления. Usbasp — это последовательный программатор, имеющий последовательный периферийный интерфейс для программирования. Программирование АЦП в микроконтроллерах может показаться сложным. Он имеет 8 Кбайт флеш-памяти для программ, 10 000 циклов стирания записи, 512 байт EEPROM, 100 000 циклов стирания записи.Программирование atmega8 с использованием случайных кодов avrusbasp elementz. Появится следующий диалог с просьбой выбрать инструмент отладки. Микроконтроллер — это небольшой и недорогой микрокомпьютер, который предназначен для выполнения конкретных задач встроенных систем, таких как отображение информации микроволн, получение удаленных сигналов и т. Д. Общий микроконтроллер состоит из процессора, оперативной памяти, ПЗУ, ЭПЗУ, последовательных портов, периферийных устройств. таймеры, счетчики и др. Микроконтроллер avr и встроенные системы с использованием сборки.

Подключите к компьютеру один из модулей программирования usbtiny. Если пользователь не знаком с основами c или микроконтроллера, ему следует сначала проконсультироваться с соответствующими книгами. Этот бит разрешения глобального прерывания должен быть установлен для того, чтобы любое прерывание работало sei. Микроконтроллер atmega8 состоит из 28 контактов, из которых контакты 9,10,14,15,16,17,18,19 используются для порта b, контакты 23,24,25,26,27,28 и 1 используются для порта c и штифты 2,3,4,5,6,11,12 используются для порта d. Это руководство предназначено для облегчения входа в программирование микроконтроллера atmel avr на языке программирования c с помощью бесплатного бесплатного компилятора ccompiler avr gcc.Первые шаги с микроконтроллерами atmega8 pocketmagic.

В этом руководстве представлена ​​информация об инструменте и основных шагах программирования atmel. Они доступны в виде модулей в системе cduino, поэтому их создание и загрузка должны быть довольно простыми. Из-за этого мы хотели убедиться, что это руководство было написано для абсолютного новичка без какого-либо опыта. Приведенные примеры и пояснения не являются ни исчерпывающими, ни полными. Краткое руководство по программированию atmega arduino.Он должен быть подключен к V CC извне, даже если АЦП не используется. Я новичок в программировании на c, но очень хорошо знаком с программированием на ассемблере. Теперь программатор usbasp и адаптер для программирования готовы к использованию. Он разделен на первую часть, как руководство для начинающих, и вторую часть, которая представляет собой справочник по функциям, предусмотренным в основе.

Знакомство с atmega8 atmega8 — это еще один микроконтроллер из семейства avr, который очень похож на atmega32 по функциям, но стоит дешево.При написании этой книги предполагается, что читатель знает язык c, а также знаком с программированием микроконтроллеров. Загрузчик занимает 2 КБ и работает со скоростью 57600 бод. Поддержка парсера файлов coff, ubrof6, ubrof8 и шестнадцатеричных файлов. Более обширное приложение использует последовательную связь и другие управляющие структуры. Этот документ является введением в программирование микроконтроллера atmega.

Для получения дополнительной информации см. Справку по avr studios и посетите сайт winavr.Эта микросхема поставляется в 3 разных пакетах, но мы используем популярный 28-контактный пакет pdip atmega8 16pu. Контакты 23,24,25,26,27,28 и 1 используются для порта c, тогда как контакты 9,10,14,15,16,17,18,19 используются для порта b и контактов 2,3,4, 5,6,11,12 используются для порта d. Начало работы с программированием на c для atmel avr. Еще немного углубимся в программирование микроконтроллера и заставим мигать светодиод. Эти проекты и руководства atmega8 объясняются с помощью схем, исходных кодов и видео. Эта микросхема поставляется в 3 разных пакетах, но мы используем популярный 28-контактный пакет pdip atmega816pu.В этом руководстве используются плата разработки atmel stk500 и микросхема atmega16. Avr studio предоставляет идеал для написания, отладки и моделирования программ.


Источник: m-gen.ru