ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ AVR

AVR-программирование. Программирование микроконтроллеров AVR для начинающих

ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ AVR

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

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

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

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

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

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

В рамках статьи будет рассмотрено семейство микроконтроллеров, выпускаемых фирмой Atmel. Они имеют довольно неплохую производительность, что позволяет использовать их во многих любительских устройствах. Широко применяются и в промышленности. Можно встретить в такой технике:

  1. Бытовой. Стиральные машины, холодильники, микроволновые печи и прочее.
  2. Мобильной. Роботы, средства связи и так далее.
  3. Вычислительной. Системы управления периферийными устройствами, материнские платы.
  4. Развлекательной. Украшения и детские игрушки.
  5. Транспорт. Системы безопасности и управления двигателем автомобиля.
  6. Промышленное оборудование. Системы управления станками.

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

Для написания программ используются языки С и Assembler, немного изменённые под семейство микроконтроллеров. Такие изменение необходимы из-за слабых вычислительных возможностей, которые исчисляются, как правило, в десятках килобайт.

AVR-программирование без изучения этих языков не представляется возможным.

AVR-программирование требует:

  1. Наличия необходимой среды разработки.
  2. Собственно самих микроконтроллеров.

Второй пункт рассмотрим подробнее. Существует три возможности обзавестись требуемым устройством:

  1. Купить непосредственно сам микроконтроллер.
  2. Обзавестись устройством в составе конструктора (например – Arduino).
  3. Собрать микроконтроллер самостоятельно.

В первом пункте ничего сложного нет, поэтому сразу перейдём ко второму и третьему.

Обзавестись устройством в составе конструктора

В качестве примера будет выбран известный Arduino. Это электронный конструктор, по совместительству удобная платформа для быстрой и качественной разработки различных электронных устройств. Плата Arduino включает в себя определённый набор компонентов для работы (существуют различные конфигурации). В неё обязательно входит AVR-контроллер.

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

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

Особенностью также является и то, что программирование на “СИ” здесь отличается довольно сильно от стандартной формы. Несмотря на все свои недостатки, Arduino подходит для изучения новичкам. Но злоупотреблять не стоит.

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

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

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

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

Как работать?

Итак, допустим, что вопрос с микроконтроллером решился. Далее будет считаться, что он был приобретён или же куплен самостоятельно.

Что ещё нужно, чтобы освоить AVR-программирование? Для этой цели нужна среда разработки (в качестве базиса подойдёт и обычный блокнот, но рекомендую остановиться на Notepad++).

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

Не помешает и печатная плата. Она не обязательна, но её использование позволяет сэкономить свои нервы и время. Также покупается/создаётся самостоятельно. И последнее – это источник питания. Для AVR необходимо обеспечить поступление напряжения на 5В.

Где и как учиться?

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

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

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

Конечно, на одних книгах выехать не получится, но получить базовые знания про устройство, программирование на “СИ”, “Ассемблере” и о других рабочих моментах можно.

Порты ввода/вывода

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

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

В качестве примера устройства был выбран микроконтроллер AtMega8 – один из самых популярных из всего семейства AVR. Порт ввода/вывода представляет собой три регистра, которые отвечают за его работу. На физическом уровне они реализовываются как ножки.

Каждой из них соответствует определённый бит в управляющем реестре. Каждая ножка может работать как для ввода информации, так и для её вывода. Например, на неё можно повесить функцию зажигания светодиода или обработку нажатия кнопки. Кстати, три регистра, о которых говорилось, это: PORTx, PINx и DDRx.

Каждый из них является восьмиразрядным (не забываем, что мы рассматриваем AtMega8). То есть один бит занимается определённой ножкой.

Наиболее весомым в плане ориентации является управляющий DDRx. Он также является восьмиразрядным. Значения для него могут быть записаны 0 или 1.

Как меняется работа контроллера при использовании нулей и единицы? Если в определённом бите выставить 0, то соответствующая ему ножка будет переключена в режим входа. И с неё можно будет считывать данные, что идут с внешних устройств.

Если установить 1, то микроконтроллер сможет управлять чем-то (например, дать приказ транзистору пропустить напряжение и зажечь светодиод). Вторым по важности является PORTx. Он занимается управлением состояния ножки. Давайте рассмотрим пример. Допустим, у нас есть порт вывода.

Если мы устанавливаем логическую единицу в PORTx, то посылается сигнал от микроконтроллера управляющему устройству начать работу. Например, зажечь светодиод. При установлении нуля он будет гаситься. То есть работать с управляющим регистром DDRx постоянно, нет надобности. И напоследок давайте о PINx.

Этот регистр отвечает за отображение состояния ножки контроллера, когда она настроена на состояние ввода. Следует отметить, что PINx может работать исключительно в режиме чтения. Записать в него ничего не получится. Но вот прочитать текущее состояние ножки – это без проблем.

Работа с аналогами

AVR не являются единственными микроконтроллерами. Этот рынок поделен между несколькими крупными производителями, а также между многочисленными китайскими имитирующими устройствами и самоделками. Во многом они подобны. К примеру, программирование PIC/AVR сильно не отличается.

И если есть понимание чего-то одного, то понять всё остальное будет легко.

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

Техника безопасности

Когда будет вестись программирование микроконтроллеров AVR на “СИ” или на “Ассемблере”, то необходимо работать очень осторожно. Дело в том, что выставив определённую комбинацию регистров и изменив внутренние настройки, можно спокойно заблокировать микроконтроллер. Особенно это касается фьюзов.

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

При сборке своими руками может возникнуть печальная ситуация, при которой программатор заблокирует устройство. Это может произойти как из-за ошибки в программном коде, так и через неполадки в нём самом.

Кстати, об ещё одном (на этот раз позитивном) моменте, который ранее вскользь упоминался, но так и не был раскрыт полностью. Сейчас практически все современные микроконтроллеры обладают функцией внутрисхемного программирования. Что это значит? Допустим, что устройство было запаяно на плате.

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

Какую модель выбрать?

В рамках статьи была рассмотрена AtMega8. Это довольно посредственный за своими характеристиками микроконтроллер, которого, тем не менее, хватает для большинства поделок. Если есть желание создать что-то масштабное, то можно брать уже своеобразных монстров вроде Atmega128. Но они рассчитаны на более опытных разработчиков.

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

Первоначально можно начать с AtMega8, а потом уже ориентироваться по своим потребностям.

Заключение

Вот и была рассмотрена тема программирования AVR в самых общих чертах. Конечно, ещё о многом можно рассказывать. Так, к примеру, не было рассмотрено маркирование микроконтроллеров. А оно может о многом сказать. Так, в основном микроконтроллеры работают на напряжении в 5В.

Тогда как наличие, к примеру, буквы L может сказать о том, что для работы устройства достаточно только 2,7 В. Как видите, порой знания о маркировке могут сыграть очень важную роль в плане корректной и долговечной работы устройств. Время функционирования микроконтроллеров – это тоже интересная тема. Каждое устройство рассчитано на определённый период.

Так, некоторые могут отработать тысячу часов. Другие же имеют гарантийный запас в 10 000!

Источник: https://FB.ru/article/332457/avr-programmirovanie-programmirovanie-mikrokontrollerov-avr-dlya-nachinayuschih

Вы еще не программируете микроконтроллеры? Тогда мы идем к вам!

ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ AVR

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

Тема микроконтроллеров меня заинтересовала очень давно, году этак в 2001.

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

Решил попробовать. Итак, что нам понадобится:

1. Программатор

На рынке предлагается много вариантов — от самых дешевых ISP (In-System Programming) программаторов за несколько долларов, до мощных программаторов-отладчиков за пару сотен. Не имея большого опыта в этом деле, для начала я решил попробовать один из самых простых и дешевых — USBasp. Купил в свое время на eBay за $12, сейчас можно найти даже за $3-4.

На самом деле это китайская версия программатора от Thomas Fischl. Что могу сказать про него? Только одно — он работает. К тому же поддерживает достаточно много AVR контроллеров серий ATmega и ATtiny. Под Linux не требует драйвера.

Для прошивки надо соединить выходы программатора VCC, GND, RESET, SCK, MOSI, MISO с соответствующими выходами микроконтроллера.

Для простоты я собрал вспомогательную схему прямо на макетной плате:

Слева на плате — тот самый микроконтроллер, который мы собираемся прошивать.

2. Микроконтроллер

С выбором микроконтроллера я особо не заморачивался и взял ATmega8 от Atmel — 23 пина ввода/вывода, два 8-битных таймера, один 16-битный, частота — до 16 Мгц, маленькое потребление (1-3.6 мА), дешевый ($2). В общем, для начала — более чем достаточно.

Под Linux для компиляции и загрузки прошивки на контроллер отлично работает связка avr-gcc + avrdude. Установка тривиальная. Следуя инструкции, можно за несколько минут установить все необходимое ПО.

Единственный ньюанс, на который следует обратить внимание — avrdude (ПО для записи на контроллер) может потребовать права супер-пользователя для доступа к программатору. Выход — запустить через sudo (не очень хорошая идея), либо прописать специальные udev права.

Синтаксис может отличаться в разных версиях ОС, но в моем случае (Linux Mint 15) сработало добавление следующего правила в файл /etc/udev/rules.d/41-atmega.rules:

# USBasp programmerSUBSYSTEM==”usb”, ATTR{idVendor}==”16c0″, ATTR{idProduct}==”05dc”, GROUP=”plugdev”, MODE=”0666″ После этого, естественно, необходим перезапуск сервиса service udev restart
Компилировать и прошивать без проблем можно прямо из командной строки (кто бы сомневался), но если проектов много, то удобнее поставить плагин AVR Eclipse и делать все прямо из среды Eclipse. Под Windows придется поставить драйвер. В остальном проблем нет. Ради научного интереса попробовал связку AVR Studio + eXtreme Burner в Windows. Опять-таки, все работает на ура.

Начинаем программировать

Программировать AVR контроллеры можно как на ассемблере (AVR assembler), так и на Си. Тут, думаю, каждый должен сделать свой выбор сам в зависимости от конкретной задачи и своих предпочтений. Лично я в первую очередь начал ковырять ассемблер.

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

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

БАЦ! Вот она — идея первого проекта! Можно было конечно заказать их на том же eBay, но захотелось сделать свои собственные часы, с блэк… эээ… с индикаторами и кнопочками. Сказано — сделано!
В качестве дисплея решено было использовать два 7-сегментных диодных индикатора.

Для управления достаточно было 5 кнопок — “Игрок 1”, “Игрок 2”, “Сброс”, “Настройка” и “Пауза”. Ну и не забываем про звуковую индикацию окончания игры. Вроде все. На рисунке ниже представлена общая схема подключения микроконтроллера к индикаторам и кнопкам. Она понадобится нам при разборе исходного кода программы:

Разбор полета

Начнем, как и положено, с точки входа программы — функции main. На самом деле ничего примечательного в ней нет — настройка портов, инициализация данных и бесконечный цикл обработки нажатий кнопок. Ну и вызов sei() — разрешение обработки прерываний, о них немного позже. int main(void){ init_io(); init_data(); sound_off(); sei(); while(1) { handle_buttons(); } return 0;} Рассмотрим каждую функцию в отдельности. void init_io(){ // set output DDRB = 0xFF; DDRD = 0xFF; // set input DDRC = 0b11100000; // pull-up resistors PORTC |= 0b00011111; // timer interrupts TIMSK = (1

Источник: https://habr.com/post/205972/

Программирование микроконтроллеров avr

ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ AVR

Всем привет! Хочу рассказать о своем USB программаторе для микроконтроллеров AVR. Данная информация очень пригодится тем, кто только начинает осваивать микроконтроллеры.

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

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

Данный программатор позволяет прошивать любые микроконтроллеры семейства AVR. Его главная особенность в том, что для его сборки не нужно иметь программатор. Это потому, что схема основана на микроконтроллере AT90USB162, а он в свою очередь, может быть прошит без программатора, с помощью программы FLIP, благодаря встроенному буатлодеру. 

Когда вы собрали плату данного устройства, не обходимо скачать программу FLIP. Далее проводим следующие действия:

  1. выбираем AT90USB162 (Device->Select);
  2. открываем usb порт (Settings->Communication->USB);
  3. открываем прошивку (File->Load HEX File…);
  4. нажимаем Run (отмечены Erase, Program, Verify).

И наш программатор готов к использованию. Но без установки драйверов, программатор работать не будет. Драйвера подойдут, только те, которые идут вместе с программой AVR Studio. Я использую четвертую версию данной программы, так как её интерфейс наиболее удобен и прост для пользователя. Первым делом скачиваем и устанавливаем AVR Studio 4 с официального сайта Atmel.

Установка очень проста: соглашаемся с правилами пользования и дальше нажимаем кнопку next. После установки самой программы, на ваш компьютер будет предложено установить драйвера для программаторов, с этим ОБЯЗАТЕЛЬНО нужно согласиться, иначе программаторы не будут работать. 

Далее нужно вставить программатор в компьютер и проверить правильно ли установились драйвера. Для этого заходим в диспетчер устройств(Мой компьютер – Свойства – Диспетчер устройств).

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

Затем выбираем пункт – поиск драйверов на компьютере – Выбор из установленных.

В появившемся окне выбираем наш драйвер, который установился с AVR studio.

Далее нужно выбрать модель программатора и нажать кнопку «Далее»:

На этом этапе, если у вас включена функция проверки драйверов, может появиться вот такое окно:

(Выбираем второй пункт)

Если вы сделали всё так, как написано, то у вас появиться следующее:

И программатор будет правильно определяться:

На этом этап установки программного обеспечения закончен, можно переходить к практике.

Подключение контроллера AVR к ПК

Подключаем к нашему программатору микроконтроллер. Я это сделал с помощью проводов:

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

Работа с программой AVR Studio

Когда аппаратная часть готова, переходим к программной. Открываем программу AVR Studio. Сначала нужно выбрать программатор. Для этого нажимаем на кнопку:

Выбираем порт и программатор и нажимаем Connect.

Появиться следующее окно:

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

Для выбора микроконтроллера, есть выпадающий список:

Фьюз биты устанавливаются на вкладке Fuses, на вкладке Program вы загружаете файлы прошивки:

Как вы могли догадаться, кнопка Erase Device – предназначена для очистки памяти контроллера.

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

Как вы можете заметить на моем скриншоте, поля для выбора прошивки не активны, это связано с тем, что я не подключил микроконтроллер.

При установке фьюз-битов, не убирайте галочку возле SPIEN, это очень ВАЖНО! При программировании проверьте, подключен ли кварцевый резонатор, это также очень важно, иначе ваш контроллер будет не пригоден для дальнейшего программирования. На этом всё. С вами был Кирилл.

   Форум по МК

   Обсудить статью Программирование микроконтроллеров avr

Источник: https://radioskot.ru/publ/mk/programmirovanie_mikrokontrollerov_avr/9-1-0-1375

Краткий Курс

ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ AVR

Добавить страницу в закладки:

– стр. 7 –

Чем и как “прошить” МК AVR ? Как загрузить программу в микроконтроллер.

Как запрограммировать микроконтроллер AVR.

Напоминаю: Об основах и тонкостях электроники и схемотехники читайте в настольной книге электронщика:  П.Хоровиц, У.Хилл. Искусство схемотехники на РУССКОМ языке.   

Я советую прошивать микроконтроллер прямо из программатора встроенного в компилятор CodeVisionAVR через простейший адаптер – буквально “пять проводков” соединяющих принтерный порт ПК с прошиваемым микроконтроллером AVR.

ПОДРОБНО: Результат написания и компиляции программы – файл-прошивку с расширением .hex (и возможно файл с содержимым для
EEPROM МК) нужно записать (“зашить”) в МК .

МК AVR многократно программируются прямо в устройстве в котором будут работать – такое программирование называют – “ин систем программинн” или ISP.

 

Для этого установите на плате вашего устройства 6 контактов,  а лучше 6-ти штырьковый разъем для ISP

вид сверху платы на штырьки.  выводы подсоединить к МК в соответствии с указанными названиями.

Подробней по ISP разъемам посмотрите Апликейшн Ноут AVR910. 


Вывод 2 нужно подключить к
+ питания МК если вы собираетесь использовать программатор питающийся от вашего же устройства – например фирменный ISP AVR. 

Для “5 проводов” этот вывод не подключается.

Для программирования достаточно 5 контактов. Соответственно и разъем который вы будете использовать может быть любым удобным для размещения на плате и имеющий минимум 5 контактов.

Все контакты ISP разъема подсоединяются к  ножкам  МК в соответствии с названиями.

ВНИМАНИЕ !  в ATmega64 и ATmega128 выводы MOSI и MISO не применяют для ISP  Внимательно смотрите ДатаШит !     Например для ATmega128 сигналы MISO подключают к ножке PE1,  MOSI подключают к ножке PE0

Я советую вам пользоваться  интерфейсом программирования встроенным в компилятор CodeVisionAVR и конечно же в нем разрабатывать программу для МК.

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

Вы можете в компиляторе CodeVisionAVR открыть меню “Проджект -> Конфига -> Афта Мэйк”  и отметить чек бокс  “Program the chip” затем ОК. Еще нужно в меню “Сеттинс  -> Программер” выбрать ваш адаптер (подробней ниже) для программирования.

Теперь после безошибочной компиляции программы вам будет доступна кнопка “Program” – нажмите на нее и произойдет программирование МК – т.е. файл .hex будет загружен в память программ МК. Затем МК будет “сброшен” (на ножку RESET будет подан лог.

0 а затем опять “1”) и начнет выполнять только что прошитую (загруженную в него) программу. Вам даже не нужно будет отсоединять адаптер программирования от вашего устройства  если вы не используете в устройстве последовательный интерфейс SPI.  … и так до окончательной отладки устройства.

В А Ж Н О !  В диалоге настройки программирования не трогайте галочки установки фьюзов МК если не разобрались четко что они делают! Иначе вы можете отключить режим ISP или внутренний RC-генератор и для следующего программирования вам понадобится ставить кварц с конденсаторами или даже искать Параллельный программатор для AVR. Но популярному ATtiny2313 даже параллельный программатор не поможет!  

в ATmegaXXX с завода включен внутренний RC генератор на  частоте 1 МГц   ( уточните это по ДШ  и его возможные частоты ) Если вам нужна другая частота или нужно включить внешний кварцевый или керамический резонатор – вам нужно запрограммировать некоторые фьюзы по таблицам из ДШ или по таблице фьюзов на стр. 2

З а п о м н и т е : 

  • НЕ запрограммированный  фьюз        1
  • ЗАпрограммированный   фьюз             0

Пример: Чтобы включить в ATmega16 внешний кварцевый резонатор с частотой от 3 до 8 МГц с конденсаторами (по схеме рис. 12 ДШ) найдите в ДШ раздел “System Clock”.

В таблице 2 указаны комбинации фьюзов для разных источников тактового сигнала. Далее написано что с завода МК поставляется с такой комбинацией фьюзов

SKSEL   0001     SUT  10  CKOPT   1

По таблице 4  находим : Для кварца с частотой от 3 до 8 МГц  нужны конденсаторы от 12 до 22 пФ и  вот  такая  комбинация  фьюзов :

SKSEL   1111     SUT  10  CKOPT   1

Установка фьюзов в программаторе компилятора  CVAVR

Для прошивания МК нажмите кнопку “Program All”

Для использования ATmega16 (и других мег) с внешним кварцевым или керамическим резонатором на частотах выше 8 МГц вам нужно установить фьюзы как в примере выше но запрограммировать CKOPT  – значит сделать его “0”. Т.е. вам нужна такая комбинация:

SKSEL   1111     SUT  10  CKOPT   0

CKOPT   – нужен и тогда когда вы хотите подключить к XTAL2 другой микроконтроллер или тактируемый прибор.

Фьюзы  SUT   – определяют запуск генератора тактового сигнала, в большинстве случаев их установку можно оставить “как с завода”  –   SUT  10   –  более детально это описано в даташите в таблицах до 12.

  Для соединения компьютера с ISP разъемом устройства на AVR Советую сделать адаптер от STK200  – это “правильные 5 проводков” с микросхемой буфером снижающим вероятность случайного повреждения порта ПК.

В установках компилятора CodeVisionAVR интерфейс “5-проводков” называется  “Канда системз STK200+/300”

Программа узнаёт адаптер STK200 по перемычкам на разъеме параллельного порта к которому он подключается – должны быть соединены двумя перемычками пары выводы: 2 и 12,  3  и 11. 

 

Внимание!   Для программирования к МК должно быть подключено питание. Например +4…+5 вольт ко всем выводам МК в названии которых есть VCC  и 0 вольт ко всем выводам GND (это “общий” провод).     Пример тут

Попробуйте поискать полезную инормацию в Гугле – ее там море ! Учитесь искать!

Если в МК нет внутреннего генератора тактового сигнала (например старые AVR серии AT90sXXXX или мега побывавшая в чьих то шаловливых руках изменивших фьюзы до того как попасть к вам) то нужно подключить кварц  на 1 – 8 МГц и два конденсатора от 15 до 33 пФ. Либо подать тактовый сигнал 1-1.5 МГц от внешнего источника – например генератора на микросхеме 74hc14 или на таймере LM555.

Программатор  AVReAl  может программировать МК без кварца и без конденсаторов. Он выводит тактовый сигнал на выв. 5 LPT его нужно подать на ножку XTAL1 МК и добавить в командной строке AVReAL специальный ключ  “-o0”.  Программатор  AVReAl  позволяет назначать какие ножки LPT порта использовать – это будет полезно когда часть ножек LPT вы уже спалите   🙂

(Тактовый сигнал генерирует и программатор на USB по ссылке внизу этой страницы.)

 Еще очень советую поставить подтягивающий резистор 10 кОм от ножки Reset МК на питание VCC и конденсатор 0.01-0.33 мкФ (в апноутах AVR040 и AVR042 рекомендуют 0.01 мкФ) от Reset на GND  –  как в схеме к задаче 7 курса.

 

Я использую самый простой вариант адаптера STK200 – “для самых ленивых”   – пять поводков соединяющих линии параллельного (LPT) порта ПК и AVR так же как на схеме STK200 выше, но без микросхемы буфера. Лучше все же токоограничительные резисторы от 150 до 270 ом впаятьПроводки не более 15 см длиной !

Адаптер “5-проводков” прекрасно работает с компилятором CodeVision

Советую для изготовления адаптера взять ” принтерный” шнур – он длинный и экранированный, а не экранированные проводки не стоит делать более 10-15 см.

 
Для питания устройства при программировании и отладке можно кроме сетевого адаптера использовать: 

  • – батарейку на 6 вольт с 2 диодами последовательно для понижения напряжения…
  • – можно три батарейки по 1,5 вольт последовательно соединить 
  • … а можно +5 вольт взять с вывода 1 гейм порта компьютера или осторожно из гнезда USB.

Желательно питать устройство от ПК!  В этом случае “земля” вашего устройства будет соединена с корпусом ПК и можно будет безопасно подключать и отключать разъем программирующего адаптера.

ВНИМАНИЕ!  Всегда старайтесь первыми соединить “земли” устройств, а затем питание и потом уже сигнальные линии.

Не поленитесь:  спаяйте адаптер STK200 на микросхеме буфере по рисункам внизу страницы  – так как LPT порт компьютера более нежен чем COM – соответственно его спалить проще…   

 

Если вы хотите использовать ножки МК SCK, MOSI, MISO в вашем устройстве то подключайте другие компоненты к ним через резисторы 4.7 КОм – чтобы не мешать программированию. Так рекомендовано в апноуте AVR042 Для Мега64, -128, -256 вместо MOSI и MISO используются другие ножки для ISP программирования !

Если у вас нет LPT порта сделайте Аналог  “5 проводков” для COM-порта

Или соберите простой, дешевый USB программатор для AVR

Или соберите похожий программатор USB  программатор AVR и AT89s

Вот топик об успешной сборке этого интерфейса для программирования на ATmega8. Это новый вариант платы для него. Архив с разводкой платы Внимание !  Этот программатор выдает тактовый сигнал 1 МГц и меньше для прошивки МК без кварца и с выключенным внутренним генератором. тактовый сигнал выводится на контакт “LED”. Его нужно подвести к ножке XTAL1.

Существуют специальные программы “бутлодеры” которые записываются в микроконтроллер способами перечисленными выше и после этого микроконтроллер может сам, при включении, закачивать в себя программу (например из ПК через адаптер UART rs232 COM port – схема в задаче 4 курса) и запускать ее выполнение. Есть много бесплатных загрузчиков

  • Вот хороший:   Bootloader AVR.
  • Вот еще:    MegaLoad Bootloader

Программатор AVR микроконтроллеров. LPT программатор.

Кликни чтобы увеличить

Принципиальная схема программатора на LPT порт показана на рисунке. В качестве шинного формирователя используется микросхема 74HC244 (К1564АП5), 74LS244 (К555АП5) либо 74ALS244 (К1533АП5), хотя может использоваться любой другой неинвертирующий шинный формирователь с тремя состояниями (в этом случае может потребоваться соответствующее изменение схемы).

Светодиод VD1 индицирует режим записи микроконтроллера, светодиод VD2 – чтения,

светодиод VD3 – наличие питания схемы.

Напряжение, необходимое для питания схема берёт с разъёма ISP, т.е. от программируемого устройства. Эта схема является переработанной схемой программатора STK200/300 (добавлены светодиоды для удобства работы), поэтому она совместима со всеми программами программаторов на PC, работающих со схемой STK200/300. Для работы с этим программатором используйте программу CVAVR

Программатор можно выполнить на печатной плате и поместить её в корпус разъёма LPT, как показано на рисунках:

Для работы с программатором удобно использовать удлинитель LPT порта, который несложно изготовить самому (к примеру, из кабеля Centronix для принтера), главное “не жалеть” проводников для земли (18-25 ноги разъёма) или купить. Кабель между программатором и программируемой микросхемой не должен превышать 20-30 см.

Файлы:

AVR miniICE

 

Это профессиональное средство для программирования и  отладки программы МК ATmega фирмы Atmel в реальном устройстве. Он полностью совместимый с оригинальным AVR JTAG ICE.

Автор данного устройства Milan Kostomlatsky

[email protected]

Оригинальное описание находится здесь

Пример реализации: на макетке

Добавить страницу в закладки:

 

Источник: http://www.123avr.com/07.htm

Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера

ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ AVR

Название: Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера 2 издание

Юрий Ревич

Издательство: «БХВ-Петербург»

Год издания: 2011

Страниц: 354

Язык: Русский

Формат: DjVu

Размер: 12,2 Мб

Наложены принципы функционирования, особенности архитектуры и приемы программирования микроконтроллеров Atmel AVR.

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

Для учащихся, инженерно-технических работников и радиолюбителей

 Оглавление

7. Микроконтроллеры, их возникновение и применение8. Предыстория микроконтроллеров10. Электроника в греческом стиле12. Почему AVR?14. Что дальше?

17.ЧАСТЬ L ОБЩИЕ ПРИНЦИПЫ УСТРОЙСТВА И ФУНКЦИОНИРОВАНИЯ ATMEL AVR

19. Глава 1. Обзор микроконтроллеров Atmel AVR21. Семейства AVR23. Особенности практического использования МК AVR23. О потреблении25. Некоторые особенности применения AVR в схемах

27. Глава 2. Общее устройство, организация памяти, тактирование, сброс

27. Память программ29. Память данных (ОЗУ, SRAM)31. Энергонезависимая память данных (EEPROM)32. Способы тактирования34. Сброс

37. Глава 3. Знакомство с периферийными устройствами

38. Порты ввода-вывода39. Таймеры-счетчики41. Аналогово-цифровой преобразователь42. Последовательные порты43. UART46. Интерфейс SPI50. Интерфейс TWI (I2С)50. Универсальный последовательный интерфейс USI

53. Глава 4. Прерывания и режимы энергосбережения

53. Прерывания57. Разновидности прерываний58. Режимы энергосбережения

61. ЧАСТЬ II. ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ ATMELAVR

63. Глава 5. Общие принципы программирования МК семейства AVR63. Ассемблер или С?67. Способы и средства программирования AVR67. Редактор кода68. Об AVR Studio70. Обустройство ассемблера71. Программаторы75. О hex-файлах78. Команды, инструкции и нотация AVR-ассемблера79. Числа и выражения80. Директивы и функции84. Общая структура АVR-программы85. Обработка прерываний89. RESET90. Простейшая программа92. Задержка94. Программа счетчика96. Использование прерываний97. Задержка по таймеру98. Программа счетчика с использованием прерываний101. О конфигурационных битах

105. Глава 6, Система команд AVR

105. Команды передачи управления и регистр SREG111. Команды проверки-пропуска113. Команды логических операций114. Команды сдвига и операции с битами116. Команды арифметических операций118. Команды пересылки данных122. Команды управления системой123. Выполнение типовых процедур на ассемблере125. О стеке, локальных и глобальных переменных

127. Глава 7. Арифметические операции

128. Стандартные арифметические операции129. Умножение многоразрядных чисел131. Деление многоразрядных чисел134. Операции с дробными числами136. Генератор случайных чисел138. Операции с числами в формате BCD143. Отрицательные числа в МК

147. Глава 8. Программирование таймеров

147. 8- и 16-разрядные таймеры149. Формирование заданного значения частоты153. Отсчет времени158. Точная коррекция времени160. Частотомер и периодомер160. Частотомер164. Периодомер167. Управление динамической индикацией168. LED-индикаторы и их подключение171. Программирование динамической индикации174. Таймеры в режиме PWM

179. Глава 9. Использование EEPROM

179. Еще раз о сохранности данных в EEPROM181. Запись и чтение EEPROM183. Хранение констант в EEPROM

187. Глава 10. Аналоговый компаратор и АЦП

187. Аналого-цифровые операции и их погрешности190. Работа с аналоговым компаратором193. Интегрирующий АЦП на компараторе194. Принцип работы и расчетные формулы198. Программа интегрирующего АЦП201. Встроенный АЦП204. Пример использования АЦП206. Программа

215. Глава 11. Программирование SPI

215. Основные операции через SPI216. Аппаратный вариант218. Программный вариант219. О разновидностях энергонезависимой памяти221. Запись и чтение flash-памяти через SP!224. Программа обмена с памятью 45DB011В по SPI225. Запись и чтение flash-карт225. Подключение карт ММС228. Подача команд и инициализация ММС232. Запись и чтение ММС

237. Глава 12. Интерфейс TW1 (I2С) и его практическое использование

237. Базовый протокол 12С
240. Программная эмуляция протокола I2С241. Запись данных во внешнюю энергонезависимую память241. Режимы обмена с памятью АТ24243. Программа

247. Часы с интерфейсом I2С

255. Запись данных259. Чтение данных

261. Глава 13. Программирование UART/USART

262. Инициализация UART263. Передача и прием данных266. Пример установки часов DS1307 с помощью UART271. Приемы защиты от сбоев при коммуникации271. Проверка на четность273. Как организовать корректный обмен274. Дополнительные возможности USART276. Реализация интерфейсов RS-232 и RS-485280. Преобразователи уровня для RS-232283. RS-485

285. Глава 14. Режимы энергосбережения и сторожевой таймер

286. Программирование режима энергосбережения287. Пример прибора с батарейным питанием289. Доработка программы293. Использование сторожевого таймера

299. ПРИЛОЖЕНИЯ

301. Приложение 1. Основные параметры микроконтроллеров Atmel AVR
309. Приложение 2. Команды Atmel AVR310. Арифметические и логические команды311. Команды операций с битами312. Команды сравнения313. Команды передачи управления313. Команды безусловного перехода и вызова подпрограмм314. Команды проверки-пропуска и команды условного перехода315. Команды переноса данных316. Команды управления системой

317. Приложение 3. Тексты программ

317. Демонстрационная программа обмена данными с flash-памятью 45DB011В по интерфейсу SPI321. Процедуры обмена по интерфейсу I2С

329. Приложение 4. Обмен данными с персональным компьютером и отладка программ через UART

329. Работа с СОМ-портом в Delphi335. Установка линии RTS в DOS и Windows337. Программа СОМ2000339. Отладка программ с помощью эмулятора терминала

341. Приложение 5. Словарь часто встречающихся аббревиатур и терминов

347. Литература
349. Предметный указатель

Книга из серии “Ремонт” –  Диагностика и ремонт блоков питания ЖК и плазменных телевизоров SAMSUNG

Приложение к журналу «Ремонт & Сервис»

В очередной книге популярной серии «Ремонт» рассматриваются блоки питания современных жидкокристаллических и плазменных телевизоров SAMSUNG производства 2007-2010 гг. По статистике ремонтных организаций это наименее надежный узел современных телевизоров и других устройств, в которых используются ЖК панели.

В книге рассматривается 13 блоков питания, которые применяются при производстве более 50 моделей телевизоров.

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

Page 3

Источник: http://radio-hobby.org/modules/news/article.php?storyid=1095

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.