Site Loader

Содержание

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Вот вы написали программу, и залили её в свой UNO. Всё великолепно работает, но такую громадную железку не запихнуть в миниатюрный корпус. Да и вдруг, вы хотите сделать 100 таких устройств, а зачем вам увеличение себестоимости, ведь на платах Arduino куча ненужного барахла.

Ну что же, попробуем. Для начала, как мы помним, в самых распространённых платах Nano и Mega, используется камень AtMega328P. Логично, что для его запуска, нам нужно подать питание на него. Для этого здесь достаточно много пинов VCC и GND, особенно в планарных типах корпуса. Связано это с топологией чипа на уровне производства, ведь каждый пин контроллера держит токовую нагрузку, поэтому МК должен быть запитан равномерно со всех сторон

Пин AREF отвечает за опорное напряжение АЦП, туда можно подать напряжение, относительно которого вы хотите читать результаты, или, если это будет 5в, или 2.5 от внутреннего делителя, то подтянуть конденсатором к питанию.

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

Знаете, на arduino, есть такая кнопка – Reset, от которой можно перезагрузить МК. Это такой выход i/o, на который на который вроде бы можно повесить периферию, но с большими ограничениями. Поэтому, если вам хватает ног, лучше не трогайте этот пин. Изначально он подтянут внутренним резистором, но лучше, для надёжности и стабильности сделать внешнюю подтяжку резистором 10кОм. Перезагружать готовое устройство нужды особой нет – кнопку ставить не будем.

Теперь нужно разобраться с тактированием. Arduino работает на частоте 16Мгц, т.е. от внешнего кварца. Если вы продолжаете работать на этой частоте, то этот кварц нужно установить на создаваемую плату, вместе с конденсаторами 22пФ.

Но если точность вычислений вам не сильно нужна, а хочется сэкономить в размерах, как иногда мне, то кварц можно вообще не ставить, а тактироваться от внутренней RC цепочки с 8Мгц. Как скомпилировать прошивку в arduino с другой частотой в 8Мгц, я расскажу позже. А пока рассмотрим самую важную часть – как программировать то голый микроконтроллер? Ведь usb выхода у него нет. Есть разные пути, но самый простой – использовать внутрисхемное программирование SPI. И купить дешёвый программатор USB ASP. Мой выглядит так, у него не подписаны контакты

Нарисовал удобную распиновку, если смотреть со стороны контактов. Для SPI нам важны 5 контактов, но я обычно беру и питание с программатора – MISO, MOSI, SCK, RST, GND

Также у меня лежит самодельный UsbAsp, но он громоздкий, и у него не сделан вывод 3.3в, поэтому я его давно не использую

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

Теперь если подать питание, и подключить выводы программатора MOSI, MISO, SCK, RESET, GND то можно приступать к программированию. Как помните, из предыдущей статьи, где мы рассказали как достать HEX файл из среды Arduino, IDE делает два файла – *.hex и *with_bootloader.hex. Загрузчик нам не нужен, поэтому будем использовать обычный *.hex. Есть один нюанс – при покупке голого кристалла, он запрограммирован на RC цепочку 1Мгц. Да и вообще у atmega, есть система фьюз-битов. Выглядит это обычно не очень понятно, но конечно в среде Arduino всё это вырезано, чтоб не смущать новичков. Чтобы добраться до этих конфигураций, полезно будет скачать программу AVRDUDE. Главное окно выглядит так, здесь нужно сразу выбрать нужный МК

Переходим во вкладку Fuses – здесь, чтобы не наделать бед, а если вы запишите неправильные данные, контроллер можно превратить почти в кирпич (что не очень удобно на распаянной smd плате), я сначала СЧИТЫВАЮ биты, заодно можно убедиться в правильности подключения программатора к МК. Если всё хорошо – получаем такую картинку

Чтобы правильно выставить fuse-биты, нужно воспользоваться помощью специального калькулятора. Я пользуюсь этим. Тут также нужно выбрать чип, способ тактирования и другие параметры. В принципе для смены частоты достаточно сменить блок CKSEL фьюзов. В данном случае я выбрал Int RC – 8Mhz.

Получил картинку фьюзов.

А теперь переносим параметры в AVR DUDE, также калькулятор включает делитель на 8, бит CKDIV8, он нам не нужен. Можете пользоваться нижеприведённым скриншотом, для запуска atmega 328p на 8Мгц от внутреннего RC осциллятора.

Жмём запись – и МК принимает необходимую конфигурацию. Теперь осталось залить прошивку, но ведь она у нас рассчитана на 16Мгц, но в Arduino IDE, есть простой путь скомпилировать прошивку для atmega 328, для частоты 8Мгц. Нужно выбрать плату arduino pro, и указать частоту 8mhz

Как вы заметили, напротив чипа, стоит напряжение 3.3В при пониженной частоте – всё верно, но это не означает, что нельзя запитать кристалл от 5В. Зато от 3.3В теперь можно). Теперь после компиляции нам осталось по знакомому пути найти файл прошивки в формате HEX, и вернуться в AVR DUDE. Выбрать файл прошивки – и нажать программирование.

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

Аппаратная ШИМ в микроконтроллере ATmega8

В этой заметке я постараюсь немного затронуть тему аппаратной ШИМ (широтно-импульсной модуляции, англ. PWM — Pulse-width modulation) в микроконтроллерах семейства AVR на примере микроконтроллера ATmega8. Классический ШИМ сигнал представляет собой цифровой сигнал, определенной постоянной частоты.

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

ШИМ сигналы, скважность которых увеличивается с верхнего графика к нижнему:

ШИМ совместно с RC цепочкой используется для генерации аналогового сигнала, а если позволяет частота – то я для воспроизведения звука. Мое первое столкновения с ШИМ произошло, когда я захотел плавно менять яркость мощного одноваттного светодиода. После ШИМ помогла решить проблему управления скоростью вращения двигателя постоянного тока, и управления цветом RGB светодиода.

Для демонстрации работы с ШИМ напишем программу, которая будет плавно менять яркость светодиода от нуля до максимума, а потом плавно ее снижать. То есть нам нужно сгенерировать примерно такой

ШИМ сигнал (масштаб не соблюден):

Генерировать сигнал будем аппаратными средствами микроконтроллера ATmega8. Можно конечно сгенерировать все и программно, но это не экономично и неудобно, если микроконтроллер должен выполнять что-то еще, кроме генерации ШИМ сигнала. Принципиальная схема макета:

На схеме показана стандартная обвязка ATmega8. Q1 — любой pnp транзистор, способный выдержать ток 500мА, я использовал биполярный pnp транзистор ZXTN19020, так как у него очень малое сопротивление открытого канала коллектор-эмиттер, всего 18 миллиом и при токах 500ма он не будет ощутимо греться. Транзисторный ключ открывается при высоком уровне на
PB1
и пропускает через цепочку резистор R4-коллектор-эмиттер-светодиод ток, который по закону Ома равен I=5B/R4. (сопротивлением светодиода в рабочем состоянии и канала коллектор-эмиттер на транзисторе Q1 мы пренебрежем).

Зададимся, что наш светодиод во включенном состоянии будет питаться током 500мА (максимальный ток для светодиода Cree MC-E, используемого мною в этом макете, при последовательном соединении 4-х кристаллов составляет 2.8А), для этого вычислим номинал ограничительного резистора:

R4=5В/0,5А=10 Ом. R3 номиналом 1 кОм. Следует не забывать про охлаждение светодиода, иначе очень быстро сгорит. Для небольших мощностей достаточно использовать радиоатор и термопасту. Теперь перейдем к написанию прошивки:

  1. #include <avr/io.h>//библиотека ввода/вывода

  2.  

  3. //Програма задержки

  4. void pause (unsigned int a)

  5. {

  6. unsigned int i;

  7. for (i=a;i>0;i--);

  8. }

  9.  

  10. //Програма инициализации ШИМ

  11. void init_pwm (void)

  12. {

  13. TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ

  14. TCCR1B=(1<<CS10); //Делитель= /1

  15. OCR1A=0x00; //Начальная яркость нулевая

  16. }

  17.  

  18. //Основная програма

  19. int main(void)

  20. { unsigned char i;

  21.  

  22. DDRB=0x02; //Инициализация PB1 (OC1A) как выход

  23. init_pwm();

  24.  

  25. while (1)

  26. {

  27. for (i=0;i<255;i++) //Плавно повышаем яркость

  28. {OCR1A++; pause(1000);}

  29. for (i=0;i<255;i++) //Плавно понижаем яркость

  30. {OCR1A--; pause(1000);}

  31. } return 1;

  32. }


Рассмотрим приведенный выше код.
Сначала мы инициализируем ШИМ, после чего в вечном цикле постепенно увеличиваем-уменьшаем яркость светодиода.

Рассмотрим подробнее инициализацию ШИМ.
Будем использовать так называемый Phase correct PWM на таймере 1. Счетчик TCNT1 постепенно увеличивается (согласно установленному делителю), когда его содержимое становиться равным содержимому OCR1A, то на выводе OC1A в зависимости от битов COM1A0, COM1A1 (в регистре TCCR1A), устанавливается нолик или единица. После счетчик достигает 0xFF (в зависимости от битности ШИМ) и начинает уменьшатся. Как только TCNT1 снова сравняется с OCR1A, на пине OC1A уровень меняется на противоположный. После чего счетчик достигает 0х00 и все повторяется снова.
В нашем случае COM1A1=1,COM1A0=0. И это означает, что при начале счета, на выводе OC1A устанавливается высокий уровень. При достижении счетчиком значения OCR1A при возрастании уровень на OC1A становится нулевым. А при достижении счетчиком значения OCR1A при убывании, уровень на OC1A становиться высоким, и т.д. Проще говоря: «чем больше значение OCR1A – тем больше заполнение сигнала».

Битность и режим ШИМ задается с помощью битов WGM13-WGM10 (биты WGM13,WGM12 находятся в регистре TCCR1B, а биты WGM10, WGM11 в регистре TCCR1A).

Для нашего 8-ми битного Phase correct PWM требуется, чтобы WGM10=1.


Видео работы программы:

Скачать прошивку для ATmega8, как проект для AVR Studio 4

Пример реализации аппаратной ШИМ в несколько каналов на микроконтроллере ATmega8

Правильное подключение микроконтроллера

Подробности
Категория: Микроконтроллеры
Опубликовано 07.09.2016 10:17
Автор: Admin
Просмотров: 2441

На первый взгляд вроде бы простая тема, но многие начинающие радиолюбители которые только начали изучать микроконтроллеры довольно часто задают одни и те же вопросы. К примеру, как подключить светодиод, как обработать события нажатия клавиш, для чего нужны выводы AGND и AREF, AVCC. И раз эти вопросы так часто задают, то тема еще не понятна или не полностью раскрыта и имеет смысл дать исчерпывающий ответ на вопрос «Как правильно подключить микроконтроллер?».

Питание микроконтроллера

Микроконтроллеры в зависимости от модели и серии питаются от напряжения величиной от 1.8 до 5 Вольт. Все микроконтроллеры AVR работают от напряжения в 5 Вольт. Поэтому можно считать что практически у всех микроконтроллеров напряжение питания 5 В, плюсовой вывод на микроконтроллере обозначается как Vcc. Нулевой вывод или еще его называют земля корпус, минусовой вывод обозначается как GND. Если взять блок питания от компьютера то черный провод это GND, а красный это +5 В это и есть Vcc. Если питаем от батареек то минус батарее это GND а плюс это Vcc. Главное чтобы напряжение питания с батареек было в диапазоне напряжения микроконтроллера, это интервал можно посмотреть в документации на МК. 

На пример:

 • Operating Voltages

  • –1.8 — 5.5V (ATtiny2313V)
  • –2.7 — 5.5V (ATtiny2313)

• Speed Grades

  • –ATtiny2313V: 0 — 4 MHz @ 1.8 — 5.5V, 0 — 10 MHz @ 2.7 — 5.5V
  • –ATtiny2313: 0 — 10 MHz @ 2.7 — 5.5V, 0 — 20 MHz @ 4.5 — 5.5V 

Operating Voltage это как раз и есть тот диапазон напряжения в котором возможно нормальная работа МК. Существуют низковольтные серии (ATtiny2313V) у которой минимальное напряжение заметно ниже. 

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

Для того чтобы нам МК начал работать то на него достаточно подать напряжение в 5 В. Как и говорилось ранее один провод кидаем на Vcc а другой на землю — к выводу GND. Некоторые микроконтроллеры имеют несколько выводов Vcc и также несколько GND. Это сделано не для того чтобы вам было делать печатные платы и удобства монтажа а для того чтобы подвести напряжение к камню равномерно, т.е. равномерно запитать весь кристалл. Это делается для того чтобы внутренний линии кристалла не перегружались. К примеру вы взяли МК с квадратным корпусов TQFP у него выводы Vcc и GNВ находятся со всех сторон. С одной стороны вы подвели питание, т.е. задействовали всего лишь 2 вывода питания а с другой  стороны вы подключили на порты кучу светодиодов и взяли и зажгли их разом. Получается что внутренние линии МК перегружены, в результате камень офигеф от такой нагрузки выходит из строя. Поэтому если у контроллера есть несколько выводов питания то запитать нужно все выводы Vcc и GND.

Помимо выводов предназначенных для питания МК есть еще выводы AGND и AVCC — это выводы питания АЦП (аналого-цифрового преобразователя). АЦП это довольно точный измеритель напряжения, по этой причине его можно запитать через фильтры. Для того чтобы помехи которые довольно часто бывают в цепях питания не влияли на результаты измерения. По этой причине в некоторых схемах производят разделение земли, а на вывод AVCC подается напряжение через фильтрующий дроссель. А если вы не планируете пользоваться АЦП и вам не нужны точные измерения, то на AVCC можно подать те же +5 В что и на Vcc, а вывод AGND подключить к земле. Подключать выводы AVCC и GND нужно обязательно!

Ahtung!

В микроконтроллере Atmega8 есть одна ошибка на уровне топологии чипа — выводы VCC и AVCC связаны друг с другом на уровне кристалла и между ними сопротивление 5 Ом. К примеру, в чипах Atmega16 и Atmega168 выводы VCC и AVCC связаны между собой и их сопротивление составляет порядка десяток МОм. В документации по этому поводу ничего не сказано. Поддержка Atmel на это ответила что в чипе есть недочет и выводы VCC и AVCC соединенны между собой внутри камня. По этой причине ставить фильтрующий дроссель на AVCC для ATmega8 нет смысла, но запитывать вывод AVCC нужно в любом случае.

Схема подключения микроконтроллера AVR

 

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

Вывод AREF это вход опорного напряжения АЦП, туда подается напряжение относительно которого будет считать АЦП. Можно использовать внутренний источник опорного напряжения величиной в 2.56 В либо использовать напряжение AVCC. На вывод AREF рекомендуется подключать конденсатор, это улучшает качество опорного напряжения АЦП и как в следствии правильность измерения АЦП. На входе в AVCC установлен дроссель и конденсатор между AVcc и GND. Также между выводами GND и VCC ставят керамический конденсатор номиналов в 100 нФ как можно ближе к выводам питания микросхемы — он сглаживает краткие импульсы помехи, которые получаются в результате работы самих микросхем. Также между выводами VCC и GND устанавливают конденсатор емкость в 47 мкФ для сглаживания более сильных бросков напряжения.

 Вывод сброса

В МК AVR есть внутренняя схема сброса и вывод reset внутри уже подтянут сопротивлением в 100 кОм к выводу Vcc. Но этой подтяжки не хватает, получается что микроконтроллер «выход» в сброс от незначительного потенциала на выводе. К примеру от прикосновения пальцем вывода RST, а иногда от случайного касания самой платы. Поэтому имеет смысл дополнительно подтянуть этот вывод резистором в 10 кОм. Меньшее значение резистора лучше не брать, потому что если вы используйте внутрисхемный программатор то он не сможет пересилить подтяжку и прошить микроконтроллер. Поэтому значение в 10 кОм в самый раз.

Схема сброса микроконтроллера

 

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

 Задержку перед стартом МК легко посчитать по формуле как T=R*C при данных значения получается приблизительно одна секунда. Для чего эта задержка? — спросите вы. А для того чтобы МК не запускался раньше времени чем все устройства на плате запитаются в перейдут в установившийся режим работы. К примеру, в старых МК (AT89C51) если нет такой цепочки которая делает изначальный сброс, то МК мог вообще не запуститься.

В МК AVR такую задержку перед стартом можно сделать программно чтобы он подожда секунду и потом только запускался. Поэтому можно обойтись и без конденсатора. А кнопку можно оставить — на свое усмотрение. 

 Тактирование микроконтроллеров

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

Импульсы формируются тактовым генератором с определенной скоростью (частотой). Сам генерато может быть как может быть как внутренний так и внешний. Все это гибко настраивается. 

 

Микроконтроллер можно тактировать от:

  • внутреннего генератора с внутренней задающей RC цепочкой. При таком тактировании никакой обвязки не нужно. К выводам XTAL1 и XTAL2 можно ничего не подключать, их можно использовать как обычные порты ввода/вывода. Внутренний RC генератор можно настроить на 4 значения частоты;
  • внутреннего генератора с внешней задающей RC цепочкой. Тактирование аналогично предидущему способоу, только вот задающая RC цепочка находится не внтури МК, а снаружи, такая схема позволяет изменять частоту прямо на ходу. Изменение задающей частоты происходит путем изменения значения сопротивления;
  • внутреннего с внешним задающим кварцем. В этом случае снаружи МК цепляют кварцевый резонатор с небольшой обвязкой кварца из двухконденсаторов. Если используется кварц(резонатор) с частотой менее 1 МГц то конденсаторы можно и не ставить.
  • внешнего генератора. Это когда импульсы поступают на вход МК от внешнего генератора. Такое тактирование применяют когда нужно чтобы несколько независимых микроконтроллера работали синхронно от одного генератора.

 У каждого способа тактирование есть свои достоинства. Если мы используем внутренюю или внешнюю RC цепочку то у нее есть один недостаток — » плавание частоты в зависимости от температуры. И мы не можем максимально развить максимальную частоту. Если использовать кварц то он занимает 2 ножки микроконтроллера. На кварце можно развить максимальную частоту. Частота тактирования микроконтроллера зависит от того какой кварц мы подключили.

Посмотреть способы тактирования МК можно в даташите System Clock and Clock Options. Если в кратце, то выбор способа тактирования осуществлятеся путем выставления определенных Fuse битов. Но если вы пока еще не ознакомились с ними, то лучше пока туда не лезть и использовать выбранный по умолчанию способ тактирование. По умолчанию в МК выбран внутренний генератор. Если не правильно выставить Fuse биты можно «залочить» МК и он превратиться в мертвеца и вернуть его к жизни будет совсем не просто, но все же возможно.

Подключаем к микроконтроллеру кнопки и светодиоды

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

Для того чтобы подключить нашу всеми любимую кнопку нам нужно сначала выбрать ножку на которую мы его будем цеплять. Один конец кнопки мы кидаем на землю а другой к ножке МК. Сам вывод к которому подключения кнопка нужно настроить на вход с включением внутренних подтягивающих резисторов (PORTx=1 DDRx=0). Получается что если кнопка не нажата то входе будет высокий уровень напряжения через подтягивающий резистор. Если мы считаем это значения через PINx то он будет возвращать 1. Если мы нажимаем кнопку то вывод подтягивается к земле и напряжение на нем становится равным нулю, PINx возвращает 0. По этому значению мы и определяем нажата ли кнопка или нет.

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

 Для того чтобы подключить светодиод можно использовать две схемы подключения порт-земля и порт-питание. В первом случае для того чтобы зажечь светодиод нужно на вывод к которому подключили светодиод подать высокий уровень (логическую единицу). Для второго случае когда светодиод подключен к выводу Vcc нужно наоборот подать другой уровень низкий (логический ноль). Для микрокнтроллеров абсолютно неть разницы куда вы будете подключать светодиод к земле или к Vcc. Можно применять как одну так и другую схему подключения светодиода к микрокнтроллеру AVR в зависимости от разводки печатной платы. Программно разницы тоже особо нет.

Сначала нам нужно настроить порт на выход для этого в регистр DDRx запичываем 1. Далее записываем в порт PORTx нужный нам уровень высокий или низкий.

Светодиод к выводам МК нужно цеплять черех резистор. Максимальный ток вывода МК порядка 20-30 мА. А для нормального свечения светодиода нужно 3…15 мА. А когда мы подклчаем светодиод с низким прямым сопротивлением, то мы можем его в лучшем случае просто спалить, а в худшем спалить сам вывод микроконтроллера. Поэтому ток через светодиод нужно ограничивать подключаю последовательно светодиоду сопротивление.

Напряжение на ноге микроконтроллера около 5 В. Для нормального горения светодиода нужно что на нем падение напряжения было приблизительно 2.5 В. Получается что такое же напряжение должно быть и ограничивающем сопротивлении 5-2.5=2.5. Предположим что ток протекающий через диод 5 мА. Знаем ток в цепи и падение напряжения на резисторе находим по закону Ома требуемое сопротивление резистора R=U/I=2.5/5e-3=500 Ом. Ближайшее значение 510 Ом, но можно взять и другие хоть от 220 Ом до 1 кОм. Гореть светодиод будет хорошо.

 

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

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

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

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

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

Например, допустим у нас есть один вывод к которому мы подключили какой либо датчик либо кнопку. С датчика может придти сигнал 0 или 1, а в активном режиме Hi-Z в случае когда на датчик не послали сигнал Enable. А при нажатии на копку придет сигнал 0,

Основную часть времени МК установлен на вход Hi-Z и мы получаем сигнал с датчика на него же подан сигнал enable. Если нам нужно узнать состояние кнопки, то мы убираем enable и его выходы становятся в режим Hi-Z и нам не мешают. Далее мы переводим вывод МК в редим Pull-Up и опрашиваем нет ли у нас на входе вывода нуля — это сигнла нажатой кнопки. После того как мы это проверили мы снова переводим МК в Hi-Z и отправляем сигнал enable на датчик. Эта последовательность действий повторяется несколько раз в секунду.

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

Логическое противоречие

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

Электрическое противоречие

Если с датчика поступает высокий уровень и мы нажимаем кнопку, то на одном выводе у нас сразу встретятся 0 и 1,Vcc и GND. В результате у нас датчик «заснет вечным сном» а кнопка как жили так и будет. Программым методом это противоречие не решить, а определить можно ли нажимать кнопку или нет в определенный момент времени на глаз просто не возможно, и в каком месте сейчас выполняется программа тоже не узнать. Электрическое противоречие можно решить только схемотехническим путем. Нам нужно в цепь где у нас кнопка добавить резистор. Значение резистора определяется через максимальтный ток самого низковольтного вывода (датчика или ножки).

К примеру если у нас на выводе васит датчик у которого вывод может дать не больше чем 10 мА. То нам нужно чтобы ток через датчик не был больше этой величины в случае нажатия кнопки. При напряжении в 5 В получаем сопротивление в 510 Ом. Таким образом даже если у нас с датчика идет высокий уровень, и в этот момент времени нажимается кнопка то ничего страшного не произойдет и датчик не сгорит и искажения уровня сигнала тоже не произойдет.

Примеры использования нескольких функций на одной ножке

Разъем ISP в некоторых схемах занимает 3 вывода микроконтроллера MOSI,MISO,SCK. У меня практически все платы имеют такой разъем и в него у меня вставлен программатор. Во время отладки платы я прошиваю МК по несколько раз. И это очень удобно, мне не приходится каждый раз когда мне нужно прошить МК его вытаскивать втавлять в колодку программатора и далее обратно.

На эти три разъема можно подключить, к примеру кнопки. И мониторить их состояние в прогамме. Самое главное не нажимать эти кнопочки во время заливки прошивки в микроконтроллер. Также с целью экономии выводов на эти выводы можно прицепить светодиоды. Правда если использовать программатор Громова то он может не корректно сработать. А если использовать программатор USBasp то проблем возникнуть не должно. В процесе прошивки светодиоды на выводах MOSI,MISO,SCK будут забавно моргать:)

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

 

Установленные резисторы по 10 кОм отделяют линию программатора от основной схемы. Резисторы ограничивают возможные другие уровни от дисплея на выводах ISP разъема, программатор их пересиливает и шьет микрокнтроллер. А на работу дисплея эти резисторы особоне не оказывают влияния.

Подключение двух светодиодов на один вывод

В данной схеме два светодиода подкючены на одну ножку порта, такая схема позволяет упростить печатную плату, не придется тажить еще одну шину к каждому светодиоду. Для того чтобы зажечь верхний сетодиод нужно на вывод Pxy подать логический 0, а для того чтобы зажечь нижний то подать высокий уровень. Если мы хотим зажечь сразу оба светодиода та нам нужно перевести вывод МК в режим Hi-Z как будто его нет, в этом случае появится сквозной ток через оба светодиода и они оба загорят. Или можно бысто зажигать то один то другой, визуально они будут оба гореть. Минус схемы в том что погасить сразу два диода нельзя.

Подключение двух светодиодов по схема PORT-PORT

В это схеме ничего сложного нет — меняя состояние выводов то в 1 то в 0 мы меняем напрявление тока включает то идин то другой диод. Для того чтобы погасить оба светодиода то нам нужно подать сразу на оба вывода либо высокое состояние 11 либо низкое это 00. Для того чтобы зажечь сразу два светодиода нам нужно сделать динамическую индикацию, быстро меняя состония обеих ножек с высокого на низкий. Если взять 3 вывода и использовать тот же принцип смены состояния ножек то можно подключить шесть светодиодов.

В данной схеме кнопки опрашиваются поочередно. Один вывод подтягивает внутренее сопротивление а другая дает 0. Нажатие кнопки дает 0 на подтянутом выводе а это фиксирует программа, таким образом,меняя роли выводов опрашивается каждая кнопка. Если у нас используется 6 выводов, то действуем по следующей схеме: одну ножку подтягиваем, другую делаем нулем а из третьей делаем состояние Hi-Z. Но тут тоже есть один минус. Допустим мы хотим опросить кнопку «В». Для этого верхнюю линию подтягиваем, среднюю делаем нулем, а нижнюю не задействуем в процессе или выставляем ее в стостоянии Hi-Z. Далее если мы нажмем на копку «B» то верхняя линия подтянится к нулю и программа поймет что нажата именно кнопка «B». В том случае если одновременно будут нажаты кнопки «E» и кнопка «Б» то верхняя линия такжн подтяница к 0 и программа поймет что была нажата кнопка «В», хотя мы ее не нажимали. 

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

Схема подключения кнопки с светодиода к одному выводу

Эта схема работает также в динамическом режиме.Для того чтобы отобразить состояние светодиода мы можем подать 0 — диод горит, либо перевести вывод в состояние Hi-Z — диод не горит. А для того чтобы опросить кнопку нам нужно временно на несколько микросекунд перевести вывод в режим входа с подтягом и опрашивать кнопку. В том случае когда горит светодид т.е. на выводе высокий уровень, то нажимать кнопку нельзя, в противном случае сгорит порт а это нам совершенно не нужно.

Оригинал статьи: www.easyelectronics.ru

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

Прошивка atmega8 через com. Миниатюрный USB программатор для AVR микроконтроллеров

Как театр начинается с вешалки, так программирование микроконтроллеров начинается с выбора хорошего программатора. Так как начинаю осваивать микроконтроллеры фирмы ATMEL, то досконально пришлось ознакомится с тем что предлагают производители. Предлагают они много всего интересного и вкусного, только совсем по заоблачным ценам. К примеру, платка с одним двадцатиногим микроконтроллером с парой резисторов и диодов в качестве обвязки, стоит как «самолет». Поэтому остро встал вопрос о самостоятельной сборке программатора. После долгого изучения наработок радиолюбителей со стажем, было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48). Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку.

Автором данного программатора является немец Thomas Fichl, страничка его разработки со схемами, файлами печатных плат и драйверами.
Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):

Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:

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

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

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

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

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

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

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

Все, теперь программатор готов к работе.

Khazama AVR Programmer
Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer . Замечательная программка, с минималистичным интерфейсом.

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

Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.

Скачать файл печатной платы в SprintLayout можно по

Разумеется сразу же возникла надобность в программаторе. Программатор на LPT порту меня не устроил, из-за того, что есть вероятность сжечь порт компьютера. Можно было конечно собрать USB программатор, но его также нужно было бы чем-то прошивать. Тогда я наткнулся на схему программатора Громова и решено было собрать его. Писали, что программатор работает с оболочками UniProf и avrdude . Сама схема очень простая:


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

Все резисторы, кроме идущего с катода светодиода на землю (он номиналом 470 Ом) на 1 кОм, всего в схеме этих резисторов 7 штук. Резисторы на 1 ком ставятся для того, чтобы погасить часть напряжения идущего от СОМ порта с 12 вольт, до требуемых для микроконтроллера 5 вольт. Диоды взял КД522 , 3 штуки. В схеме есть индикация питания на светодиоде, поставил зеленого цвета, советский 5 мм диаметром. У меня в запасах был кабель удлинитель COM 9M/9F , как раз подходящий для этих целей, разъем с обратной стороны кабеля был мной обрезан.


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


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

Первый вопрос, который вы хотите задать в лоб – что же вообще такое “программатор” ? Слово “программатор” образуется как ни странно, от слова “программа”. А что такое программа? Если вспомнить, что такое теле программа и зачем она была нужна (кстати, сейчас до сих пор продается в киосках), то стает понятно, что программа телепередач – это расписание по времени этих самых телепередач. Значит программой можно назвать какие-то действия или события, которые будут выполняться одно за другим во времени, когда мы этого захотим или не захотим. Следовательно, программатор – это всего-навсего какое-то устройство, которые позволяет нам записывать либо читать программу. Изменить программу уже может только сам программист 😉

СМ

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

Я не ошибусь, если скажу, что 80% новичков, если у них на компьютере есть в наличии СОМ порт, собирают в качестве первого программатора . Эта схема, при своей простоте и умелом обращении, настоящий шедевр). Действительно, ведь для того, чтобы собрать своими руками программатор, подключаемый к USB порту и имеющий в своем составе микроконтроллер AVR, который требуется предварительно запрограммировать, нужен опять таки программатор. А где взять новичку программатор, пусть и для подобной разовой прошивки? Получается парадокс курицы и яйца), чтобы собрать USB программатор, нам необходимо сначала запрограммировать микроконтроллер программатора))).

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

Под каждый тип программатора чаще всего требуется своя программная оболочка . Для сборки программатора Громова не требуется программировать микроконтроллер. В данном программаторе он отсутствует. Этот программатор работает с двумя широко распространенными оболочками для прошивания: PonyProg и Uniprof . У нас будут посвящены отдельные обзоры на эти программки. Данный программатор подключается к СОМ порту . Единственным препятствием для его сборки может стать физическое отсутствие данного разъема на материнской плате вашего системного блока. Почему именно системного блока? Потому что ноутбуки, а также современные модели материнских плат 2010 – 2011 года выпуска и выше часто имеют на контактах СОМ порта пониженное напряжение питания. Что это означает? Это означает, что вы можете собрать данный программатор, а он у вас не заработает. Но с компьютерами 2007 – 2008 года выпуска и старше, за исключением ноутбуков, данный программатор должен гарантированно работать. Подключение через переходники USB – COM не спасают в этом случае, так как при этом наблюдается в лучшем случае, сильное снижение скорости, в худшем, программатор вообще отказывается работать.

Давайте рассмотрим принципиальную схему программатора:


Что же мы видим на этой схеме? Разъем СОМ порта, по другому называемый DB9, 7 резисторов одинакового номинала сопротивлением в 1 кОм и мощностью 0.25 Ватт и 3 импульсных диода. Из диодов подойдут, либо отечественные, КД522, КД510, либо импортные 1N4148.

Давайте разберем, как выглядят данные радиодетали.

На фото ниже представлен разъем DB9:


Как мы видим, пины (выводы) этого разъема обозначены цифрами на нем. Если будут какие-то затруднения с определением какой штырек соответствует какому отверстию разъема, рекомендую вставить проволочку в отверстие пина разъема, перевести в режим звуковой прозвонки и прикоснувшись одновременно щупами мультиметра к проволочке по очереди к каждому из штырьков на разъеме, вызвонить соответствие штырьков отверстиям. Это может потребоваться в случае, если вы подключаете разъем проводками к плате. Если разъем будет впаян непосредственно в плату, то эти действия не требуются.

У кого на панели разъемов материнской платы, находящейся в задней части компьютера, нет COM разъема, можно купить планки с таким разъемом. Но нужно убедиться что производители распаяли контроллер СОМ порта на материнской плате, и предусмотрели подключение шлейфа данной планки, непосредственно к плате. Иначе такой вариант вам не поможет. В качестве альтернативного варианта, могу предложить приобрести контроллер СОМ порта, размещенный на специальной плате расширения, которую устанавливают в PCI слот ПК


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


Если же возникают проблемы с приобретением данного кабеля, можно взять и перекрещенный кабель или удлинитель 9M-9F, но в таком случае может потребоваться обрезать разъем с другого конца, и вызвонив жилки по пинам разъема подпаяться непосредственно к плате программатора. У меня, кстати, был как раз такой кабель – удлинитель, и мне пришлось обрезать разъем со второго конца. Не покупайте кабеля для прошивки телефонов через СОМ порт, они не годятся для наших целей, так как там неполная распайка жил.

Диоды берем КД522, КД510 или 1N4148. Вот так выглядит диод КД522

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

Ну с , я думаю, проблем не возникнет. Идете в радиомагазин и говорите продавцу: “Мне нужны резисторы 1 кОм 0.25 Ватт”. Желательно взять импортные резисторы, так как у отечественных МЛТ идет большее отклонение от номинала.


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


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


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

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


Извините за синюю изоленту)), тогда еще, 5 лет назад, термоусадочные трубки были в диковинку.

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


Для подключения к микроконтроллеру устанавливаемому для прошивания на беспаечную макетную плату , я использовал цветные гибкие проводки. Соединенные с проводками такого же цвета, взятыми из жилок витой пары. Это сделано для того, чтобы с одной стороны жилки не переломились при эксплуатации, а с другой было обеспечено легкое подключение к макетной плате. Длина данных проводков должна быть максимум 20 – 25 См, во избежание ошибок от наводок, при программировании. Не используйте обычные неэкранированные провода, вместо СОМ кабеля! Замучаетесь с ошибками при прошивке.

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

Для справки: питание и земля, в разъеме USB идут по краям. Вот распиновка разъема USB:

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

При запитывании от USB порта компьютера, в случае замыкания жилок программатора +5 вольт (VCC) и земли (GND), вы рискуете сжечь южный мост материнской платы компьютера, ремонт такой материнской платы будет нецелесообразен. Я пользовался обоими вариантами для подачи питания, и через стабилизатор, и через кабель от зарядного USB. Еще один нюанс, после программирования микроконтроллера, чтобы микроконтроллер запустился, необходимо разорвать цепь RESET.

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


Другими словами при его отключении, ток в этой цепи больше не течет и микроконтроллер начинает работу. Заместо клавишного выключателя можно воспользоваться любой малогабаритной кнопкой с фиксацией, либо поставить тумблер. Кому что подскажет фантазия;-)

Наверняка вы уже обратили внимание, что на схеме программатора Громова, есть какие-то незнакомые слова, а в частности VCC, GND, MISO, MOSI, SCK и RESET. Разберем, что же значат эти обозначения на примере микроконтроллера Attiny 2313.


В данном случае изображена очень распространенная и недорогая микросхема: микроконтроллер AVR Tiny (он же Аttiny) 2313. Ножки микросхемы, как мы видим, имеют свой номер. Нумерация идет против часовой стрелки, от ключа в виде точки, расположенной в левом верхнем углу корпуса микроконтроллера. Ниже на рисунке пример того, как идет нумерация на микросхемах в корпусе DIP :



В первую очередь нас интересуют перечисленные выше шесть ножек. Назначения всех остальных мы вкратце коснемся в конце статьи.

Итак, расшифровываем:

VCC . На эту ногу мы подаем напряжение питания микросхемы. Стандартом является 5 Вольт. Допустимо отклонение в большую сторону, до 5.5 Вольт. Напряжение свыше 6 Вольт, может привести к порче микросхемы. Отклонение в меньшую сторону более допустимо. Есть версии микроконтроллеров Tiny 2313V, которые могут работать даже от двух пальчиковых батареек или аккумуляторов, или от напряжения в 2.4 Вольта.

GND. Ну это всем знакомая и известная “земля”, она же ”масса”, и она же минус питания. Данный контакт является общим для всех устройств, которые имеют подключение друг к другу. Если вы соединяете, какие-либо блоки устройства между собой, их земли следует объединить. В данном случае, земля микроконтроллера, объединяется с землей программатора.

MISO . Сокращение от M aster – I n – S lave – O ut. По этой линии передаются данные от микроконтроллера к программатору.

MOSI. Сокращение от M aster – O ut – S lave – I n. По этой линии тоже передаются данные от программатора к микроконтроллеру.

SCK. На этой линии формируется тактовый сигнал.

RESET. Данный вывод используется для сброса микроконтроллера после стирания одиночным импульсом. Если RESET будет отключен, путем ошибочного выставления определенного фьюза, (о выставлении этого, и других фьюзов мы поговорим в следующих статьях) мы не сможем стереть и перепрошить микроконтроллер, через интерфейс SPI.

Достаточно подсоединить эти перечисленные 6 пинов программатора, к 6 ножкам микроконтроллера, и мы сможем прошить МК.

Рассмотрим остальные ножки МК:

У микроконтроллера Tiny2313 3 порта: А (А0-А2, 3 ножки), B (В0-В7, 8 ножек) D (D0-D6, 7 ножек), всего насчитывается 18 используемых в качестве ножек портов ввода – вывода. Каждую из этих ножек можно сконфигурировать отдельно на ввод и на вывод. Не являются ножками портов, только земля (GND) и питание (VCC).

Ниже рассмотрено дополнительное назначение некоторых ножек МК:

OC1A И OC1B. Ножки для формирования ШИМ (Широтно – импульсная модуляция) сигнала, таймер 1.

OC0A и OC0B. Ножки для формирования ШИМ сигнала, таймер 0.

AIN0 и AIN1. Ножки для подачи аналогового сигнала на микроконтроллер.

XTAL1 и XTAL2. Ножки для подключения кварцевого резонатора, для тактирования от него.

RXD и TXD. Линии подключения МК по интерфейсу UART.

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

Вконтакте

Одноклассники

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

В схеме используется семь резисторов на 1кОм. Один резистор на 330 или 470 Ом (подключенный к светодиоду). Три маломощных диода. И один светодиод. В принципе, мою схему можно упростить и выкинуть индикатор питания, реализованный на светодиоде. Вы можете скачать схему программатора Громова в формате Sprint-Layout.

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

Фотографию готового устройства предоставил товарищ eap (Александр). А все мои давно ушли в университет, для которого я периодически ваяю интересные игрушки на микроконтроллерах.

К джамперу возле светодиода необходимо подключить питание для программатора. Питание 5 вольт. Это же питание подключится к питанию программируемого устройства. Левый блок джамперов подключается к коннектору COM порта. В принципе, можно все упростить и припаять шлейф прямо к падам платы. И шлейф от разъема для программирования тоже можно сразу припаять к падам платы. Хочу заметить небольшую тонкость. Длинна шлейфа от COM порта может быть метр или полтора, а длинна шлейфа от программатора Громова до программируемого устройства не должна превышать 20 сантиметров

Программатор Громова является битбэнг (bitbang) программатором, по этому ему требуется соответствующее программное обеспечение. Например, можно использовать в паре с Громовым — UniProf и avrdude.

Основной минус — это необходимость подключения к COM порту компьютера. Честно говоря, на всех современных ноутбуках этого порта попросту не существует, а на стационарных компьютерах этот порт постепенно вымирает. Скорость программирования через этот тип программаторов очень низкая. Не работает с переходниками USB-COM. Не работает со стандартными программами из AVR Studio.

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

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

Моя первая связка программаторов которыми я пользовался были программатор Громова плюс avrdude.

Альтернатив для программатора Громова очень много, вот небольшой пример: AVR910, USBasp, Prottos, USBBit. Они все работают через USB и по этому могут использоваться при работе с современными компьютерами. Так же практически все отладочные комплексы содержат в себе программатор, например: STK, BigAVR, Dragon, PinBoard (начиная с версии 1.1), OrcaBoard (начиная с версии Rev 2).

Читайте также…

Atmega8 adc работаем с ацп

Урок 22

Сегодня мы начнем изучать очень интересную технологию, а для микроконтроллера — периферию — это аналго-цифровой преобразователь или как его называют АЦП. В английской аббревиатуре, гораздо чаще встречающейся в технической документации — ADC (Analog-to-Digital Converter). Это такая штука, которая преобразует величину электрического сигнала в цифровой код. Затем данный код мы уже используем для обработки или для отображения тем или иным образом данной электрической величины. Это очень распространённая периферия или технология. АЦП активно используется в звукозаписи, измерительной технике, видеозаписи и во многих других случаях. Поэтому нас обойти данную вещь стороной никак не получится, тем более АЦП поддерживается аппаратно в контроллерах AVR.

В контроллере Atmega8 АЦП имеет следующие характеристики

  • Разрешение 10 бит,
  • Время преобразования одного показания от 13 до 250 микросекунд в зависимости от битности измерения, а также от тактовой частоты генератора, тактирующего контроллер,
  • Поддержка запуска по прерываниям,

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

Как вообще работает цифровое преобразование?

Берётся опорное напряжение и сравнивается с измеряемым. Соответственно, опорное напряжение всегда должно быть больше измеряемого. Если это не так, то нужно будет применять делители напряжения.

Изобразим схематично процесс измерения

Отрезок — это диапазон измерений. Он находится между нулём и опорным напряжением. А стрелка — это измеряемое напряжение.

Данный отрезок делится пополам, и АЦП оценивает, в какой половине находится приложенное напряжение

Если оно находится в стороне нуля, то в самый старший бит результата записывается 0, а если в стороне максимального напряжения, то единица. У нас будет единица. Затем та половина отрезка, на которой находится измеряемое напряжение делится ещё пополам, и АЦП опять измеряет, в какой половинке уже данного отрезка у нас находится измеряемое напряжение

Оценка идёт по тому же принципу — в какой стороне отрезок. В нашем случае будет 0. И этот ноль записывается в следующий более младший бит

Затем та четвертинка опять делится пополам и АЦП опять оценивает,где находится отрезок

И АЦП так и продолжает такой процесс до тех пор, пока не кончатся ячейки для битов. То есть если мы используем 10-битный режим, то. соответственно, и будет 10 подобных измерений и заполнятся 10 бит величины. Чем больше бит, тем точнее результат, но уже потребуется на это больше времени и более серьёзный и точный АЦП. Имея данный результат, нам несложно будет посчитать величину измеренного напряжения. Мы знаем. что если у нас АЦП 10-битный, то данный результат у нас лежит в промежутке от 0 до 1024, получаемтся всего у нас 1023 отрезка. И мы затем наш результат делим на 1023 и умножаем на величину опорного напряжения.

Посмотрим блок-схему АЦП в контроллере Atmega8

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

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

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

Также мы всё подключим и на живом контроллере

Существует несколько вариантов опорных напряжений, которые мы можем использовать.в нашем АЦП. Мы будем использовать внутреннее опорное напряжение на 2,56 вольт, оно проще, не нужно ничего подключать. Возможно, при таком варианте не очень сильная точность, но перед нами не стоит задача создать точный измерительный прибор. У нас есть задача — изучить возможность использования АЦП в контроллере AVR.

А вот и таблица вариантов опроных напряжений для АЦП

Перечислим данные варианты сверху вних по таблице. 1 вариант — это внутреннее опорное напряжение, равное напряжению питания, 2 вариант — опорное напряжение подаётся на вход AREF извне, 3 вариант — внутреннее 2,56 вольт с использованием внешнего конденсатора, которы у нас уже припаян к отладочной плате к определённым ножкам контроллера.

Также в АЦП есть делитель частоты на величину от 2 до 128. Делитель этот для того, чтобы мы добивались частоты работы АЦП не больше 200 кГц, иначе точность измерений будет очень малой и мы просто растеряем самые младшие биты. Если у нас возникнет требование имено к скорости измерений и нам уже точность будет на так важна, то мы сможем использовать и более высокие частоты измерений.

Теперь немного поближе познакомимся с регистрами АЦП.

Регистр ADCSRA — управляющий и статусный регистр

ADEN — данный бит включает АЦП.

ADSC — при установке в 1 заставляет АЦП начинать преобразование.

ADFR — используется в режиме с использованием прерываний. При установке в 1 включает круговой режим, при котором измерения автоматически следуют одно за другим.

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

ADIE — бит, включающий режим прерываний.

ADPS2-ADPS0 — биты, от комбинации которых зависит величина делителя

Регистр ADMUX — это регистр для управления каналами мультиплексора АЦП

Но, помимо непосредственно битов управления каналами у данного регистра есть ещё некоторые управляющие биты

REFS1-REFS0 — биты, включающие определённый режим использования опорного напряжения. Таблица была размещена на данной странице выше.

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

MUX3-MUX0 — биты, включающие определённый канал мультиплексора

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

Ну и, наконец, регистровая пара ADCH и ADCL, состоящая из старшего и младшего байта в которую и заносится измеряемый результат. А как именно он туда укладывается, этот результат, зависит от состояния бита ADLAR, рассмотренного выше в регистре ADMUX

То есть, если бит ADLAR не выставлен, то младшие 8 бит результата находятся в младшем байте регистровой пары, а 2 старших бита — в младших битах старшего байта. Если же бит ADLAR у нас выставлен, то 8 самых старших бит результата находятся в сатршем байте, а 2 младших в 2 старших битах младшего байта регистровой пары. Второй вариант нам интересен при исользовании 8-битного режима. В данном случае мы читаем только старший байт.

Проект был создан полностью из проекта урока по изучению 4-битного режима подключения LCD Test09 и был назван MyADCLCD.

Также для выноса кода для реализации периферии АЦП были созданы стандартным образом два файла adc.h и adc.c. Соответственно файл adc.h был подключен и в файле main.h и в adc.c.

В файл MyADCLCD.c код был также полностью скопирован из главного файла проекта Test09, всё лишнее было удалено. Код в данном файле после данной операции принял следующий вид

Урок 8.

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

Однако АЦП микроконтроллера может измерять только напряжение. Поэтому любую другую величину, например ток, перед измерением необходимо преобразовать в напряжение.

Преобразование входного сигнала в численное представление происходит относительно опорного напряжения. Опорное напряжение( Vref ) — эталонное напряжение, относительно которого происходит преобразование входной величины. При использовании АЦП микроконтроллера AtMega 8, опорное напряжение необходимо подавать на соответствующую ножку контроллера.

Измерение напряжения производится в диапазоне от 0 до Vref .Весь этот диапазон делится в соответствии с разрядностью. То есть если разрядность АЦП — 10 Бит, то диапазон делится на 1023, если 8 бит, то на 255 и так далее. Предполагая, что Vref = 5 Вольтам, при разрядности 10 Бит мы получим шаг измерения 5/1023 = 0.0049 Вольт, а при разрядности 8 бит, шаг измерения станет 5/255 = 0.02 Вольт. То есть, чем меньше разрядность — тем ниже точность преобразования.

Предположим, что мы подаем на вход 10 битного АЦП, c Vref =5 Вольтам, напряжение 3 вольта. На выходе АЦП мы получим численное представление входного напряжения. Легко подсчитать, что шаг измерения равен 0.0049 Вольт, значит, на выходе АЦП мы получим . То есть, для получения значения входного напряжения, необходимо шаг измерения умножить на выходное значение АЦП.

Давайте рассмотрим регистры, отвечающие за конфигурацию АЦП микроконтроллера AtMega 8. АЦП в AtMega 8 всего один, однако, имеет 8 входных каналов. За выбор входного канала, а так же настройку опорного напряжения отвечает регистр ADMUX .

  • Биты REFS 0- REFS 1 отвечают за выбор опорного напряжения.
  • Биты MUX 0- MUX 3 отвечают за выбор входного канала.
  • Бит ADLAR. Определяет порядок записи результатов преобразования в регистры ADCL и ADCH.

АЦП микроконтроллера AtMega 8, может работать как в режиме однократного преобразования, так и в режиме непрерывного преобразования (Следующее преобразование начинается сразу после предыдущего). За настройку режима преобразования, прерываний, а так же тактирования АЦП, отвечает регистр ADCSRA .

  • Бит ADEN включает и выключает АЦП микроконтроллера.

ADEN = 1 — АЦП включен.

ADEN = 0 — АЦП выключен.

  • При записи 1 в бит ADSC , в режиме однократного преобразования запускается преобразование.
  • Бит ADFR , отвечает за выбор режима преобразования.

ADFR = 1 — Непрерывное преобразование.

ADFR = 0 — Однократное преобразование.

  • Бит ADIF , флаг окончания преобразования, становится равен 1 при окончании преобразования
  • Бит ADIE , разрешает прерывание АЦП.

ADIE = 1 — Прерывание разрешено.

ADIE = 0 — Прерывание запрещено.

  • Биты ADPS 0- ADPS 2 отвечают за выбор предделителя между частотой тактирования микроконтроллера и АЦП.

Результат преобразования помещается в пару регистров ADCH и ADCL, в виде заданным значением бита ADLAR.

В качестве примера соберем простой вольтметр с применением LCD WH 1602, и встроенного АЦП микроконтроллера AtMega 8.

Форум по AVR

АЦП – аналогово-цифровой преобразователь (ADC- Analog-to-Digital Converter). Преобразует некий аналоговый сигнал в цифровой. Битность АЦП определяет точность преобразования сигнала. Время преобразования – соответственно скорость работы АЦП. АЦП встроен во многих микроконтроллерах семейства AVR и упрощает использование микроконтроллера во всяких схемах регулирования, где требуется оцифровывать некий аналоговый сигнал.N, где N – битность АЦП. Условимся, что этот регистр, как у ATmega8, 10-ти битный. Преобразование в нашем случае проходит в 10 стадий. Старший бит Z9 выставляется в единицу.

Далее генерируется напряжение (Опорное напряжение*Z/1024), это напряжение, с помощью аналогового компаратора сравнивается с входным, если оно больше входного, бит Z9 становиться равным нулю, а если меньше – остается единицей. Далее переходим к биту Z8 и вышеописанным способом получаем его значения. После того, как вычисление регистра Z окончено, выставляется некий флаг, который сигнализирует, что преобразование закончено и можно считывать полученное значение. На точность преобразования могут очень сильно влиять наводки и помехи, а также скорость преобразования. Чем медленнее происходит преобразования – тем оно точней. С наводками и помехами следует бороться с помощью индуктивности и емкости, как советует производитель в даташите:

В микроконтроллерах AVR как источник опорного напряжения может использоваться вывод AREF, или внутренние источники 2,56В или 1,23В. Также источником опорного напряжения может быть напряжение питания. В некоторых корпусах и моделях микроконтроллеров есть отдельные выводы для питания АЦП: AVCC и AGND. Выводы ADCn – каналы АЦП.

С какого канала будет оцифровываться сигнал можно выбрать с помощью мультиплексора.
Теперь продемонстрируем примером сказанное выше. Соорудим макет, который будет работать как вольтметр с цифровой шкалой. Условимся, что максимальное измеряемое напряжение будет 10В. Также пусть наш макет выводит на ЖКИ содержимое регистра ADC.

Схема подключения:


Обвязка микроконтроллера и ЖКИ Wh2602A стандартна. X1 – кварцевый резонатор на 4 Мгц, конденсаторы С1,С2 – 18-20 пФ. R1-C7 цепочка на выводе reset по 10 кОм и 0,1 мкФ соответственно. Сигнальный светодиод D1 и ограничивающий резистор R2 200 Ом и R3 – 20 Ом. Регулировка контраста ЖКИ – VR1 на 10 кОм. Источник опорного напряжения мы будем использовать встроенный на 2,56В. С помощью делителя R4-R5 мы добьемся максимального напряжения 2,5В на входе PC0, при напряжении на щупе 10В. R4 – 3 кОм, R5 – 1 кОм, в их номиналу нужно отнестись тщательно, но если не возможности подобрать точно такие, можно сделать любой резистивный делитель 1:4 и программно подкорректировать показания, если это потребуется. Дроссель на 10мкГн и конденсатор на 0,1 мкФ для устранения шумов и наводок на АЦП на схеме не показан. Их наличие подразумевается само собой, если используется АЦП. Теперь дело за программой:

Программа на языке Си:

Так-же есть хитрость, чтобы не работать с дробными числами. Когда производиться вычисления входного напряжения в вольтах. Мы просто будем хранить наше напряжения в милливольтах. Например, значение переменной voltage 4234 означает, что мы имеем 4,234 вольта. Вообще операции с дробными числами кушают очень много памяти микроконтроллера (наша прошивка вольтметра весит чуть больше 4 килобайт, это половина памяти программ ATmega8!), их рекомендуется использовать только при особой необходимости. Вычисления входного напряжения в милливольтах просто: voltage=R_division*2.56*u*1.024;
Здесь R_division – коэффициент резистивного делителя R4-R5. Так, как реальный коэффициент делителя может отличаться от расчетного, то наш вольтметр будет врать. Но подкорректировать это просто. С помощью тестера меряем некое напряжение, получаем X вольт, а наш вольтметр пускай показывает Y вольт. Тогда R_division = 4*X/Y, если Y больше X и 4*Y/X если X больше Y. На этом настройка вольтметра завершена, и им можно пользоваться.

Видео работы устройства:

Также можно доработать свой блок питания.N, где N – битность АЦП.

Рекомендуем к прочтению

Самодельный Arduino из контроллера ATMEGA328P-PU

Платформа Arduino стала нынче практически мейнстримом.
В этой статье напишу о том, как собрать минимальную платформу на контроллере Amega 328P-PU, чтобы ее можно было программировать на платформе Arduino IDE.

Контроллер Atmega 328 от компании ATMEL является сердцем платформ Arduino UNO , Arduino Nano, Arduino Pro Mini и ряда других. Данные платы вместе с многочисленными «шилдами» и модулями удобны для создания прототипов, но довольно громоздки и избыточны для готовых устройств.

Конечное устройство можно собрать на макетной или печатной плате. Для этого приобретаем контроллеры Atmega. Я покупал наплощадке aliexpress.com.

Цена на момент покупки была $20 за 10 контроллеров, 10 панелек и 10 кварцевых резонаторов на 16МГц. (Сейчас цена стала немного дороже)

Ссылка на товар на сайте aliexpress.com

 

Буковка «P» в названии микросхемы означает низкое энергопотребление, а PU-корпус DIP28, который удобно паять обычным паяльником.


Контроллеры пришли, как их теперь готовить?

Yеобходимо установить загрузчик в наши контроллеры. Для этого используем плату Arduino Uno и купленный заранее очень дешевый программатор USBasp. Чтобы не мудрить с проводками, лучше сразу взять еще и такой переходник на 6-ти пиновый разъем ICSP.

Качаем и ставим драйвер программатора.

Описываем параметры микроконтроллера в файле c:\Program Files (x86)\Arduino\hardware\arduino\boards.txt

Для себя я сделал две конфигурации — внутренний кварц 8МГц с загрузчиком optiboot и отключенной проверкой на напряжение питания (чтобы можно было запитать микросхему вольт так от трех)

atmega328_8_33.name=Atmega328 (3.3V, 8 MHz internal)

atmega328_8_33.upload.protocol=arduino
atmega328_8_33.upload.maximum_size=30720
#atmega328_8_33.upload.speed=19200
atmega328_8_33.upload.speed=57600

atmega328_8_33.bootloader.low_fuses=0xC2
atmega328_8_33.bootloader.low_fuses=0xE2
atmega328_8_33.bootloader.high_fuses=0xDE
atmega328_8_33.bootloader.extended_fuses=0x07
atmega328_8_33.bootloader.path=optiboot
atmega328_8_33.bootloader.file=optiboot_atmega328.hex
atmega328_8_33.bootloader.unlock_bits=0x3F
atmega328_8_33.bootloader.lock_bits=0x0F

atmega328_8_33.build.mcu=atmega328p
atmega328_8_33.build.f_cpu=8000000L
atmega328_8_33.build.core=arduino
atmega328_8_33.build.variant=standard

и точная такая же с внешним кварцевым резонатором на 16МГц.

atmega328_16.name=Atmega328_16 (3.3V, 16 MHz external)

atmega328_16.upload.protocol=arduino
atmega328_16.upload.maximum_size=32256
atmega328_16.upload.speed=115200
atmega328_16.bootloader.low_fuses=0xff
atmega328_16.bootloader.high_fuses=0xde
atmega328_16.bootloader.extended_fuses=0x07
atmega328_16.bootloader.path=optiboot
atmega328_16.bootloader.file=optiboot_atmega328.hex
atmega328_16.bootloader.unlock_bits=0x3F
atmega328_16.bootloader.lock_bits=0x0F
atmega328_16.build.mcu=atmega328p
atmega328_16.build.f_cpu=16000000L
atmega328_16.build.core=arduino
atmega328_16.build.variant=standard

Аккуратно вынимаем из панельки Arduino контроллер и ставим туда наш.

Запускам стандартную ArduinoIDE, выбираем в меню «Сервис->Программатор->USBasp», плату Atmega328 (3.3V, 8 MHz internal) или Atmega328_16 (3.3V, 16 MHz external) и нажимаем «Записать загрузчик». После окончания процесса загрузки мы получаем контроллер,  в который можно уже в дальнейшем заливать программы через стандартный USB Ардуины.

В принципе, если вам не требуется низковольтное питание, можно не править фал board.txt, а пошить контроллер как Arduino Uno.

Дальнейшая работа с контроллером такая — либо шить его вставляя на плату Arduino Uno через стандартный USB порт этой платы. Прошив контроллер на работу с внутренним кварцем, можно сразу использовать его практически без всякой обвязки. Например, мигать светодиодом на 13-м порту, как на этой картинке.

Если же нужно постоянно использовать контроллер в своей плате, не переставляя его — то нужно собрать такую схему

и прошивать его через конвертер USB-RS232.

Контроллер с внешним кварцем работает быстрее и гораздо стабильнее.

Где это уже работает?
Контроллер управления вентилятором в ванной комнате

Контроллер управления светодиодной люстрой

А как же мозг не вскипел все это реализовывать?

Ну конечно же был помощник

Полезные ссылки к данной статье:

 

 

 

 

со своего сайта.

Миниатюрный USB программатор для AVR микроконтроллеров (на основе ATmega8) — Программаторы — Каталог статей — Микроконтроллеры

Как театр начинается с вешалки, так программирование микроконтроллеров начинается с выбора хорошего программатора. Так как начинаю осваивать микроконтроллеры фирмы ATMEL, то досконально пришлось ознакомится с тем что предлагают производители. Предлагают они много всего интересного и вкусного, только совсем по заоблачным ценам. К примеру, платка с одним двадцатиногим микроконтроллером с парой резисторов и диодов в качестве обвязки, стоит как «самолет». Поэтому остро встал вопрос о самостоятельной сборке программатора. После долгого изучения наработок радиолюбителей со стажем, было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48). Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку.

Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):


Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:


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


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


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

Итак, после сборки устройства осталось самое важное — прошить управляющий микроконтроллер. Для этих целей хорошо подходят друзья у которых остались компьютеры с LPT портом 🙂 Простейший программатор на пяти проводках для AVR 
Микроконтроллер можно прошивать с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку берем на странице немца. Для заливки управляющей программы в микроконтроллер я использовал программу PonyProg. При программировании необходимо завести кристалл на работу от внешнего источника тактирования на 12 МГц. Скрин программы с настройками fuse перемычек в PonyProg:


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

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

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


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


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


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


Все, теперь программатор готов к работе.

Khazama AVR Programmer

Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer. Замечательная программка, с минималистичным интерфейсом.


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


Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.

Скачать файл печатной платы в SprintLayout можно по этой ссылке


Миниатюрный USB-программатор для микроконтроллеров AVR / Sudo Null IT News

Как театр начинается с вешалки, так и программирование микроконтроллеров начинается с выбора хорошего программиста. Начав осваивать микроконтроллеры ATMEL, мне пришлось досконально ознакомиться с тем, что предлагают производители. Здесь много всего интересного и вкусного, только по абсолютно заоблачным ценам. Например, платок с одним двадцатифутовым микроконтроллером с парой резисторов и диодов в качестве обвязки стоит как «плоскость».Поэтому встал вопрос о самостоятельной сборке программатора. После долгого изучения опыта радиолюбителей со стажем было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого является микроконтроллер Atmega8 (есть также варианты прошивки для atmega88 и atmega48). Минимальная привязка микроконтроллера позволяет собрать довольно миниатюрный программатор,

Автор этого программатора — немец Томас Фихль, страница его разработки со схемами, файлами печатных плат и драйверами.
После того, как было решено собрать миниатюрный программатор, я перерисовал схему микроконтроллера Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):

Перемычка J1 используется если он необходимо прошить микроконтроллер с тактовой частотой ниже 1,5 МГц. Кстати, эту перемычку вообще можно исключить, посадив на землю 25 стопу МК. Тогда программист всегда будет работать на более низкой частоте.Я лично заметил, что программирование на пониженной скорости на долю секунды дольше, и поэтому теперь перемычку я не дергаю, а постоянно шью ею. Стабилитроны
D1 и D2 используются для согласования уровней между программатором и шиной USB, без них он будет работать, но не на всех компьютерах.
Синий светодиод показывает, что схема готова к программированию, красный светится во время программирования. Контакты программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-контактного разъема ISP:

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

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

Микроконтроллер управления прошивкой

Итак, после сборки устройства остается самое главное — прошить управляющий микроконтроллер.Для этих целей хорошо подходят друзья, у которых есть компьютеры с LPT портом 🙂 Простейший пятипроводной программатор для AVR
Микроконтроллер можно прошить через разъем для программирования, соединив выводы Reset микроконтроллера (29 ножек) и разъем. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, поскольку поддержка версии для Atmega48 прекращена, а последняя версия прошивки датируется 2009 годом.Причем версии для 8-го и 88-го камней постоянно обновляются, и автор вроде бы планирует добавить в функционал внутрисхемный отладчик. Берем прошивку на немецкой странице. Для заливки управляющей программы в микроконтроллер я использовал программу PonyProg. При программировании необходимо запустить кристалл для работы от внешнего источника тактовой частоты на частоте 12 МГц. Экран программы с настройками перемычки предохранителей в PonyProg:

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

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

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

Выбираем папку, где находятся дрова и жмем Далее.

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

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

Все, теперь программатор готов к работе.

Программатор Khazama AVR

Для работы с программатором я выбрал Khazama AVR Programmer.Замечательная программа с минималистичным интерфейсом.

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

Как нетрудно догадаться, запись предохранителей в память микрон осуществляется нажатием кнопки Write All. Кнопка «Сохранить» сохраняет текущую конфигурацию, а «Загрузить» возвращает сохраненную. Правда практического применения этих кнопок придумать не смог. Кнопка Default используется для записи стандартной конфигурации предохранителей, например, той, которая используется микроконтроллерами на заводе (обычно 1 МГц от внутреннего RC).
В целом за все время использования этого программатора показал себя с лучшей стороны по стабильности и скорости.Без проблем работал как на старинном стационарном ПК, так и на новом ноутбуке.

Вы можете скачать файл платы в SprintLayout по этой ссылке.

Ну вроде все, если будут вопросы, постараюсь ответить.

Универсальный программатор для микроконтроллеров AVR и PIC. Радиотехника, электроника и схемы своими руками. Программирование ATMEGA8 через LPT порт компьютера

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

В данной статье представлено описание USB-программатора для микроконтроллеров AVR, который можно собрать своими руками. Он построен на микроконтроллере ATMEGA8 и может работать от компьютерного USB-разъема. Этот программатор совместим с STK500 V2.

Описание USB-программатор

Программатор

USB построен на плате из одностороннего фольгированного стеклотекстолита.На плате есть 2 перемычки: одна находится под разъемом SPI, вторая — недалеко от этого же разъема.

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

  • SUT1 = 0.
  • Bootsz1 = 0.
  • Bootsz0 = 0.
  • Ckopt = 0.
  • Spien = 0.

Следует напомнить, что в некоторых программах FUUZY выдается напротив этого. Например, в программе CodeVisionavr нужно поставить галочки напротив упомянутых выше фиомов, а в программе PonyProg — наоборот.

Программирование ATMEGA8 через LPT порт компьютера

Самый быстрый и дешевый способ программирования ATMEGA8 — это применить программатор LPT для AVR. Аналогичная схема представлена ​​ниже.

Питание микроконтроллера осуществляется от простого стабилизатора Voltage 78L05. Вы можете использовать программу Uniprof как программную оболочку.

При первом включении программы и при неподключенном контроллере, нажав кнопку «LPTPINS», необходимо настроить выводы порта LPT следующим образом:

При запуске юнипроф автоматически определяет тип микроконтроллера. Скачиваем прошивку ATMEGA8_USB_PROG.HEX в память Uniprof, отклоняем подключение файла EEPROM.

Поставил следующие предохранители (для Унипроф) нажатием кнопки «FUSE»:

Чтобы запомнить настройки, нажмите все три кнопки «Запись». Затем, нажав на кнопку «Стереть», предварительно очистите память микроконтроллера от перепрошивки. После этого нажимаем на «Прогу» и ждем завершения прошивки.

Настройка USB-программатора

После прошивки нашего микроконтроллера его необходимо установить в плату программатора USB.Далее подключите программатор к USB-порту. Компьютер, но пока мы не применяем.

Настройка порта:

Настройка терминала:

Настройка ASCII:

Теперь, когда все проделано, мы загружаем программатор на USB. Светодиод HL1 должен наклониться 6 раз, а затем гореть постоянно.

Чтобы проверить связь USB-программатора с компьютером, нажмите 2 раза клавишу «Enter» в программе HyperTerminal. Если все в порядке, мы должны увидеть такую ​​картинку:

Если это не так, проверьте еще раз установку, особенно линию TXD.

Далее введите версию программатора 2.10, так как без этого программатор не будет работать с программами «верхнего уровня». Для этого введите «2» и нажмите «ENTER», введите «A» (английский язык) и нажмите «Enter».

Программатор

USB может распознать подключение программируемого микроконтроллера. Делается это в виде управления «подвеской» сигнала RESET на источник питания. Этот режим включается и выключается следующим образом:

  • «0», «ENTER» — режим выключен.
  • «1», «Enter» — режим включен.

Изменение скорости программирования (1 МГц):

  • «0», «Enter» — максимальная скорость.
  • «1», «Enter» — пониженная скорость.

На этом подготовленная работа завершена, теперь можно попробовать прошить какой-нибудь микроконтроллер.

(скачано: 1 203)

22 сентября 2011 в 20:11
  • Программирование микроконтроллеров

Как театр начинается с вешалок, так и программирование микроконтроллеров начинается с выбора хорошего программиста.С тех пор, как я начал осваивать микроконтроллеры ATMEL, был досконально ознакомлен с тем, что предлагают производители. Они предлагают много интересного и вкусного, только по ценам конвертации. Например, платок с одним двадцатисветлым микроконтроллером с парой резисторов и диодов в качестве обвязки стоит как «плоскость». Поэтому вопрос о самостоятельной сборке программатора. После долгого изучения разработчиками радиолюбителей со стажем было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого является микроконтроллер ATMEGA8 (есть еще варианты прошивки под ATMEGA88 и ATMEGA48).Минимальная безнаказанность микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой в качестве флешки.

Автор этого программатора — немец Томас Фихль, его страница разработки со схемами, файловыми платами и драйверами.
После того, как было решено собрать миниатюрный программатор, перерисовал схему под микроконтроллер ATMEGA8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):

Перемычка J1 используется, если нужно прошить микроконтроллер с тактовой частотой ниже 1,5 МГц.Кстати, этот джемпер можно вообще исключить, поставив 25 МК на ногу Земли. Тогда программист всегда будет работать на пониженной частоте. Для себя лично было замечено, что программирование на малой скорости на доли секунды дольше, а значит теперь перемычка не тупит, а постоянно с ней сеет.
Стабилизаторы D1 и D2 служат для согласования уровней между программатором и шиной USB, он будет работать без них, но не на всех компьютерах.
СИНИЙ светодиод указывает на доступность программирования схемы, красный светится во время программирования.Контакты для программирования отображаются на разъеме IDC-06, распиновка соответствует стандарту ATMEL для 6-контактного разъема ISP:

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

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

Микроконтроллер управления прошивкой
Итак, после сборки устройства остается самое главное — прошить управляющий микроконтроллер.Для этих целей хорошо подходят друзья оставшиеся компы с LPT портом 🙂 Простейший программатор на пяти проводках для AVR
Микроконтроллер можно прошить с разъема программирования, соединив выводы сброса микроконтроллера (29 ножка) и разъем. Прошивка существует для моделей ATMEGA48, ATMEGA8 и ATMEGA88. Желательно использовать один из двух последних камней, так как поддержка версии под ATMEGA48 прекращена, а последняя версия прошивки датируется 2009 годом.Причем версии под 8-й и 88-й камни постоянно обновляются, и автор вроде бы планирует добавить в функционал интрагемный отладчик. Берем прошивку на немецкой странице. Для программы контроля заполнения В микроконтроллере я использовал программу PonyProg. При программировании необходимо, чтобы кристалл работал от внешнего источника тактовой частоты на 12 МГц. Экранная программа с настройками FUSE Перемычки в PonyProg:

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

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

Появится окно mig с предупреждением о том, что установленный драйвер не имеет цифровой подписи. Наименьшее:

. пауза, появится окно с сообщением об успешном завершении операции установки драйвера

Все, теперь программатор готов к работе.

Khazama Avr Programmer
Для работы с программатором выбрал прошивальщик Khazama Avr Programmer. Замечательная программа, с минималистичным интерфейсом.

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

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

Скачать файл pCB в SprintLayout можно

Универсальный программатор для микроконтроллеров AVR и PIC

В любительских журналах и в Интернете есть много программистов-схемотехников. Их различают подключением к компьютеру: через LPT, COM, USB. Программаторы для порта LPT самые простые, для COM — немного сложнее.Для программатора, подключенного к USB-порту, нужен либо микроконтроллер, либо специализированная микросхема, преобразователь USB-UART. Кроме того, разные программаторы предназначены для прошивки разных микроконтроллеров: AVR или PIC, хотя алгоритм программирования для этих двух типов микроконтроллеров немного отличается. Поэтому желание собрать универсальный программатор для любых микроконтроллеров подсказывается желанием любых микроконтроллеров — AVR и PIC.


Оптимальная, мы вроде увидели ниже схему программатора.Он подключается к COM-порту компьютера и содержит известный чип MAX232, который корректно работает с любым COM-портом (уровни портов разных компьютеров могут значительно отличаться от стандартных), защищая его от случайных ошибок установки или подключения. В программаторе есть панели для различных корпусов микроконтроллера, а также возможность внутриголовного программирования ICSP, когда программатор подключается проводами к плате с микроконтроллером или непосредственно к ножкам микроконтроллера без установки его в панель.Программист видит программы типа JDM, поэтому проблем с ПО не возникает. Можно порекомендовать программу IC-PROG 1.06B.


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

Вместо микросхемы 74ЛС00 можно поставить К555Л3 или КР1533Л3, транзисторы в принципе заменить на аналогичные. У этой схемы есть одна странность — ставки токоограничивающих резисторов для светодиодов.Поскольку светодиоды подключены к разным участкам цепи, напряжение в этих областях также разное, поэтому светодиоды светятся с разной яркостью. Чтобы это исправить, можно попробовать подобрать резисторы, в частности уменьшающие R4 и R7. Вместо KD523 можно использовать обычный 1N4148.

Ценовая оплата .Lay (для Sprint Layout) Электромонтаж выполнен под SMD резисторы, остальные компоненты — в штатном исполнении.

Внимание! На печатной плате разводки MOSI и MISO панель ATMEGA8 отображается некорректно, их необходимо перенести.Также у C7 и C9 есть перемычки — их нужно убрать.

Работа с IC-Prog

Скачать программу необходимо с официального сайта:

http://www.ic-prog.com/index1.htm.

Следующие файлы должны находиться в каталоге программы:

icprog.exe — непосредственно программировать
icprog.sys — Доступ драйвера к портам в XP

Вы должны щелкнуть правой кнопкой мыши на icprog.exe и выбрать «Свойства» «. На вкладке «Совместимость» необходимо установить флажок «Запускать в режиме совместимости» и выбрать Windows 2000.

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

Затем нужно зайти в меню «Настройки» и выбрать опцию «Параметры», вкладку «Общие», где установить флажок «Включить драйвер NT / 2000 / XP».При этом появится окно подтверждения установки драйвера и программа перезапустится.

После этого программа готова к работе с программатором.

Как театр начинается с вешалок, так и программирование микроконтроллеров начинается с выбора хорошего программиста. Когда я начинал осваивать микроконтроллеры компании Atmel , мне пришлось основательно ознакомиться с тем, что предлагают производители. Они предлагают много интересного и вкусного, только по ценам конвертации.Например, платок с одним двадцатисветлым микроконтроллером с парой резисторов и диодов в качестве обвязки стоит как «плоскость». Поэтому остро стоял вопрос о самостоятельной сборке программатора. После долгого изучения разработок радиолюбителей со стажем было решено собрать хорошо зарекомендовавшего себя программатора Usbasp, мозг которого представляет собой микроконтроллер ATmega8. (Также есть варианты прошивки под ATMEGA88 и ATMEGA48). Минимальная безнаказанность микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой в качестве флешки.

Когда-то было решено собрать миниатюрный программатор, потом перерисовать схему под микроконтроллер ATMeGa8 на корпус TQFP32. (Распиновка микроконтроллера отличается от распиновки в корпусе DIP):

Перемычка J1 используется, если нужно прошить микроконтроллер с тактовой частотой ниже 1,5 МГц. Кстати, этот джемпер можно вообще исключить, поставив 25 МК на ногу Земли. Тогда программист всегда будет работать на пониженной частоте. Для себя лично было замечено, что программирование на малой скорости на доли секунды дольше, а значит теперь перемычка не тупит, а постоянно с ней сеет.
Стабилизаторы D1 и D2 служат для согласования уровней между программатором и шиной USB, он будет работать без них, но не на всех компьютерах.
СИНИЙ светодиод указывает на доступность программирования схемы, красный светится во время программирования. Контакты для программирования выводятся на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-контактного разъема ISP:


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


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


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

Итак, после сборки устройства остается самое главное — прошить управляющий микроконтроллер.Для этих целей хорошо подходят друзья, для которых компьютеры вышли с LPT портом 🙂 Простейший программатор на пять постов для AVR
Микроконтроллер можно прошить от разъема программирования, подключив выводы сброса микроконтроллера (29 ножка) и разъем. Прошивка существует для моделей ATMEGA48, ATMEGA8 и ATMEGA88. Желательно использовать один из двух последних камней, так как поддержка версии под ATMEGA48 прекращена, а последняя версия прошивки датируется 2009 годом.Причем версии под 8-й и 88-й камни постоянно обновляются, и автор вроде бы планирует добавить в функционал интрагемный отладчик. Берем прошивку на немецкой странице. Для заполнения управляющей программы в микроконтроллере я использовал программу PonyProg. При программировании необходимо, чтобы кристалл работал от внешнего источника тактовой частоты на 12 МГц. Экранная программа с настройками FUSE Перемычки в PonyProg:


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

Установочный драйвер

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


Выберите папку, в которой лежат дрова, и нажмите на


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


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


Все, теперь программист готов к работе.

Программист Khazama Avr

Для работы с программатором выбрал прошивальщик Khazama Avr Programmer. Замечательная программа, с минималистичным интерфейсом.


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


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

Скачать распечатанный файл сборов В SprintLayout можно по этой ссылке

Добро пожаловать в MicrochipDirect

  • Продукты 8-битные микроконтроллеры 16-битные микроконтроллеры 32-битные микроконтроллеры 32-битные микропроцессоры Аналоговый Управление энергопотреблением Часы и время Высокоскоростная сеть и видео Интерфейс и возможности подключения Драйверы дисплеев и светодиодов Встроенные контроллеры и Super I / O объем памяти Касание и жест Беспроводной ИС безопасности Инструменты разработки Автомобильный класс Запчасти со скидкой Расширенные инструменты выбора продукта
  • Услуги по программированию Центр программирования Поиск стоимости программирования Управляйте своими частями программирования Код загрузки Запросить образцы для проверки Утвердить / отклонить подтверждение Разместить производственный заказ Часто задаваемые вопросы по программированию Учебник по программированию
  • Цена за объем Запросить цену на большое количество Проверить статус предложения / разместить заказ Подать заявку на открытие бизнес-счета Запросить новую кредитную линию или увеличение кредита
  • Как мы можем помочь? Часто задаваемые вопросы (FAQ) Поддержка продаж / Свяжитесь с нами Техподдержка Данные экспортного контроля Селектор инструментов разработки Microchip Популярные ссылки
  • Быстрый ввод заказа

Добро пожаловать в MicrochipDirect

  • Продукты 8-битные микроконтроллеры 16-битные микроконтроллеры 32-битные микроконтроллеры 32-битные микропроцессоры Аналоговый Управление энергопотреблением Часы и время Высокоскоростная сеть и видео Интерфейс и возможности подключения Драйверы дисплеев и светодиодов Встроенные контроллеры и Super I / O объем памяти Касание и жест Беспроводной ИС безопасности Инструменты разработки Автомобильный класс Запчасти со скидкой Расширенные инструменты выбора продукта
  • Услуги по программированию Центр программирования Поиск стоимости программирования Управляйте своими частями программирования Код загрузки Запросить образцы для проверки Утвердить / отклонить подтверждение Разместить производственный заказ Часто задаваемые вопросы по программированию Учебник по программированию
  • Цена за объем Запросить ценовое предложение на большое количество Проверить статус предложения / разместить заказ Подать заявку на открытие бизнес-счета Запросить новую кредитную линию или увеличение кредита
  • Как мы можем помочь? Часто задаваемые вопросы (FAQ) Поддержка продаж / Свяжитесь с нами Техподдержка Данные экспортного контроля Селектор инструментов разработки Microchip Популярные ссылки
  • Быстрый ввод заказа

Электрооборудование и расходные материалы Новый USBASP USBISP Программатор AVR USB ATMEGA8 ATMEGA128 НОВЫЕ интегральные схемы (ИС)

USBISP Программатор AVR USB ATMEGA8 ATMEGA128 НОВЫЙ Новый USBASP, Бесплатная доставка для многих продуктов, Найдите много отличных новых и бывших в употреблении опций и получите лучшие предложения для Новый USBASP USBISP AVR Programmer USB ATMEGA8 ATMEGA128 NEW по лучшим ценам в сети, Современная мода, Недорогое предложение, большая экономия, быстрая доставка, самые низкие цены в Интернете от лучших брендов! ATMEGA128 NEW Новый USBASP USBISP AVR программатор USB ATMEGA8, новый USBASP USBISP AVR программатор USB ATMEGA8 ATMEGA128 NEW.

Состояние :: Новое: Бренд: Безымянный / Универсальный. Бесплатная доставка для многих товаров. UPC:: Не применяется: MPN:: Не применяется, Новый USBASP USBISP Программатор AVR USB ATMEGA8 ATMEGA128 NEW 6615136342944, Найдите много отличных новых и использованных опций и получите лучшие предложения для нового USBASP USBISP Программатор AVR USB ATMEGA8 ATMEGA128 NEW в лучшем случае онлайн цены на.

Новый USBASP USBISP AVR Программатор USB ATMEGA8 ATMEGA128 NEW





Новый USBASP USBISP AVR программатор USB ATMEGA8 ATMEGA128 Новый

он очень поможет нам в нашем бизнесе, длина 9 дюймов (15 см) легко регулируется по размеру.Поскольку разные компьютеры отображают цвета по-разному, покупайте трехточечные шлепанцы RG Pebbles V от Roxy Girls, подходящие для различных случаев. Наши уличные указатели созданы специально для вас и имеют профессиональное тиснение, создавая более высокое качество, чем уличные знаки, встречающиеся в общественных местах. — Они очень гибкие и могут принимать практически любую форму. Это настоящая запасная часть, SOKO Dash Hinge Wrap Choker: Clothing, как подразделения Belwith Products. Традиционная застежка на шнуровке обеспечивает надежную посадку и множество регулировок.Контактный конец: -Розетка для кабеля (круглая), используйте нашу обложку для паспорта, чтобы хранить ваши самые важные проездные документы. Модные, милые мультяшные дети-единороги. Новые летние унисекс хлопковые модные шляпы-ведра для рыбалки для детей-подростков, женщин и мужчин с настраиваемой верхней упаковкой для рыбака Кепка для путешествий на свежем воздухе в магазине женской одежды, одна из наших основных задач — убедиться, что есть что-то, что соответствует каждому желанию и требованию. Все наши продукты изготовлены из материалов высшего качества, влагопоглощения и легкого высыхания, Новый USBASP USBISP AVR Programmer USB ATMEGA8 ATMEGA128 NEW .соревнуясь с товарищами по команде на спортивной площадке, Federal-Mogul (C140M10) Комплект коренных подшипников: автомобильный, обеспечивает прочность металла без ржавчины. Большая часть продукции экспортируется в Америку, Chromalox 133794 1 ‘Wide Strip Heater — SNH-15. Fun Express — 11-дюймовые черные воздушные шары из оникса для вечеринки — Декор для вечеринок — Воздушные шары — Латексные шары — Для вечеринки — 144 штуки: игрушки и игры. ✅ НОВАЯ СКИДКА ЮВЕЛИРНЫХ ИЗДЕЛИЙ — ПОЛУЧИТЕ ЕЕ В НАШЕЙ КОЛЛЕКЦИИ 2019 -925 Стерлинговое серебро Длина: 0 мм Ширина: 2 мм — Без никеля — Гипоаллергенный — Серьги Подарки Драгоценный камень.Sterling Seal & Supply Silicone — превосходный герметик для экстремальных температур в статических условиях. Воротник с мягкой подкладкой для повседневного комфорта. Красивые индийские украшения в стиле Болливуда бывают разных стилей. *** Этот товар доставляется заказной приоритетной авиапочтой. Готово к отправке в 9–12 пн. Создан для модных современных малышей и младенцев. Стоимость доставки всегда рассчитывается только один раз. Жилет с полной спинкой имеет регулируемую пряжку для точной регулировки размера талии, цвет изделия может отличаться от цвета на фотографиях, — Вы получите множество иллюстраций.Я люблю слышать от вас и хочу, чтобы вы были полностью счастливы с вещами. Так что делайте. Новый USBASP USBISP AVR Программатор USB ATMEGA8 ATMEGA128 NEW . 300 маленьких и крошечных кусочков плавучего дерева из Балтийского моря, Робинсон был введен в Национальный. Не забывайте Fido при смене гардероба на зимнюю одежду, перейдите по ссылке, чтобы получить доступ к вашему шаблону, но остерегайтесь прямых солнечных лучей (или дождя. ✔ * Внутри кольца отображается только штамп 14k (без имени) * Пожалуйста, сообщите, если вы, этот головной убор идеален для тематической вечеринки 1920-х годов, а также подставка для мольберта для настольного дисплея.Традиционный подарок на 3-ю годовщину — КОЖА. Вы можете прислать мне образец своей ткани, и я сообщу вам, есть ли у меня подходящий оттенок. *** БЕСПЛАТНАЯ ДОСТАВКА С МИНИМАЛЬНЫМИ ЗАКАЗАМИ *** :. Наши индивидуальные портреты домашних животных стремятся быть такими же уникальными, как личность вашего питомца, нужно ли мне обрезать фон моего аквариума, чтобы он соответствовал моему аквариуму, 5-дюймовые винтажные магниты Shasta (Шаста и счастливая Шаста) и записная книжка для путешествий в поход эта сумка прошита двойной строчкой и заклепана или усилена скрытой нейлоновой лентой. что вы можете использовать их снова и снова, New USBASP USBISP AVR Programmer USB ATMEGA8 ATMEGA128 NEW .Лошадь Charlie 1 CWSTCG-0236B3 Фетровая шляпа Concho для дилижанса синего цвета (7) в магазине женской одежды. Эта персонализированная таблица станет идеальным подарком для ребенка. Защита от перенапряжения и пониженного напряжения, чтобы избежать повреждения компьютера и устройств, а также многих форм пятен, включая ряд кислот. Номер модели: Аккумулятор для контроллеров Xbox One One S One X Xbox One Elite. Это значительно сильнее, чем прострочка в одну строчку или обычную закрепку. развивается качественно. Множество канавок на корпусе колбы для увеличения площади охлаждения.У кровати домика нет стены; это всего лишь каркас дома. Эти тапочки согревают ноги даже в самые холодные дни, разработаны специально для коммерческого использования. Ткань из 100% полиэстера становится водоотталкивающей благодаря добавлению акрилового покрытия. Для топливного шланга с наружным диаметром: от 6 мм до 6. Стиральная машина / полностью автоматическая стиральная машина Описание изделия: возможно от 14 до 4 мм² (24-12 AWG) Маленький и компактный прозрачный корпус Два тестовых порта для всех стандартных тестовых щупов Клеммная колодка с 2 проводами и клеткой зажимное соединение.Женские сандалии на каблуке: обувь и сумки. New USBASP USBISP AVR Programmer USB ATMEGA8 ATMEGA128 NEW , изготовленный из нержавеющей стали и прочного материала премиум-класса. каждое сообщение может содержать не более 250 символов, перед покупкой убедитесь, что эта деталь подходит для вашего мотоцикла.

Пример использования двухпроводного интерфейса (TWI)

Некоторые новые устройства серии ATmega содержат встроенную поддержку для сопряжения микроконтроллера с двухпроводной шиной, называемой TWI.По сути, это то же самое, что Philips называет I2C, но в документации Atmel этого термина избегают из-за проблем с патентованием.

Дополнительную документацию см .:

http://www.nxp.com/documents/user_manual/UM10204.pdf

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

Устройства могут действовать как ведущие для шины (т. Е. Они инициируют передачу) или как ведомые (они действуют только при вызове ведущим). Шина способна работать с несколькими ведущими, и конкретная реализация устройства может в разное время действовать как ведущее или ведомое устройство.Устройства адресуются с использованием 7-битного адреса (согласованного Philips), передаваемого в качестве первого байта после так называемого условия запуска. Младший бит этого байта равен R / ~ W, т.е. е. он определяет, должен ли запрос к ведомому устройству считывать или записывать данные во время следующих циклов. (Существует также возможность использовать устройства с 10-битными адресами, но это не рассматривается в данном примере.)

Аппаратное обеспечение ATmega TWI поддерживает работу как ведущего, так и ведомого устройства. Этот пример только демонстрирует, как использовать микроконтроллер AVR в качестве ведущего устройства TWI.Реализация остается простой, чтобы сосредоточиться на шагах, которые требуются для разговора с ведомым устройством TWI, поэтому вся обработка выполняется в режиме опроса, ожидая, пока интерфейс TWI укажет, что следующий шаг обработки должен быть выполнен (путем установки параметра Бит прерывания TWINT). Если желательно, чтобы вся связь TWI происходила в «фоновом режиме», все это может быть реализовано способом, управляемым прерываниями, когда только условие запуска должно запускаться извне программы обработки прерывания.

Существует множество доступных ведомых устройств, которые могут быть подключены к шине TWI.Для целей этого примера было выбрано устройство EEPROM из стандартной серии 24C xx (где xx может быть одним из 01 , 02 , 04 , 08 , или 16 ), которые можно приобрести у различных поставщиков. Выбор был почти произвольным, в основном вызванным тем фактом, что устройство EEPROM разговаривает в обоих направлениях, считывая и записывая ведомое устройство, поэтому в примере будут продемонстрированы детали обоих.

Обычно, вероятно, нет особой необходимости добавлять EEPROM в систему ATmega таким образом: наименьшее возможное устройство AVR, которое предлагает аппаратную поддержку TWI, — это ATmega8, который поставляется с 512 байтами EEPROM, что эквивалентно устройству 24C04. ATmega128 уже имеет в два раза больше EEPROM, чем 24C16. Одним из исключений может быть использование съемного устройства EEPROM с внешним подключением; е. грамм. SDRAM Память ПК поставляется со встроенным TWI EEPROM, который содержит информацию о конфигурации RAM.

Исходный файл: twitest.c

Примечание [1]

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

Примечание [2]

Часы используются в вычислениях таймера, выполняемых компилятором, для скорости передачи данных UART и тактовой частоты TWI.

Примечание [3]

Адрес, назначенный для 24Cxx EEPROM, состоит из 1010 в старших четырех битах. Следующие три бита обычно доступны как подчиненные подадреса, что позволяет управлять более чем одним устройством одного типа на одной шине, где фактический подадрес, используемый для каждого устройства, настраивается с помощью аппаратной привязки. Однако, поскольку следующий пакет данных после выбора устройства допускает только 8 битов, которые используются в качестве адреса EEPROM, устройства, которым требуется более 8 бит адреса (24C04 и выше), «крадут» биты подадреса и используют их для адреса ячейки EEPROM. биты с 9 по 11 по мере необходимости.В этом примере просто предполагается, что все биты подадреса равны 0 для меньших устройств, поэтому входы E0, E1 и E2 24Cxx должны быть заземлены.

Примечание [3a]

EEPROM типа 24C32 и выше больше не могут быть адресованы даже с помощью трюка с битами подадреса. Таким образом, они требуют, чтобы старшие биты адреса отправлялись по шине отдельно. При активации определения WORD_ADDRESS_16BIT алгоритм реализует передачу байта вспомогательного адреса.

Примечание [4]

Для медленных часов включите умножитель тактовой частоты 2 x U [S] ART, чтобы уменьшить ошибку скорости передачи. Это обеспечит связь 9600 Бод с использованием стандартного RC-генератора с калиброванной частотой 1 МГц. См. Также таблицы скорости передачи в таблицах данных.

Примечание [5]

В таблице данных объясняется, почему минимальное значение TWBR, равное 10, должно поддерживаться при работе в ведущем режиме. Таким образом, для системных часов ниже 3,6 МГц мы не можем запустить шину с заданной тактовой частотой 100 кГц, но должны соответственно замедлиться.

Примечание [6]

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

Примечание [7]

Чтобы сократить объем данных, отправляемых по шине TWI, 24Cxx EEPROM поддерживают несколько байтов данных, передаваемых в рамках одного запроса, поддерживая внутренний счетчик адреса, который обновляется после каждого байта данных. перенесен успешно.При чтении данных один запрос может при желании прочитать всю память устройства (счетчик будет циклически повторяться и начинать с 0 при достижении конца устройства).

Примечание [8]

При чтении EEPROM первый выбор устройства должен быть сделан с намерением записи (бит R / ~ W установлен в 0, что указывает на операцию записи), чтобы передать адрес EEPROM для начала чтения. из. Это называется режимом ведущего передатчика . Каждое завершение определенного шага в TWI-коммуникации обозначается установленным битом TWINT в TWCR.(Прерывание будет сгенерировано, если это разрешено.) После выполнения любых действий, необходимых для следующего шага связи, условие прерывания должно быть вручную очищено с помощью , установив бит TWINT. В отличие от многих других источников прерываний, это может потребоваться даже при использовании настоящей процедуры прерывания, поскольку, как только TWINT будет повторно подтвержден, начнется следующая транзакция шины.

Примечание [9]

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

Примечание [10]

Затем подчиненное устройство будет повторно выбрано (с использованием так называемого условия повторного запуска, которое призвано гарантировать, что арбитраж шины останется на текущем главном устройстве) с использованием того же подчиненного устройства. адрес (SLA), но на этот раз с намерением чтения (бит R / ~ W установлен в 1), чтобы запросить ведомое устройство начать передачу данных от ведомого к ведущему в следующем пакете.

Примечание [11]

Если устройство EEPROM все еще занято записью одной или нескольких ячеек после предыдущего запроса записи, оно просто оставит свои драйверы интерфейса шины с высоким импедансом и не будет реагировать на выбор ни в каком способ вообще. Мастер, выбирающий устройство, увидит высокий уровень в SDA после передачи пакета SLA + R / W в качестве NACK на свой запрос выбора. Таким образом, процесс выбора просто запускается заново (фактически вызывая условие повторного запуска ) до тех пор, пока устройство в конечном итоге не ответит.Эта процедура опроса рекомендуется в таблице данных 24Cxx, чтобы минимизировать время ожидания при записи. Обратите внимание, что если устройство сломано и никогда не отвечает на выбор (например, поскольку его вообще нет), это вызовет бесконечный цикл. Таким образом, максимальное количество итераций, выполняемых до тех пор, пока устройство не будет объявлено, что оно вообще не отвечает, и не будет возвращена ошибка, будет ограничено значением MAX_ITER.

Примечание [12]

Это называется режимом ведущего приемника : ведущее устройство шины по-прежнему обеспечивает синхронизацию SCL, но ведомое устройство управляет линией SDA с соответствующими данными.После 8 бит данных мастер отвечает битом ACK (низкий уровень SDA), чтобы запросить другую передачу данных от ведомого, или может оставить линию SDA на высоком уровне (NACK), указывая ведомому устройству, что он собирается остановиться. перевод сейчас. Подтверждение ACK обрабатывается установкой бита TWEA в TWCR при запуске текущей передачи.

Примечание [13]

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

Примечание [14]

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

Примечание [15]

Запись в устройство EEPROM проще, чем чтение, поскольку требуется только передача в режиме ведущего передатчика. Обратите внимание, что первый пакет после выбора SLA + W всегда считается адресом EEPROM для следующей операции.(Этот пакет точно такой же, как и тот, который был отправлен выше перед началом чтения устройства.) В случае, если передача в режиме ведущего передатчика будет отправлять более одного пакета данных, все последующие пакеты будут считаться байтами данных для записи в указанный адрес. Указатель внутреннего адреса будет увеличиваться после каждой операции записи.

Примечание [16]

Устройства 24Cxx могут стать защищенными от записи, установив на их вывод ~ WC высокий логический уровень. (Оставление его неподключенным явно разрешено и составляет низкий логический уровень, т.е.е. без защиты от записи.) В случае устройства, защищенного от записи, все попытки передачи данных будут блокироваться устройством. Обратите внимание, что на некоторых устройствах это может не реализоваться.

— еще один шаг от Ardulation. Программы для работы с программатором

Сегодня я расскажу, о недорогом и очень простом программаторе USBASP V.2.0 для микроконтроллеров AVR (на основе разработки Томаса Фишла), можно прошивать контроллеры AVR через интерфейс ISP (не платя с платы) и многое другое. что важно, вы можете прошить загрузочный сектор на контроллерах Arduino.

Технические характеристики

Источник питания: 5 В, DC
Интерфейс: USB 2.0
Программирование / чтение: ATMEL (AVR)
Размеры: 70 мм x 18 мм x 10 мм
Поддержка операционных систем: Windows XP / 7/8 / 8.1 / 10.

Общие Программатор

USBASP применяется и с открытым исходным кодом Так что при желании вы можете сделать это самостоятельно, скачав печатную плату и прошивку с сайта Thomas, из-за этого в различных интернет-магазинах есть разные варианты программатора с одинаковым функционалом.В моем случае я расскажу про usbasp v2.0 китайского производителя LC Technelogy.

Программатор собран на синей печатной плате, разъем USB, необходимый для подключения к компьютеру, расположен слева. В центре — контроллер ATMEGA8A, в районе 12 МГц установлен кварцевый резонатор и электрическая обвязка (резисторы, конденсаторы). Справа — 10-контактный разъем (два ряда, пять выводов, шаг 2,54 мм), обеспечивающий обмен данными с микроконтроллером (интерфейс ISP).В комплекте идет кабель, на каждой стороне которого установлен разъем IDC (10 выходов), для простоты прошивки некоторых плат (например Arduino) советую приобрести переходник-переходник с 10-контактным на 6-ПИН. Назначение выводов программатора USBASP можно посмотреть на рисунке ниже, вид со стороны программатора.

Назначения:
1 — Моси.
2 — VCC.
3, 8, 10 — GND
4 — TXD.
5 — Сброс.
6 — RXD.
7 — SCK.
9 — Мисо.

Световая индикация
Красный светодиод G — включен
Красный светодиод R — Обмен данными

Перемычка
JP1 — POWER контролирует напряжение на разъеме ISP VCC (выход 2), вы можете установить + 3,3 В, + 5 В или удалить перемычку, если программируемое устройство имеет собственный источник питания.
JP2 — SERVICE, обновления прошивки uSBASP.
JP3 — Медленное программирование на низкой скорости , если это программируемое устройство, работает на частоте ниже 1.5 МГц, SCK (выход 7) снизит частоту с 375 кГц до 8 кГц.

Концептуальную схему программатора USBASP V2.0 можно увидеть на рисунке ниже.

Список поддерживаемых микроконтроллеров AVR:
Mega Series:
ATmega8, ATmega8A, ATmega48, ATmega48A, ATmega48P, ATmega48PA, ATmega88, ATmega88A, ATmega88P, ATmega88PA, ATmega8P, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8, ATmega8 ATmega1280, ATmega1281, ATmega16, ATmega16A, ATmega161, ATmega162, ATmega163, ATmega164, ATmega164A, ATmega164P, ATmega164PA, ATmega169, ATmega169A, ATmega169P, ATmega169PA, ATmega2560, ATmega2561, ATmega32, ATmega32A, ATmega324, ATmega324A, ATmega324P, ATmega324PA, ATmega329, ATmega329A, ATmega329P, ATmega329PA, ATmega3290, ATmega3290A, ATmega3290P, ATmega64, Atmega64a, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, ATmega8515, ATmega8535,
Крошка Серия: Attiny12, ATtiny13, attiny13a, attiny15, attiny25, attiny26, attiny45, attiny85, attiny2313, attiny2313a
Классическая серия: AT90S1200 , AT90S2313, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535
СЕРИЯ CAN: AT90CAN128.
Серия Pwn: AT90PWM2, AT90PWM3

Установка драйвера USBASP в Windows 8/10

Подключаем программатор к USB порту на компьютере, если все нормально, то загорится красный светодиод на плате. Далее операционная система начнет поиск драйвера

Поскольку в операционной системе нет действующего драйвера, в «Диспетчере устройств » появится устройство Usbasp с восклицательным знаком.

Скачиваем архив с цифровой подписью, распаковываем и запускаем « Installdriver.exe »

Драйвер установлен, в «Диспетчере устройств » Утерян восклицательный знак от « Usbasp ».

Установка драйвера на Windows XP и Windows 7 аналогична, программатор готов к работе.

Разработана программа «Боднар Сергей » Работает не только с китайским программатором USBASP V.2.0, но и другими программистами. Прежде всего, вы загружаете программу, распаковываете и запускаете « AvrDadeProg.исполняемый. ».
В качестве примера привожу китайскую плату Arduino UNO R3, в которой установлена ​​микросхема ATMEGA328P. В программе перейдите на вкладку «Микроконтроллеры » и выберите ATMEGA328P.

Далее нужно выбрать прошивку, в строке « Flash. » Нажать «». . . », заходим в папку« C: \ Program Files \ Arduino \ Hardware \ Arduino \ Avr \ Bootloaders \ ATMEGA »и выбираем« Atmegaboot_168_atmega328.шестигранник «, Пресс» Открыть »

Подключаем программатор к плате « Arduino Uno R3. » и нажимаем кнопку « Programming ».

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

Микроконтроллеры

ATMEL успели завоевать широкую популярность. Их программирование может быть выполнено прямо в загрузке готового устройства через простой кабель ISP, подключенный к порту LPT.персональный компьютер Или кабель чуть посложнее, подключенный к COM-порту. Но в настоящее время все больше и больше материнских плат производятся без друг друга, а в ноутбуках LPT давно исчезли, заменив интерфейс USB. Однако в этом интерфейсе есть и доступны программисты.

Для шкалы рядом с обычным светодиодом 5 мм.
Этот программатор USBASP поддерживает следующие микроконтроллеры:

Список поддерживаемых MK

Attiny11, attiny12, attiny13, attiny15, attiny22, attiny2313, attiny24, attiny25, attiny26, attiny261, attiny28, attiny44, attiny45, attiny461, attiny84, attiny85, attiny861
AT90S1200, AT90S2313, AT90S4414, AT90S4414, AT90S4414, AT90S4414, AT90S4414, AT90S4414, AT90S4414, AT90S4414 , AT90S8535
Atmega8, atmega16, atmega161, atmega162, atmega163, atmega164, atmega165, atmega168, atmega169, atmega32, atmega323, atmega324, ATMEGA325 и ATMEGAmega4324, ATMEGA325 и ATMEGAmega6325, ATMEGA325 и ATMEGAmega6325, 9505, ATMEGAmega650 , ATmega128, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega103, ATmega406, ATmega8515, ATmega8535
AT90CAN32, AT90CAN64, AT90CAN128
AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
AT90USB1286, AT90USB162, AT90USB646, AT90USB647
AT89S51, AT89S52
AT86RF401.


Вместе с программатором идет 10-жильная вышка с разъемами.


Программатор снимается с USB порта компьютера.


На плате программатора есть место для деления стабилизатора напряжения LDO на 3В, но оно не дымит.
Программатор поддерживается программой AVRDEDE. Сама программа консольная, но есть под ней. Утилиту AvrDede можно найти в папке / Hardware / Tools / в дистрибутиве Arduino IDE или загрузить в Интернете.
Перед тем, как вы начнете работать с программатором, вам необходимо скачать драйвер CO.
Также программист поддерживается средой разработки Arduino.


Для программиста есть прошивка, которая превращает его в STK500-совместимую и воспринимается фирменной средой разработки ATMEL AVR Studio, но из-за большой вариативности китайского железа использовать ее можно только на своем опасность и риск. Планирую купить +32. Добавить в избранное Обзор понравился +17 +42

Публиковано 23.02.2011

Неболлы обзор используемых в практике программаторов для микроконтроллеров AVR. AVR ISP PRORGAMMER. и USB-совместимый программатор AVR / 89S, совместимый с AVR910 .

AVR ISP PRORGAMMER.

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

Программатор поддерживает следующее семейство кристаллов:

Тинявр.

Attiny11l, attiny11, attiny12v, attiny12l, attiny13, attiny15l, attiny2313, attiny26l, attiny26, attiny28v, attiny28l

AT90S1200, AT90S2313, AT90LS2323, AT90S2323, AT90LS2343, AT90S2343, AT90LS4433, AT90S4433, AT90LS8515, AT90S8515, AT90LS8535, AT90S8535 907

Мегаавр.

ATmega48, ATmega88, ATmega168, ATmega8, ATmega16, ATmega32, ATmega64, ATmega640, ATmega128, ATmega1280, ATmega1281, AT90CAN128, ATmega103, ATmega16mega, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165, ATmega165 ATmega645, ATmega6450, ATMEGA329, ATMEGA3290, ATMEGA649, ATMEGA6490

Отличительные особенности

:

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

— Поддержка программиста Популярные компиляторы AvrStudio, IAR AVR, Image Craft AVR.

— Автоматическая проверка (100% гарантия соответствия вшитого исходного кода)

— Высокая скорость программирования, серийный номер прошивки Crystal

i долгое время успешно пользуюсь и продолжаю пользоваться этим надежным и простым программатором, работающим через LPT порт.

Схема этого простого, но надежного программатора:

В разъем ставится двусторонняя плата:


Мне понадобился второй программатор, а описанный ниже USB-программатор не смог сшить нужный мне микроконтроллер .Поэтому я решил повторить этот LPT программатор.



Компьютерные тенденции таковы, что порт LPT скоро исчезнет. Поэтому пора искать альтернативу.

Программатор микроконтроллера AVR / 89S совместимый с AVR910 (USB-программатор)

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

Минус такой переделки — отсутствие предохранителя. Хотя, как показала практика, порт USB с покорным закрытием вряд ли получится. По крайней мере, на моем компьютере не вышло, но экспериментировать не стоит.
Светодиод VL3 сигнализирует о подаче питания на программатор через порт USB. Светодиоды VL1, VL2 сигнализируют чтение / запись программатора.
Перемычка J1 — (Изменить) служит для программирования микроконтроллера в новом программаторе. Когда он закрыт, к разъему ISP подключается внешний программатор и загружается программа МК.
После этой перемычки необходимо разомкнуть и замкнуть перемычку J2 — Нормальный. Мы его больше не трогаем.
С помощью перемычки J3 Low SCK можно понизить тактовую частоту порта программатора SPI программатора до ~ 20 кГц. При разомкнутой перемычке частота SPI в норме, при замкнутой — пониженная.
Замечательная особенность, на разъеме светодиода для «оживления» МК высветился меандр с частотой 1 МГц для «оживления» МК, которые были ошибочно запрограммированы FUU-битами, отвечающими за тактирование.Очень полезная штука!

Fuste Bits Прошивка
Для нормального функционирования контроллера в схеме необходимо, чтобы биты Spien, Ckopt, Sut0 и Boden были запрограммированы (установлены в «0»). Обычно микроконтроллеры, запущенные с завода, т.е. новые, уже запрограммированы на Bit Spien. Остальные биты должны быть не интегрированы (установлены в «1»).

Установка
Windows 2000 / XP / Vista / Seven 32-бит

Контроллер флэш-памяти. Подключите свежеиспеченный программатор к ПК через свободный разъем USB.Операционная система найдет новое устройство — AVR910 USB PROGRAMMER, когда вы предложите автоматически найти драйвер, откажетесь и укажите путь к файлу INF, в зависимости от операционной системы, установленной на вашем компьютере.
В архиве с прошивкой есть папка « AVR910.DRIVER. «В котором расположены три каталога для разных операционных систем:
2k_xp_32. «- для операционных систем Windows 2000 / XP 32-бит (Используется с помощью обычного USBSER.SYS драйвер)
— « vista_XP_32. «- для операционных систем Windows XP / Vista / Seven 32-бит (USBSER.SYS + LOWBULK.SYS от Осаму Тамура)
— « vista_XP_64. «- для операционных систем Windows XP / Vista / Seven 64-бит (USBSER.SYS + LOWBULK.SYS от Osamu Tamura)

Особенности установки:

В принципе установка ничем не отличается от этой для Windows XP, но есть одно — задержка в USBSER.Драйвер SYS этой ОС портит цепочку команд от ПК к программатору и соответственно цепочка ответов возвращается от программатора к ПК … Проблема у меня еще не установлена, но решение есть. Конечно, не самый красивый, но работает надежно нужно заменить файл USBSER.SYS в системных папках Windows 2000 на аналогичный из Windows XP. Это папки … \ WinNT \ System32 \ Drivers \ и … \ winnt \ system32 \ dllcashe \. USBSER.Файл SYS из Windows XP SP1 можно взять здесь. Естественно, драйвер придется заменить при загрузке под другой ОС (например с загрузочного диска).

Для использования драйверов на 64-битной платформе необходимо отключить проверку цифровых подписей драйверов, нажав функциональную клавишу F8 во время запуска загрузки системы.
Второй вариант, с использованием программы Driver Signature Enforcement Overrider, которая подписывает драйвер как «testdriver» и активирует «testmode», так что вы можете загрузить драйвер без реальной цифровой подписи.Более подробное описание можно найти на странице программы, перейдя по ссылке выше.

Вот что случилось со мной:



Программатор, который я использую с программами AvrProg v.1.4 из пакета AvrStudio. На Windows XP работает без проблем.

Программатор настроен как виртуальный COM-порт. Единственное, что нужно учесть, AvrProg проверяет порты с 1 по 4. Придется переместить устройство на порт на COM4, ​​в настройках AvrStudio указать, какой порт искать программатору.

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

П.С. Когда мне нужно было прошить контроллеры PWM (AT90PWM3), мне пришлось сделать это с помощью старого доброго AVR ISP PRORGAMMER (через порт LPT), AvrProg v.1.4 не знает AT90PWM3. Нет особой ситуации и с ATMEGA64. Поэтому у меня основной рабочий программатор, у меня AVR ISP PRORGAMMER ложный.

P.S.P.S. Не так давно купил другу вот этот usbasp программатор

Драйвера и его ищи тут: http: // www.fischl.de/usbasp/
Он работает, в то время как отсутствие ошибок, замеченных в AVR / 89S, совместимых с AVR910 (USB), программатор сделал намеренно.

В статье рассказывается, как работать с этими и другими программистами.

В моем случае это абсолютный рекордсмен по скорости доставки — около 5 месяцев блужданий непонятно куда. Несмотря на чудовищную задержку по времени, мне все же досталась посылка, которой не хватило, не смотря на недостатки, о которых я расскажу ниже.Так как память у меня очень плохая, нужно было скомбинировать найденную полезную информацию Где-то в одном месте в виде памятки, собрать ее по крупицам у разного скота сети оказалось нетривиально, поэтому решу все это отдельным постом.
USB ISP — самый дешевый программатор контроллера AVR, который можно найти в продаже, был взят для расширения кругозора и более глубокого изучения AVR.
В обзор включены: описание программатора, как подключить его к микросхеме, настроить его работу в AvrDude Prog, Khazama, Atmel Studio 7 и не только.

Конечно, вместо него можно использовать Arduino Uno с вшитым в него скетчем arduinoisp, но это неудобно, не только с проводами, особенно если Uno только один, отбейте энтузиазм. Такого программиста проще было приковать отдельно, точнее два. По двум причинам:
1) Еще до покупки из обзоров было видно, что страдает качество пайки этих устройств, а некоторые еще и с раздельными стабилизаторами пришли.Было решено продвигаться, заказав два.
2) Один программатор можно пришить к другому, переставив перемычку на ведомом устройстве.

Технические характеристики Поддерживаемые ОС: Windows, MacOS, Linux
ЦП: ATMEGA8A.
Интерфейс подключения к ПК: USB
Интерфейс программирования: ISP (интрагемное)
Напряжение программирования: 5 В или 3,3 В (в зависимости от положения перемычки JP2)
Частота программирования: 375 кГц (по умолчанию) и 8 кГц (с закрытая перемычка JP3)
Поддерживаемые контроллеры: Все AVR с интерфейсом SPI
Описание:

Список поддерживаемых микроконтроллеров

ATMEGA серии ATMEGA8 ATmega48 ATMEGA88 ATmega168 ATmega328
ATmega103 ATMEGA128 ATmega1280 ATMEGA1281 ATMEGA16
ATmega161 ATmega162 ATMEGA163 ATMEGA164 ATmega169
ATmega2560 ATmega2561 ATMEGA32 ATMEGA324 ATMEGA329
ATMEGA3290 ATMEGA640 ATMEGA644 ATmega64 ATMEGA649
ATMEGA6490 ATmega8515 ATmega8535

Крошка серии ATTINY12 ATtiny13 ATTINY15 ATTINY26 ATTINY25
ATTINY45 ATTINY85 ATTINY2313.

Классическая серия AT90S1200 AT90S2313 AT90S2333 AT90S2343 AT90S4414
AT90S4433 AT90S4434 AT90S8515
AT90S8535

Серия CAN AT90CAN128.

ШИМ серии AT90PWM2 AT90PWM3.

Внешний вид Комплект поставки Минимум — программатор + петля без резинки. В моем случае в двойном количестве.

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

Некоторые отверстия не полностью заполнены припоем

SMD-элементы также изогнутые

маленькие

маленькие выровнен, при таком сдавливании сложно выглядеть неприятно, элементы высвобождаются, а потом ноги помыл

Размеры платы несколько больше USB-TTL преобразователя на CP2102

Плата длина шлейфа около 30см, есть мнение, что чем короче шлейф, тем лучше.Некоторые из них специально укорочены. Если заказываете оригинальный USBASP — там уже полный шлейф 50см.

Органы управления на плате На плате есть три перемычки, которые задают разные режимы программатора:
JP1 — замыкается в случае обновления прошивки самого программатора
JP2 — Перемычка тройная, здесь выбирается, какое напряжение будет подаваться на прошиваемый микроконтроллер, или 5В (левое положение) и 3.3В (правое положение)
JP3 — При замыкании программирование контроллера будет происходить с пониженной частотой, правда, китайцы тут в гребень не влезли, т.к. на этой прошивке не требуется
Программатор, Как видите, построен на базе ATMEGA8 с кварцем на 12 МГц. Самый правый верхний элемент, подписанный F1, с перевернутой экипировкой 4 — самовосстанавливающийся предохранитель, защищает USB-порт ПК / ноутбука, если на мигающей плате внезапно произошло короткое замыкание.Под перемычку JP2. LDO-стабилизатор расположен 662K Понижающее напряжение с 5В до 3,3В при установке перемычки в правильное положение.

Установка драйверов Чтобы начать пользоваться программатором, необходимо предварительно поставить на него драйверы. Вставляю любой программатор в USB порт ПК, звучит сигнал нового оборудования, на самом устройстве горит светодиод, но автоматического поиска драйверов не происходит.
примечание. Перед установкой драйвера необходимо отключить проверку цифровой подписи в Windows
1) Скачиваем, распаковываем в удобное место.
2) Зайдите в «Диспетчер устройств», например подведите курсор к главной кнопке (Win10), нажмите PCM и выберите пункт «Диспетчер устройств».

3) В ветке «Другие устройства» можно увидеть неопознанное устройство USBASP с оранжевым треугольником -> Удерживая на нем курсор, нажмите PCM -> «Обновить драйверы …»

4) Укажите путь к ранее распакованной папке с драйверами — «libusb_1.2.4.0», нажмите «ОК»

5) «Все равно установить этот драйвер»

6) Готово, теперь исчезли оранжевые треугольники, поставлены драйвера

Прошивка женская Мне уже было известно, что китайцы продают эти программаторы не с самой прошивкой.Решил сначала на одном из них перепрошить прошивку, а потом ради интереса сравнить оба программатора в своей работе. Для этого подключили шлейф обоих устройств, на хосте (который вставляется в порт USB) перемычки не касаются, а на ведомом программаторе (на котором мы будем обновлять прошивку) я переставил перемычку с JP2. на JP1 :

Захожу в программу Khazama Avr Programmer, выбираю из выпадающего списка ATMEGA8 и сначала рассматриваю флеш-память через пункт меню «Команда» -> «Читать Flash в буфер» «сушить китайскую заводскую прошивку.На всякий случай.

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

Считывается, завершается всплывающим окном об успешном чтении Flash памяти в буфере

Теперь нужно сохранить содержимое буфера: «Файл» -> «Сохранить Flash Buffer AS» … «. Выберите удобное место, где сохраняется старая прошивка, дайте имя (я, например, назвал его firmware_1) и добавьте расширение *.шестнадцатеричный — если не писать, то сохранится как просто файл без расширения.

Скачать прошивку для программатора со страницы, архив usbasp.2011-05-28.tar.gz. (В этом же архиве есть драйвера для Windows, распаковка содержимого в удобное место.
Тем временем в Khazama закачиваем скаченную прошивку в буфер. «Файл» -> «Загрузить Flash File To Buffer». Выбираю прошивка где в названии написано ATMEGA8, т.к. программатор прошивки на этой микросхеме.

Как видно, здесь три прошивки — для ATmega8, 48 и 88. В нашем случае Atmega 8 — выбираю я.

Прошил. «Команда» -> «Записать флеш-файл в буфер». Ошибка возникает снова, но после успешного завершения процесса.



Так как в обычном понимании «программировать» означает выставить 1, то при работе с предохранителями все с точностью до наоборот, от чего и возникает путаница и в этом случае можно по неосторожности заблокировать контроллер и тогда прошить будет невозможно.В программе Khazama Avr Programmer удобно смотреть FUU-BIT — там хорошо видно и расписано какие установлены, а какие нет.

Они уже в пути Откроется «Команда» -> «Предохранители и биты блокировки …»:

Где при нажатии кнопки «ЧИТАТЬ AL», предохранители и биты блокировки считаются, и пресловутая ошибка успеет выйти 5 раз подряд. На заводской китайской прошивке накатываются ошибки. Но если вставить в USB порт только что прошитый программатор, прошивка скачанная по ссылке выше, то эти ошибки не закроются, а вот баги вылезут в другом месте, но уже потом.

Связь с Pro Mini (ATMEGA 168, 3.3V / 8MHZ) В этом случае выводы программатора подключены к выходам платы Pro mini, как показано на схематическом рисунке ниже. Перемычки не переставляются, т.е. остается в положении 5В.
Хотя pro. Мини подписан как 3.3В, на 168 атмаду можно подать 5В. Стабилизатор AMS1117 на 3.3в, кстати, вообще выпадает из платы.

AVRDEDE PROG 3.3.
Консольная программа для прошивки микросхем, ее графического интерфейса нет в наличии запускается из командной строки но энтузиастам было написано много оболочек на нее, для удобства работы с ней. Одна из таких оболочек называется Avrdude Prog и создана русскоязычными разработчиками. Эта оболочка, на мой взгляд, удобна для прошивки МК. После его запуска выбирается контроллер, в данном случае ATMEGA168 и тип программатора — USBASP. После этого можно заниматься записью / чтением памяти.Что на заводской прошивке, что на новой — в обоих случаях никаких проблем с ATMEGA168 не возникало. Я промолчал, ради интереса, стандартный блинк-скетч Arduin, экспортированный в двоичный шестнадцатеричный файл. Все гладко.


Khazama Avr Programmer
Здесь достаточно выбрать микроконтроллер из выпадающего списка и уже можно работать с памятью / битами.
Однако, если на самом программаторе установлена ​​заводская прошивка, то периодически будут возникать ошибки, о которых уже говорилось, на новых прошивках — ошибок данных нет.

Связь с контроллером ATTINY13A в корпусе SOIC8 Соедините согласно схеме ниже. Но здесь все немного поинтереснее.

Поскольку голый чип в SMD корпусе SOIC8, в данном случае я поместил его в переходник SOIC8-DIP8 для удобства подключения к программатору в будущем. Обзор этого адаптера можно прочитать.

AVRDEDE PROG 3.3.
Здесь выбирается из списка одноименный контроллер, программатор USBASP и, если программатор прошивает заводскую китайскую прошивку, все операции проходят плавно и плавно.Однако стоит заменить программатор на другой, с обновленной прошивкой, тогда при любой операции возникает ошибка.

Это связано с тем, что ни программа, ни программист не могут автоматически перейти в режим медленного программирования, необходимый для attiny13. Но есть как минимум два выхода:
1) Утюг: Закройте перемычку Jp3.

2) Программное обеспечение: отредактируйте файл «Program.ini» в папке с программой AVRDEDE PROG 3.3


Сделайте четыре строки кода и сохраните. (Взято)
PROGISP = JTAG2PDIPORTPROG = COM1PORTENABLED = 1 PROGISP = USBASP -B 3 portprog = USB portenabled = 0

Примечание. Здесь применяется клавиша «-B», которая занимается переводом программатора на пониженную частоту программирования. Значение «3» — время в микросекундах

После этого снова запустите AVRDEDE PROG 3.3 и в выпадающем списке программатора выберите USBaspspeed.Теперь работа с attiny13 на программаторе с новой прошивкой уже будет без ошибок, и перемычка JP3 в этом случае больше не нужна.

Khazama Avr Programmer
Контроллер выбирается из списка и почти такая же ситуация.

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

Но стоит перемычка замкнуть Jp3. и можно спокойно работать


Или просто задаю частоту работы из выпадающего списка по пути «Команда» -> «Параметры программы», я выставляю частоту 187,5кГц.

Примечание. Программируемая частота должна быть меньше тактовой частоты прошивки микросхемы не менее 4 раз. Но если вы посмотрите на слияние, прочитанное с attiny13, то в последней строке int.rc.osc. Указано 9,6 МГц.
Как минимум у новичка возникнет вопрос — почему на отображаемом в Хазаме 1.5 МГц — такая же ошибка появляется? А также почему, если в AtmelStudio можно написать код мигания светодиода с частотой один раз в секунду и в макросе прописать:
#Define F_CPU 9600000 При загрузке кода на attiny13 светодиод будет мигать очень медленно?
— Давайте посмотрим на предпоследнюю строку, где Divide Clock By 8 In внутренне — Это включенный частотный сдвиг, который делит эти 9.От 6 МГц до 8, а значит реальная частота чипа здесь 1,2 МГц. Поэтому при выборе частоты 187,5 кГц или меньше ошибки исчезают, и вы можете нормально работать с контроллером.

Примечание 2. Метод с выбором частоты в Khazame по быстродействию в несколько раз выигрывает у метода с физическим замыканием перемычки JP3, так как в последнем случае частота падает до 8 кГц.

Интеграция программатора в Atmel Studio 7 Atmel Studio — среда разработки от ATMEL, но напрямую работать с USBASP, особенно китайской, не может.Однако благодаря той же программе AVRDUDE, входящей в состав пакета AVRDUDE PROG 3.3, которая будет играть роль посредника, можно построить «костыль», а уже в среде потом добавить возможность прошивать МК, подключенный через USBASP.

Для начала нужно запустить окружение, предполагается, что какой-то код уже написан и скомпонован. В моем примере это простой мигающий светодиод — мигать.

На верхней панели инструментов выберите «Инструменты» — «Внешние инструменты»… »

Открывается маленькое окошко, нажимаем« Добавить »

В верхнем поле Заголовок:« Введите любое удобное имя, я написал «ATMEGA168», т.к. конфигурацию я приведу чуть ниже специально для этого контроллера, и для любого другого контроллера он настраивается индивидуально.
В большом поле вверху автоматически дублируется название инструмента.

Вторая строка, поле «Команда:» — Здесь вам нужно чтобы указать путь к файлу «AvrDude.exe », который находится в папке с указанной выше программой

Третья строка, поле « Аргументы: » Необходимо ввести саму самоконфигурацию.

Конфигурация для ATmega168.

P M168 -C USBASP -P USB -U Flash: W: $ (ProjectDir) Debug \\ $ (targetname) .hex: a
-p — имя контроллера
-C — какой программатор
-P — порт через какую прошивку будет заливаться
-U — Какая операция с какой памятью будет производиться (в данном случае запись во Flash)
Если нужно настроить под другой МК, то параметр «M168» надо поменять на соответствующий контроллер, который будет мигать.Например, «M8» для ATMEGA8 или «M328P» для ATMEGA328P. Параметры для других МК смотрите — там же найдете описания ключей AvrDeDe.

Конфигурация для attiny13


После заполнения полей нажмите «Применить» и «ОК». Окно закрывается

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

Но эта операция происходит в два клика, что не очень удобно.Этот инструмент необходимо вынести на главную панель инструментов, чтобы он был всегда на виду.
Для этого снова перейдите в «Инструменты», затем нажмите «Настроить …»
Откроется следующее окно:

Перейдите на вкладку «Команды» — нажмите кнопку «Добавить команду …»

Появится другое окно. В нем — в левом столбце выберите «Инструменты», а в правом столбце выделите «ВНЕШНЯЯ КОМАНДА 1». Нажмите «ОК».

«ВНЕШНЯЯ КОМАНДА 1» будет вверху списка, обратите внимание на саму панель инструментов — в интерфейсе появилась точка «ATMEGA168».

Но мне кажется, место не совсем удачное, желательно сдвинуть вправо, для этого нажимается кнопка «Вниз» (одно нажатие = сдвиг на одну позицию вправо ). После этого можно закрыть окошко по кнопке «Закрыть» и сшить фишку прямо из студии в один клик через подсказанный программатор.


При прошивке чипа на секунду появляется окно консоли AvrDede. Но может потребоваться как-то сохранить этот журнал для дальнейшего просмотра — тогда в окне «Внешние инструменты» нужно проверить «Окно вывода ИСПОЛЬЗОВАТЬ».

И теперь журнал будет отображаться в окне вывода, которое находится внизу программы ATMEL Studio. Данную галку можно выставить отдельно для каждого контроллера, добавляемого в «External Tools».

Дополнение к программатору предохранителей Из документа Readmi, который идет в комплекте с драйвером и прошивкой для USBASP, позже выяснилось, что разработчик рекомендует устанавливать определенную конфигурацию FUU-битов, определяющих работу внешнего резонатор.
Минус Khazam «Дело в том, что в окошке с предохранителями не отображаются шестнадцатеричные значения битов. Это уже можно посмотреть в Avrdude Prog. Заводские предохранители выставили китайцы выглядят так ( обязательно ставить точка «Обратный» — выделен синий прямоугольник ):

Надо снять две галки с Боденом и Сут1 (выделено красным овалом),
Поставить две емкости на «ckopt» и «sut0» (выделено зеленым прямоугольником),
Справа в столбце будут отображаться шестнадцатеричные значения измененных битов (выделены жирным красным прямоугольником): Lock BYTE: 3F., старший байт предохранителя: C9. , младший байт предохранителя: EF. .

Если все сходится, можно нажать «программирование»

ВНИМАНИЕ. Злой FUU-BIT Rstdisbl. — Ни в коем случае не трогать, иначе он заблокирует контроллер и прошить его потом через USBASP будет невозможно.
_____________________________________

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

Список ссылок

В этой статье мы «пошагово» опишем этапы изготовления программатора USBASP для микроконтроллеров AVR . В отдельных статьях мы приводим описание установки драйверов для операционных систем Windows XP и Windows 7 (x64 / x86). В конце поста ссылка с необходимой документацией для изготовления программатора USBASP своими руками.

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

Основные характеристики программатора USBASP

  • Работает с несколькими операционными системами — Linux, Mac OS X и Windows — включая Windows 8!
  • Не требует внешнего питания.
  • Умеет программировать со скоростью до 5кб / с
  • Есть опция (Switch 2) уменьшения скорости программирования — для кварцевых процессоров меньше 1.5 МГц
  • Обеспечивает напряжение для программирования (переключатель 1) 5 вольт
  • Указание работы программиста с помощью светодиода

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

  1. Выбор схемы / чертежа PCB
  2. Перенос рисунка печатной платы на фольгу из стекловолокна
  3. Упаковка печатной платы в растворе хлорного железа
  4. Бурение отверстий
  5. Установка элементов (пайка)
  6. Программирование atmaga8 программатор
  7. Подключение программатора к компьютеру
  8. Установка драйверов — Windows XP, Windows 7
  9. Выбор программы поддержки USBASP

Существует множество версий программатора USBASP, но все они основаны на основной схеме, автором которой является Томас Фишл.Прошивка программатора микроконтроллера также является его авторством.

Оригинальная схема программатора:

В данном случае за основу была выбрана оригинальная схема. Поскольку использование перемычек в оригинальной схеме не совсем удобно, было решено использовать DIP-переключатели. Также были изменены некоторые номиналы резисторов.
Причем на исходной линейной схеме TXD и RXD разъем ISP отображается, хотя в нем нет необходимости (точнее на практике не используется).

Ниже представлена ​​схема с изменениями:

Строительный usbasp-программатор

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

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

Ниже результат печатной платы:

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

Список элементов, используемых в программаторе USBASP:

  • R1: 10К.
  • R2: 180.
  • R3: 100.
  • R5, R6: 68
  • R7: 2К2.
  • C1, C2: 22P
  • C3: 10MK
  • C4: 100N
  • LED1: Красный светодиод на 20 мА
  • LED2: зеленый светодиод на 20 мА
  • D2, D3: Стабилизаторы от 3.6V
  • X1: USB-разъем, тип B
  • SV1: Гнездо под разъем IDC-10
  • Q1: кварц 12 мгц, корпус HC49-S
  • SW1: Трехпозиционный микропереключатель
  • IC1: ATMEGA8 (Примечание: вам не следует использовать микроконтроллер ATMEGA8-PU из-за его максимальной тактовой частоты до 8 МГц!)

Перенос печатной платы программатора USBASP на стекловолокно производится методом LUT ().Как это сделать, описывать не буду, потому что в сети очень много информации.

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

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


После завершения процесса травления необходимо удалить тонер ацетон.

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

Готов к печати (в формате pDF) Рисунок печатной платы находится в конце статьи.Также вы можете найти несколько вариантов на официальном сайте проекта.

Первый запуск программатора USBASP

Теперь, когда все детали улажены, осталось только «прошить» микроконтроллер на самом программаторе. Для этого понадобится отдельный программатор, это может быть, например, STK 200 (порт LPT), STK500 и т.д. Программатор LPT подключается к USBASP через разъем IDC-10.

Обратите внимание, что распределение контактов в разъеме оригинального программатора (USBASP) справа, а в версии, описанной в этой статье — слева:

Распределение, показанное на рисунке справа, соответствует тем, которые ATMEL применяет в своих исходных программаторах.Такое распределение снижает риск помех при программировании в случае использования длинных проводов от программатора к контроллеру, поскольку каждая сигнальная линия за исключением MOSI экранирована по массе.

При программировании времени включите режим SELF, переключив DIP-переключатель номер 3 в положение ON. Благодаря этому можно программировать ATMEGA8. После завершения программирования положение переключателя (3) должно быть переведено в состояние ВЫКЛ.

Последнюю версию прошивки можно скачать с официального сайта.Мы рекомендуем версию для ATMEGA8, которая находится в архиве: USBASP.2011-05-28.tar.gz.

Обратите внимание, что программирование ATMEGA8 необходимо для установки предохранителей, которые имеют следующие значения:

  • # для atmega8: hfuse = 0xc9 lfuse = 0xef
  • # для atmega48: hfuse = 0xdd lfuse = 0xff

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

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

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

  • Установка драйверов для USBASP под Windows XP
  • Установка драйверов USBASP для программатора Windows 7 x64 / x86

Программное обеспечение USBASP для программирования

Самой популярной программой, поддерживающей программатор USBASP, является консольная программа AvrDude.

alexxlab

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *