Прошивка attiny2313 через usb
Итак, для часов на гри понадобилось прошить контроллер attiny2313, может кто-нибудь подсказать , как это сделать? Имеется программатор usbasp и переходник usb uart на cp2102, до этого прошивал arduino pro mini. Хотелось бы увидеть подробную инструкцию
Устанавливаем на компьютере драйвер программатора (если нужен).
Берём USBASP, подключаем к МК, потом к компу. Если на его выходе нет питания - подаём 5В на МК.
Открываем программу-прошивальщик, поддерживающую данный программатор, в настройках указываем программатор. Устанавливаем галочку "Проверка" ("Verification") .
Пробуем считать сигнатуру чипа ("Read Chip Signature"). Если считалось и не 00 или FF, продолжаем. Иначе проверяем подключение.
Выбираем файл с прошивкой (.hex), если надо - EEPROM (.eep). Жмём "Очистить МК" (может называться "Clear chip", "Erase all" и так далее). Нажимаем "Загрузить FLASH" ("Load FLASH", "Write FLASH", . ). Ждём. Если всё в порядке, ошибок нет - отлично, делаем то же самое для EEPROM, если надо. Иначе снова проверяем, всё ли подключено.
Теперь выставляем фьюзы, желательно использовать калькулятор фьюзов. Жмём "Write Fuse Bits". Снова пробуем считать сигнатуру. Если считалась, можно надеяться, что всё прошито правильно.
_________________
Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б , ИГВ1-8х5Л, ИГПС1-222/7 , ИГПС1-111/7 и подобные.
Теперь выставляем фьюзы, желательно использовать калькулятор фьюзов. Жмём "Write Fuse Bits". Снова пробуем считать сигнатуру. Если считалась, можно надеяться, что всё прошито правильно.
Сперва заливать прошивку, потом фьюзы программировать? Подскажите наиболее удобную программу для заливки прошивки. Под вин7 x64
Желательно. Заливкой прошивки проверяется правильность связи МК с компьютером через программатор. Так точно не возникнет глюков при зашивании фьюзов.
Про Win7 не подскажу, у меня на всех компах XP.
_________________
Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б , ИГВ1-8х5Л, ИГПС1-222/7 , ИГПС1-111/7 и подобные.
avrdude. Заставляет работать мозгами и потом с меньшей вероятностью будут вопросы про неправильно прошитые "фузы".
Собственно, попробовал залить прошивку в attiny2313. Делал все через avrdudeshell . Я так понял , это avrdude с графическим интерфейсом. После прошивки появилось окно:
Внимание! Данный урок опирается на информацию из предыдущего урока о программаторах. Обязательно изучите сначала его. В прошлом уроке я рассказывал о том, как загрузить прошивку в Ардуино, используя внешние устройства: USB-TTL преобразователь и ISP программатор. Как нетрудно догадаться, при помощи этих же инструментов можно загрузить прошивку и в голый чип, будь то ATmega328 или ATtiny85. МК серии ATtiny являются младшими братьями АТмег, у них меньше ног, меньше памяти, меньше интерфейсов и таймеров, но зато они дешевле и хорошо подходят для мелких проектов. Давайте сравним несколько популярных МК:
МК/spec | ATmega328 | ATtiny85 | ATtiny13 |
Flash | 32k | 8k | 1k |
SRAM | 2k | 512b | 64b |
EEPROM | 1k | 512b | 64b |
Цифр. Ног | 23 | 6 | 6 |
Аналог. Ног | 8 | 4 | 4 |
Таймеры | 3 | 2 | 1 |
SPI | + | + | – |
UART | + | – | – |
I2C | + | + | – |
Цена | 95р | 70р | 20р |
Примечание: большинство функций объединены на одних и тех же пинах. Как вы можете видеть, чем дешевле МК, тем меньше у него возможностей. Полное подробное сравнение можно глянуть здесь.
UART и ISP
Для подключения прошиваторов к голому чипу нам нужно будет изучить распиновку (pinout) на нужный микроконтроллер. Распиновки бывают цветные и красивые (часто с ошибками), а бывают более серьёзные и правильные. Лучше всего открыть даташит на нужный МК и на второй же странице найти 100% правильную распиновку. Например для ATmega328, ATtiny85 и ATtiny13:
На данных “схемах” подписаны все функции пинов МК. Чтобы загрузить прошивку через USB-TTL, то есть при помощи “живущего в памяти” загрузчика (bootloader), МК должен иметь на борту аппаратный UART, то есть пины RX и TX. Если таких пинов нет – прошивку можно загрузить только через ISP программатор. Вы спросите, а как же Digispark? Там стоит МК ATtiny85, у которого нет UART, но прошивка загружается через USB! Верно, но там хитрые разработчики сделали не менее хитрый загрузчик, который имитирует USB, и прошивка на Digispark загружается при помощи специальной программы, которая запускается в фоне, когда вы нажимаете кнопку “Загрузить” в Arduino IDE. Резюмируя для общего случая:
- Если в МК прошит загрузчик (bootloader) и на борту имеется аппаратный UART (пины RX TX), прошивку можно загрузить через USB-TTL “загружатор”, также через него можно заниматься отладкой кода при помощи Serial.
- Если в МК нет пинов RX TX, значит прошивку можно загрузить только при помощи ISP программатора, да и о загрузчике в целом можно забыть, не нужен он. Отладкой всё ещё можно пользоваться, подключив USB-TTL и подняв на МК “программный” UART. Например в ядре для ATtiny85 (об этом ниже) уже идёт встроенный SoftwareSerial и можно им пользоваться.
Подключение программатора
Программатор, или Ардуину в качестве программатора, подключить очень просто. Смотрим распиновку и подключаем:
- Шину ISP: пины MOSI, MISO и SCK. Они есть на всех МК
- Сброс RST
- Землю GND. Любую из имеющихся, они соединены внутри МК
- Если МК не питается от своего источника, подключаем заодно VCC
Например ATmega328p подключаем к USB ASP (обсуждали в прошлом уроке) 6-пин вот так: Примечание: да, другие компоненты не нужны. Новый (из магазина) МК тактируется от внутреннего генератора на 8 МГц и может без проблем прошиваться прямо так как на схеме выше. Тиньки к тому же USB ASP подключаются так: Для удобства я использую макетку-дигиспарк, на которой разведены пины как раз под ISP 6-пин хэдер: втыкается выпирающим “ключом” в сторону МК. В плате выведены 8 пинов, нам нужны верхние 6 (на фото видно не запаянные пины ниже штекера). Купить можно тут. Также можно прошивать МК через Arduino (Arduino as ISP, обсуждали в прошлом уроке). Схема для ATtiny85: Примечание: конденсатор нужен обязательно! Подключили. Что дальше? Дальше мы уже можем работать с фьюзами через программу avrdudeprog (обсуждали в прошлом уроке), выбрав в списке соответствующий программатор и в списке МК – соответствующий МК. Также через эту программу можно загрузить скомпилированный “бинарник” – файл прошивки. Но нас всё-таки интересует работа через Arduino IDE.
Ставим “ядро”
Для того, чтобы работать с Attiny через Arduino IDE, нам нужно установить так называемое ядро, или как оно называется в самой IDE – плату. Для ATmega328 у нас уже есть стандартное ядро, например плата Arduino NANO. Но тут есть нюанс: внутренние настройки “платы” NANO рассчитаны на работу с загрузчиком (bootloader) и с внешним тактированием 16 Мгц, то есть лучше не рисковать и установить ядро, которое поддерживает работу без загрузчика и с возможностью выбора частоты, чтобы иметь полный контроль над платой. Могу посоветовать вот эти:
Как установить ядро: идём в Файл/Настройки и вставляем ссылку в окно дополнительных ссылок для менеджера плат Далее идём в Инструменты/Плата/Менеджер плат… и находим нужное ядро. Устанавливаем После этого в списке плат появится новое семейство плат/МК на выбор. Я буду работать с ATtiny85 Нас интересует меню Clock – тактирование. ATtiny85 интересна тем, что может тактироваться от внутреннего источника на 8 МГц, но также может его “умножить” на 2 и получится 16 МГц, этот вариант называется 16 MHz (PLL). Это очень круто, потому что голый чип будет работать с почти максимальной скоростью, что делает его ничуть не хуже той же Arduino Nano. Выбираем программатор из списка (я буду прошивать при помощи USB ASP). Однократно выполним Инструменты/Записать загрузчик, чтобы применить настройки тактирования: Про остальные менюшки и варианты можно догадаться из их названия, или почтить подробное описание на GitHub по ссылкам выше.
Программирование
Итак, что же даёт нам ядро помимо выбора настроек МК? Можно программировать МК всё теми же командами, что и раньше! Мигать светодиодами через digitalWrite, измерять напряжение через analogRead и прочее прочее. Давайте напишем классический Blink:
PB3 – это номер пина, прямо как на распиновке. Всё! Осталось загрузить прошивку. Для этого нажимаем Скетч/Загрузить через программатор: Я подключил светодиод через резистор на 220 Ом и он мигает два раза в секунду, всё как написано. Что следует помнить при работе с тиньками: у них мало памяти, а все вот эти Ардуино-функции являются кошмаром индуса и занимают очень много места в памяти. Если тини85 ещё как-то переживёт такие издевательства и сможет уместить в себе вполне интересный проект из Ардуино-функций, то в тини13 уже сложно уместить что-то серьёзное. Напомню: всего 64 байта оперативной памяти и 1 кб флэша!
Важный момент по работе с ядрами для других МК, у которых больше 8 ног. Для сохранения удобства работы с IO функциями ядра (digital/analog/Read/Write) к пину можно обращаться как PIN_ + имя_ноги на распиновке, например подадим высокий сигнал на пин PC3: digitalWrite(PIN_PC3, HIGH); . Все остальные нюансы расписаны на странице ядер по ссылкам выше.
Я думаю вы поняли, что в целом работа с голыми МК не особо то и отличается от работы с обычной платой Arduino, и теперь можно переходить к сложным самоделкам на базе своей платы, в центре которой будет стоять микроконтроллер. Давайте поделюсь парой советов по минимальной обвязке.
“Загрузить через программатор”
Одноимённый пункт в меню “Скетч” в Arduino IDE загружает скетч через выбранный программатор, а также затирает загрузчик! Если в проекте было решено использовать загрузчик – не используйте загрузку через программатор после его прошивки!
Проект на голом МК
Зачем делать проект на своей плате и голом микроконтроллере?
- Конечно же размер, своя плата получится компактнее в большинстве случаев.
- Энергопотребление. Ни для кого не секрет, что всякие удобные штуки на плате ардуино потребляют огромный по меркам энергосбережения ток, и для автономного устройства лучше взять голый камушек.
- Работая с голым камнем мы можем выбрать микроконтроллер под свои задачи. Например для мелкого проекта необязательно брать 328 мегу, если с задачей справится аттини13, которая стоит 20 рублей.
- Возможная экономия. Ардуино нано стоит условно 170 рублей без доставки. Голая 328 мега на том же алиэкспресс – 100 рублей. Если брать десяток. В дорогущем российском чип и дип – 190 рублей. То есть если очень приспичит – можно и тут купить без особых потерь, потому что оригинальная нано стоит 3 тысячи рублей в том же ЧИДе.
- Удобство разводки платы. Микросхема в корпусе под поверхностный монтаж находится на одном слое и не мешает дорожкам на другом слое.
- Удобство монтажа. Даже если делать свою плату прототип лутом, то припаять на неё чип в 100 раз удобнее и быстрее, чем сверлить три десятка отверстий под ардуину, а потом их запаивать.
- Мелкосерийное производство готовых или почти готовых плат, для себя если нужно несколько или на продажу. На том же jlcpcb можно заказать изготовление плат с распайкой внимание smd компонентов. То есть ардуину вам никто не припаяет, а вот ту же 328 мегу припаяют за 100 рублей, тиньку 13ю – за 35 рублей, а чем больше партия – тем дешевле. К этому вопросу мы вернёмся ближе к концу этого урока.
Итак, я на личном опыте убедился, что МК способен работать вообще без какой-либо обвязки. Это был проект “Читалка файлов с SD карты” на базе ATmega328. Проект достаточно непростой: МК читал текстовые файлы с карты памяти microSD и выводил их на OLED дисплей. Никаких лишних компонентов на плате нет, МК тактируется от внутренних 8 МГц и всё работает отлично. Даже карта памяти подключена напрямую к МК =) Но в надёжных устройствах делать так не рекомендуется! Минимальная обвязка для МК и полезные советы:
Соединять все ноги питания (GND, VCC) максимально толстыми и короткими дорожками между собой:
- GND обычно делают полигоном на всю поверхность платы
- Я где то читал, что VCC рекомендуется соединять дорожками “внутри шелкографии”, то есть под МК. Оно и логично, так они получатся короче всего
Поставить керамический конденсатор ~100 нФ/nF (0.1 мкФ/uF) по питанию МК: между VCC и GND для сглаживания микропульсаций напряжения
- Располагать максимально близко к пинам питания МК
- Также параллельно ему можно поставить электролит (алюминиевый цилиндр) или танталовый конденсатор (компактный SMD чип) на 10-47 мкФ/uF, для сглаживания более серьёзных пульсаций напряжения. Особенно если МК питается от одного источника с другими потребителями, или используется некачественный источник питания.
Если нужна кнопка сброса (reset), подключаем её к RST и GND, т.е. кнопка должна подать на RST низкий сигнал. Внутри МК уже присутствует подтягивающий резистор на пин RST
- При наличии кнопки и дорожки от пина RST рекомендуется подтягивать пин к VCC резистором на 10 кОм, потому что внутренний подтягивающий резистор имеет довольно большое сопротивление и наведённые на дорожку помехи (она выступает в роли антенны) могут привести к сбросу МК
- Существуют генераторы со встроенными конденсаторами, например вот такие. На принципиальной схеме эти конденсаторы видно
- Не забываем в настройках платы или напрямую во фьюзах поставить внешнее тактирование. ВНИМАНИЕ! Если фьюзы настроены на внешнее тактирование и внешний генератор не подключен к пинам – вы не сможете прошить МК даже при помощи ISP программатора!
Если нужна удобная прошивка по ISP – выводим штекер для подключения. Вот тут можно открыть мой модуль такого штекера для EasyEDA
Если нужна прошивка по UART – выводим RX, TX, GND. Для автоматического сброса МК перед началом прошивки у USB-TTL преобразователя должен быть выведен пин DTR. Его подключаем к RST через конденсатор на 0.1 мкФ. Также подключаем, VCC если нужно запитать МК от UART преобразователя. Прошивать можно любым USB-TTL преобразователем с выходом DTR. В показанной схеме подключение к преобразователю будет RX->TX, TX->RX!
Я думаю теперь вы готовы к созданию проекта на своей плате!
Перенос МК с Arduino на свою плату
Напомню, что источник тактирования играет важную роль при загрузке прошивки. Микроконтроллер может быть настроен на тактирование от внутреннего генератора на 8 МГц, либо на тактирование от внешнего.
- При работе от внутреннего генератора МК запускается и работает просто при подаче напряжения, готов прошиваться как через UART (при наличии загрузчика), так и через ISP.
- При настройке на работу от внешнего генератора МК сможет работать и прошиваться только при подключении внешнего генератора. То есть если генератор физически не подключен к МК – его нельзя будет прошить даже через ISP.
Это же касается переноса микроконтроллера с платы Ардуино на свою плату: на Ардуино стоит кварц. Если на вашей плате есть кварц для МК – всё будет работать сразу. Если на вашей плате нет кварца – перепаянный с Ардуино МК не будет работать и прошиваться. Для переноса МК с платы Ардуино на свою плату (без кварца) нужно настроить МК на внутреннее тактирование, об этом мы говорили в прошлом уроке. Для этого нужно подключить к плате программатор (USB-ASP или Arduino as ISP) и прошить фьюзы
- Вручную через Avrdudeprog, выставив нужное во встроенном калькуляторе фьюзов.
- Вручную через Arduino IDE, сконфигурировав и выставив фьюз-байт вручную в boards.txt.
- Автоматически через конфигурацию ядра. Для Arduino Nano это может быть GyverCore или miniCore, там в меню платы есть пункт Clock -> Internal 8 MHz. В Arduino IDE жмём “Записать загрузчик” и прошиваются новые фьюзы, после чего можно выпаивать МК и запускать/прошивать его уже без кварца.
Видео
Популярнейшая программа AVRDUDE_PROG 3.3 предназначена для программирования микроконтроллеров AVR ATmega и ATtiny:
1. Возможность самостоятельного добавления программаторов, настройки скорости программирования и т.п;
2. Возможность самостоятельного добавления МК;
3. Редактирование и настройка отображения Fuses битов;
4. Выбор инверсных или прямых Fuses битов;
5. Окна вывода значений Fuses битов в HEX формате;
6. Сохранение настроек программирования при закрытии программы, т.е. при последующем открытии все настройки восстановятся.
В прошлой статье я рассказал о простом (но очень хорошем) программаторе для прошивки микроконтроллеров AVR ATmega и ATtiny - USBASP AVR программатор. В той же статье я указал какие программы поддерживают данный программатор. Наиболее лучшей из них, на мой взгляд, является программа AVRDUDE_PROG автором которой является Сергей Боднар. О ней мы сегодня и поговорим.
Последняя версия программы AVRDUDE_PROG - 3.3 , из программы всегда можно попасть на сайт разработчика и скачать новые версии.
Программа очень проста в использовании, имеет приятный интуитивно понятный интерфейс на русском языке, поддерживает очень много различных программаторов и практически все микроконтроллеры ATmega и ATtiny. Немаловажно и то, что в программу можно самому вносить изменения - добавлять программаторы, микроконтроллеры, изменять некоторые настройки (все подробно расписано на сайте разработчика).
Программа не требует установки на компьютер, необходимо только разархивировать скачанный файл и можно сразу приступать к работе, поддерживаются все разновидности Windows - от ХР до 10.
Окно запущенной программы AVRDUDE_PROG:
Что есть что:
1:
- окно выбора типа микроконтроллера
- кнопка "Стереть все" - очищает все внутренности микроконтроллера
2:
- чтение калибровочных ячеек микроконтроллера
В данном примере показаны четыре калибровочные ячейки микроконтроллера ATmega8 для внутреннего RC генератора:
ВВ - для частоты 1 МГц (частота по умолчанию)
BD - для частоты 2 МГц
В2 - для частоты 4 МГц
В2 - для частоты 8 МГц
При тактировании микроконтроллера ATmega8 частотой 1 МГц от внутреннего RC генератора (по умолчанию) содержимое первой калибровочной ячейки автоматически учитывается микроконтроллером для подстройки внутреннего генератора. При других частотах - содержимое соответствующей калибровочной ячейки необходимо вручную вводить в регистр микроконтроллера для получения более стабильной частоты (если такое нужно). К примеру, в конструкции "Трехканальный термостат, термоморегулятор, таймер. ", которая работает с тактовой частотой 8 МГц от встроенного генератора с внутренней RC цепочкой, требуется перед прошивкой ЕЕPROM памяти записать в определенную ячейку HEX файла значение калибровочной ячейки для частоты 8 МГц.
3:
- выбор HEX файла для прошивки Flash памяти микроконтроллера, сверка записанного файла с оригиналом, чтение данных из памяти
4:
- выбор HEX или EEP файла для прошивки EEPROM памяти микроконтроллера, сверка и чтение
5:
- выбор программатора (по умолчанию - USBASP)
Если вы будете пользоваться программой скачанной с сайта разработчика то там, по умолчанию (первым в списке), будет идти "USBASP", у меня на картинке 4 разновидности USBASP программатора:
- Usbasp_1M
- Usbasp_4M
- Usbasp_8M
- Usbasp-32кГц
Дело в том, что программатор USBASP позволяет записывать файлы прошивки с двумя скоростями:
- для МК с тактовой частотой 1,5 МГц и выше (без перемычки на J3) - скорость записи 375 кГц
- для МК с тактовой частотой менее 1,5 МГц (с перемычкой на J3) - скорость записи 5 кГц
Для нормальной записи прошивки в МК требуется скорость в 4 раза меньше, чем установленная тактовая частота.
Для прошивки нового МК, у которого по умолчанию тактовая частота 1 МГц, необходимо устанавливать в программаторе перемычку на разъем J3, а сама скорость - 5 кГц, в некоторых случаях начинает нервировать.
Для того, чтобы не портить нервы, не дергаться с перемычкой, я программно установил 4 варианта скорости записи, которые выбираются в зависимости от текущей тактовой частоты МК:
- Usbasp_1M - скорость 187,5 кгЦ, для частот 1-4 МГц
- Usbasp_4M - скорость 375 кГц, для частот 4-8 МГц
- Usbasp_8M - скорость 750 кГц, для частот 8 и более МГц
- Usbasp-32кГц - скорость 4 кГц, для часового кварца
Все эти установки прописаны в самом начале файла "programm.ini" где скорость записи зависит от ключа "-В" и числа после него:
6:
- выбор отображения FUSE битов - прямой (как в UniProf и даташитах) и инверсный (как в PonyProg)
7:
- окно вывода служебной информации о выполняемых и выполненных операциях
Внешний вид окна "FUSES" программы AVRDUDE_PROG:
Тут все просто - расставляем в нужном виде галочки или убираем их и программируем FUSE биты. Если что-то намудрили - нажатие кнопки "По умолчанию" приведет установки FUSE битов в значения "по умолчанию" (сами FUSE биты в МК не изменятся!). Очень внимательно устанавливайте FUSE биты - ошибка может привести к отказу микроконтроллера.
Хочу обратить ваше внимание на самую распространенную ошибку при установки FUSE битов. В большинстве случаев мы изменяем только биты ответственные за выбор источника тактирования и частоту тактирования, к примеру для ATmega8 это: CKSEL0-CKSEL3. По умолчанию у ATMEGA8 тактовая частота 1 МГц от внутреннего генератора - сброшен бит CKSEL0 (стоит галочка). Нам, допустим, нужно установить тактовую частоту 8 МГц от внутреннего генератора - сбросить бит CKSEL2 (поставить галочку), что мы и делаем. Но при этом ЗАБЫВАЕМ УСТАНОВИТЬ БИТ CKSEL0 (убрать галочку)!. В результате, программируя FUSE биты, мы получаем совершенно иной результат - программа не работает, а МК не реагирует на программатор. Забыв сбросить бит CKSEL0 мы получаем другой источник тактирования МК - внешний RC. Отчаиваться не надо, главное разобраться в том, что вы получили в результате. В нашем примере - внешний RC, смотрим даташит, подсоединяем к соответствующим входам МК сопротивление и конденсатор (по схеме из даташита и с нужными номиналами) и восстанавливаем контроль над МК.
Внешний вид окна "Автоматическое программирование" AVRDUDE_PROG:
Здесь можно задать первоначальные настройки для разных случаев использования программы.
Как видите - программа AVRDUDE_PROG проста и понятна в использовании, за что и скажем спасибо Сергею Боднару!
Очень многие люди, начиная свое знакомство с микроконтроллерами, испытывают трудности с инструментом для их программирования. И это реально может охладить творческий пыл. Да что там говорить, я и сам после сборки своего первого Arduino долго пытался «вдохнуть» жизнь в «железяку». Здесь очень хорошо описаны мучения. Конечно, самый простой вариант «5 проводков» — это здорово! Но, в моем окружении (как я понимаю, и у многих) дома, на работе в компах и ноутбуках напрочь отсутствует LPT-порт! Да и COM-порт становиться достаточно редкой «экзотикой». Что же делать? Естественно, на сцене появляется вездесущий USB.
Да, готовый программатор для AVR легко можно купить. Но цена на них неадекватно завышена (у нас в г. Минске, на радиорынке что-то около 30..50 у.е.). Как говорил Киса Воробьянинов — «ОДНАКО. ». Хорошо, что есть братья-китайцы, с нормальными ценами. Только придется прилично подождать. Да и судя по последним тенденциям, ОГРОМНЫЙ поток посылок из Китая ОЧЕНЬ заинтересовал государственные органы… И боюсь, что в скором времени превратится в жалкий ручеек 🙁
Да и к тому же, как говорит мой хороший друг: «Это не наш метод. Мы сделаем сами, пусть по выходу окажется и в два раза дороже!».
Спешу обрадовать, что затраты на изготовление — мизерные. Самые дорогие компоненты — это Attiny2313 (примерно 2$) и разъем USB.
Итак, приступим. Нам нужен программатор который максимально прост и относительно дешев, подключается по USB, и при этом, поддерживается всеми современными ОС (LINUX, WINDOWS, MAC OSX) через программу avrdude. Изначально я рассматривал для повторения самый «примитивный» вариант. Дальнейшие поиски меня привели к — USBTinyISP. Стремясь к компактности, я выбрал для «клонирования» версию 1 (без буферной микросхемы). Ниже схема программатора.
Схема осталось оригинальной, за исключением перемычки для программирования (мне эта «фишка» абсолютно не нужна). А вот печатку я переделал под свои нужды.
(Номиналы деталей можно увидеть в SprintLayout при наведении курсора на нужный элемент)
Естественно, ЛУТ.
После ЛУТа
После травления:
Мой любимый сплав Розе
Паяем SMD элементы
Теперь перемычки и оставшиеся элементы
Готово!
Небольшое лирическое отступление. Давным давно,в 2000-х годах у меня один приятель жаловался со сложностями в поиске НОРМАЛЬНОЙ работы (он работал водителем). Дело в том, что у него был на тот момент очень маленький стаж вождения :). Чувствуете подвох? На нормальную работу без стажа не берут. Стажа нет, потому что на работу не берут…. И так замкнутый круг.
Так и в нашем случае, для изготовления программатора нужно запрограммировать контроллер….т.е. нужен программатор. Слава богу, это нужно проделать всего один раз. Выходов несколько:
— берем пиво и навещаем приятеля с программатором 🙂
— ищем компьютер с LPT-портом и паяем «5-проводков»
— нету LPT, но есть COM? Прекрасно, делаем программатор Громова!
— есть люди, предлагающие свои услуги по прошивке МК за небольшую «денюжку»
— другие варианты
У меня ситуация более, чем шикарная — у меня уже был программатор AVR910. Так, что вся процедура заняла не более минуты. «Прошиваем» МК с помощью AVRDUDE. (Все необходимое для этого сложено в архив и находиться в каталоге Firmware).
Кому менее повезло и пришлось прибегнуть к «5 проводкам» (кстати, официально он называется DAPA):
вот, вариант когда программатор USBTinyISP используется для прошивки себе подобного, а-ля «овечка Долли»:
Почему вариант с AVRDUDE более предпочтителен для начинающих? При выполнении вышеприведенных команд сразу же прошиваются и нужные фьюзы, т.е. ухера.. «убить» микроконтроллер достаточно сложно.
Проверяем, что все хорошо, заглянув в список оборудования:
Если Вам удалось увидеть такую же картинку, то поздравляю! Все готово. У Вас теперь есть USB программатор для AVR.
Не знаю как Вы, но мне ОЧЕНЬ захотелось сразу же опробовать изделие в действии. А давайте прошьем бутлодер в Ардуино.
Запускаем Arduino IDE, [Сервис]->[Программатор]->[USBTinyISP]
Жмем [Сервис]->[Записать загрузчик]
Буквально проходит 7 секунд, мерцание красного светодиода на программаторе… и ОПА!! Все готово. Получите, распишитесь 🙂
А теперь небольшой БОНУС, расширяющий область применения нашего программатора. А именно, маленький адаптер для DIP корпусов наиболее распространеных AVR контроллеров. Мне приходилось иметь дело с ATTiny13/45 — 8 ножек, Attiny 2313 (тут смайлик)- 20 ножек, Atmega 8/48/168 — 28 ножек. За основу берем схему соединения колодок (схема откуда-то из инета):
Для простоты я не использовал сигналы тактирования XT1. (Для всяких неприятных случаев, у меня есть собранный FUSE Doctor :)) И еще, я не ставил на адаптер колодку под Atmega16 (DIP-40). Пока у меня не возникало необходимости в программировании таких контроллеров.
Ну, если осилили изготовление программатора, то сделать такой адаптер — вообще плевое дело!
Кстати, некоторые неиспользуемые контакты я просто-напросто удалил, во избежание ненужного контакта 🙂
Приклеиваем (для удобства) соответствующие надписи:
И вот, все в сборе, программатор и адаптер! Пользуйтесь на здоровье.
Весь материал (печатку, прошивку,драйвера и фото) для повторения можно забрать одним архивом тут.
Итак, имеем ATtiny2313, LPT порт (обязательно железный - никакие USB-2-LPT не работают), 6 проводков (длина не более 10-15см), паяльник.
Желательно иметь разъём DB-25M (папа). С ним удобней подключать, но можно обойтись и без него.
Припаиваем проводки к выводам 1, 10, 17, 18, 19, 20 микроконтроллера. Получаем нечто вроде:
Правда тут не показаны проводки для питания. На следующей картинке они уже есть
Далее если есть разъём DB-25M, то припаиваем проводки к нему в соответствии с таблицей. Если нет, то просто втыкаем проводки в разъём на компьютере (не забывая про таблицу. ).
Я делал без разъёма (в наличии были тока мамы. ), и вот что получилось:
Правда у меня LPT порт вынесен на стол с помощью кабеля длиной 1,5 метра. Но при этом кабель должен быть экранированный, иначе ничего не получится.
Схема сего чуда примерно вот такая:
Ну если быть совсем честным, то желательно собрать "правильный" программатор. И потом будет проще и порт целее. Я пользую STK200/300, схему которого можно найти тут
Далее пользуем программу PonyProg2000.
На том же сайте Вы найдёте и схемы программаторов и саму программу. На всякий случай повторю архив у себя - вот.
После запуска программы она "заржет. " как настоящий пони. Чтобы этого больше не слышать в появившемся окне ставим галочку "Disable sound" . Жмём "ОК". Выскакивает окошко:
Которое говорит, что нужно откалибровать программу. Компы бывают же разные и медленные и шустрые.
Жмём "ОК". Выскакивает ещё одно окошко:
А это нам говорит, что нужно настроить интерфейс (какой программатор и куда подключен.).
Итак заходим в меню: Setup -> Calibration . В появившемся окошке:
жмём "YES" . Проходит пара секунд и программа говорит "Calibration OK" .
Далее заходим в меню: Setup -> Interface Setup . В появившемся окошке настраиваем как у показано на рисунке.
Далее заходим в меню: Command -> Program Options . В появившемся окошке настраиваем как у показано на рисунке.
Всё готово к программированию.
Итак, последовательность действий:
1. Выбираем из списка "AVR micro"
2. Из другого списка выбираем "ATtiny2313"
3. Загружаем файл прошивки (File -> Open Device File), выбираем нужный файл, например "rm-1_full.hex".
4. Жмём кнопочку "Launch program cycle". Когда программирование завершится прога скажет "Program successful"
5. Ну и напоследок надо запрограммировать так называемые Фьюзы (fuses). Для этого жмём кнопочку "Security and Configuration Bits". В появившемся окне жмём "Read", потом выставляем галочки СТРОГО так, как показано на рисунке, и жмём "Write".
ВНИМАНИЕ! Если Вы не знаете, что означает тот или иной конфигурационный бит, то не трогайте его.
Это соответствует следующей конфигурации:
DWEN | 1 | debugWIRE - Disable |
EESAVE | 1 | EEPROM memory is preserved through the Chip Erase - OFF |
WDTON | 1 | Watchdog Timer - OFF |
BODLEVEL | 101 | Brown-out Detection level = 2,7V |
CKDIV8 | 1 | Divide clock by 8 - DISABLED |
CKOUT | 1 | Output Clock on CKOUT pin - DISABLED |
SUT | 10 | Start-up time: 14CK + 65 ms (Slowly rising power) |
CKSEL | 0100 | Internal Calibrated RC Oscillator 8MHz |
Ну вот теперь у нас готовый к работе контроллер!
а вот у меня вопросик.
если сначала собрать полностью устройство (например термостат) с "чистым" flash,
то можно ли подключить программатор прямо к устройству и запрограммировать?
имеенно так и делаю, только надо иметь ввиду, если к выводам контроллера подключены светодиоды, или другая нагрузка, то её должен потянуть программатор!
Valentin_N писал(а): если да, то предполагаю последовательность действий:
1) подключаем программатор
2) запускаем PonyProg
3) подаем питание на ATtiny2313
4) программируем
1-3 пункты можно выполнять в любой последовательности, главное чтобы в момент программирования на контроллере было питание и он был подключен к программатору.
В даташите на ATTINY2313 написано, что на вход XTAL1 нужно подать не менее 6 импульсов чтоб ввести контроллер в режим програмирования.
Доброе время суток!
Помогите мне с одной (возможно, и с несколькими, еще не знаю сам) проблемами.
Делаю вот такие действия, надеюсь в комментариях не нуждается. Картинки кликабельни.
* Разводка такая, как у Вас на єтой картинке.
И потом наблюдаю при программировании:
Подскажите, в чем проблема, а еще лучше, как ее устранить.
Заранее спасибо.
З.И. извините, что пишу уркаинскими символами - какой-то глюк.
нда. фото очень прояснили дело - ничего не видно.
перемычки есть?
питание?
Раз вы уже завязвлись с платой, то сделали бы нормальный программатор с буферное микросхемой.
Извините за качество - под рукой только моб.
перемички есть: (2-12) (3-11)
питание подаю от блока питания.
возможно єто из-за того, что у меня установлен принтер на LPT. (где-то вичитал)
я не так с платой хотел поковиряться как испробовать новую "травилку")))
здравствуйте
у меня такая проблема
Заблокировался ATTINY2313 как можно разблокироват мк без спец программатора
спасибо за ответ
Что значит заблокировался? лок биты? или биты отвечающие за источник тактовых импульсов? Подробнее пожалуйста.
лок биты. и теперь не могу подключить не с rs232 и не с lpt программатором.
не один программатор не видит мк.
Для современных (здесь я не имею ввиду ПЛИС) PIC’ов и в AVR защищенность так высока, что вскрытие если и производится, то путем разборки микросхемы с соответствующими знаниями по архитектуре кристалла. Иногда быстрей и дешевле сделать ре инжинеренг системы, чем пытаться вскрыть прошивку. Или как вариант дать деньги, которые планируются на вскрытие, некому лицу, который имеет доступ к прошивки, а еще лучше к исподникам. Потому что дизасм hexов в том же IDA тоже имеет свои заморочки. А как дело идет дальше разговоров - начинаются отмазки. Так что не беспокойтесь - защиты современных кристаллов достаточно.
Можно БЕСТОЛКОВЫЙ ВОПРОС ЗАДАТЬ. А по этому же принципу какие ещё контроллеры можно прошивать? Я имею ввиду принцип 6 проводов.
все контроллеры Атмела. С другими не работал - не знаю. В ПИКах - там вроде только через COM-порт, соответственно преобразователь уровней нужен.
я когда только начинал, сделал программатор известный как ByteBlaster, и прямо в плату впаял панельку под тини 2313. http://radiokot.ru/start/mcu_fpga/avr/03/ вот статья эта . Но проблемма - ни с какой программой нормальной не конектится, только со своей программкой , для которой *.bat файлы писать нада под контроллеры и биты настраивать. Не очень удобно. Нада на "5 проводков" переходить
Мне нужно прошить МК на кварц 10Mhz. Фьюзы виставил как надо. После того Комп не видит МК. Как прошить МК на кварц 10Mhz с помощью вашей схеми??
Help! Установил PonyProg 2000, собрал адаптер на м/сх М74НС244В.
Схема правильно собрана, питание +4,94v, но на програмирование ругается "Devise missing or unknowt devise(-24)".
Подскажите где искать ошибку!
Читайте также: