Программатор для attiny2313 своими руками

Добавил пользователь Skiper
Обновлено: 10.09.2024

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

Фактически это AVR-910 популярной схемы Prottoss-a. USB программатор надежен и имеет в своем арсенале функцию, позволяющая восстанавливать микроконтроллеры с неверно установленными фьюзами.

Следует отметить, что для прошивки самого микроконтроллера Atmega8 программатора понадобится простой LPT-программатор.

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

Теперь необходимо занести программу в память Atmega8. В качестве программного обеспечения можно применить Uniprof или Code Vision AVR. Перед программированием необходимо выставить следующие фьюзы (для Uniprof):

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

Поговорим о программном обеспечении которое необходимо для работы с данным программатором. Он поддерживает такие оболочки как: AVR Prog, AVR Studio, ChipBlasterAVR и, конечно же, Code Vision AVR.

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

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

Список необходимых деталей:

  • Atmega8 — 1 шт.
  • Кварц 12МГц — 1 шт.
  • Диод 1N4007 – 2 шт.
  • Светодиод — 3 шт.
  • Резисторы: 68 Ом — 2 шт., 330 Ом — 8 шт., 1,5 Ом — 1 шт., 100 Ом -1 шт., 1,5 кОм -1 шт., 10 кОм -1 шт., 1 мОм -1 шт.
  • Конденсаторы: 0,1мк — 3 шт., 22мк х 10В — 1 шт., 22p — 2 шт.

Похожие записи:


редактор

64 комментария

Обработал протокол USB на обычтном AVR через внешние прерывания?! Браво!

На программе Code Vision AVR какие фюзи поставит

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

LPT программатор подключите к ISP разъему. Не забудьте переключатель SA2 перевести в положение МОД

Можно изменить резисторы R3, R6, R9-R15 330Ом на другую?
И конденсаторов С1, С4, С6 0,1Мкф?

Доброго времени суток! Автор, спасибо за статью, программатор спаял — работает штатно. К делу подошел с размахом и сделал сразу три платы: программатор, плату переходников и еще одну. Вопрос, для чего третья плата? И если, есть, принципиальная схема.

Извиняюсь за драйвера не ту папку глянул. Всё равно не обновляются.

Добрый вечер.
Объясните почему после прошивки атмеги 8 и установки Fuse как показано на фотке, программатор перестает видеть контроллер вообще, все проги выдают ошибку, что не могут связаться с контроллером, что я сделал не так.

Все дело в том, что после прошивки, микроконтроллер начинает работать от внешнего задающего генератора (кварца). Подключите кварц (можно на 8МГц) на выводы 9 и 10.

Спасибо, заработало)) Подскажите с какими программами avr910 работает?

Я использую Khazama AVR Programmer

В Usbasp (китайский) применен кварц 12 мгц, можно его заменить на кварц 8мгц?

Здравствуйте!
В программаторе ATmega8A-PU, будет работать?
Программатор поддерживает ATmega328P-PU ?

Подскажите, как в Proteus поставить ISP.

спасибо большой уважаемый админ

день добрый ребят размер печатной платы какой

ширина 80мм, высота 55мм

Добрый вечер, спасибо за статью.
Подскажите можно ли в место Atmega8
использовать Atmega328p-pu

можно ли вместо LTP программатора прошить COM-программатором Громова?

Можно ли им прошить Pic 18f 2685?

Подскажите, в чем может быть проблема, все сделал правильно, перепроверил раз 10. При подключении 3 раза мигают лампочки чтения и записи и на компе определяется как неизвестное устройство с ошибкой дескриптора. Кстати, я так понял нужна Атмега8 16pu, у меня Atmega8A-pu, это ни на что не влияет?

Скажите люди,зачем в списке деталей присутствует резистор 1.5 Ом,если в схеме его нет? И Рез. 330 Ом там 9 а не 8 судя по схеме.

Вроде все на месте:
Резистор 330 Ом (R3,R5,R8,R9,R11,R12,R13,R14,R15).
Резистор на плате указан 1,5к (R4).

В списке деталей и 1,5 Ом, и 1,5кОм. Как раз 1,5 Ом на схеме нет, а вот 330 Ом на схеме 9 штук, а в списке 8. Детали покупал по списку — как раз 1,5 Ом лишний, а 330 не хватило (

В архиве есть схемка переходника,на ней есть кондеры и кварц. Но какие?? Кто подскажет?

Кварц поставьте на 8 Мгц, конденсаторы 15…22 пФ (хотя можно и без них)

Добрый вечер.
Объясните почему после прошивки атмеги 8 и установки Fuse как показано на фотке, программатор перестает видеть контроллер вообще, все проги выдают ошибку, что не могут связаться с контроллером, что я сделал не так.

А какие меги он может шить, конкретного списка нет?Буду очень признателен.

Какой тип программатора выбирать в Codevision, com порт порт смотреть в системе?

ПРОШИВАЙТЕ ПРОШИВКУ АВРДОПЕР ДЛЯ АВР 910, (перезагруска)

собрал данный программатор на SMD компонентах(ток микруха в DIP-e),как и полагается фьюзы в первой микрухе не так выставил-в итоге залочил ее,вторую прошил корректно,ничего не греется,светодиоды горят только в момент прошивки,на LED-меандр 1MHz…теперь еще один программатор в коллекции….в общем все мучения того стоили.
Рекомендую к повторению.

подскажите новичку!! тока без умничания) куда подключается разъем ISP? и зачем его подключили к простому LPT-программатору.

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

Характеристики ATtiny2313

Начнем с характеристик. Первое, и самое очевидное отличие от микроконтроллеров, которые я рассматривал до этого, это число ножек. У ATtiny2313 их 20. Т.е. нам потенциально доступно 18 портов ввода-вывода. По сравнению с максимально 6-ю возможными у ATtiny13/25/45/85.

Данный микроконтроллер обладает 2 КБ флэш памяти, 128 байт оперативной памяти SRAM и таким же количеством энергонезависимой памяти EEPROM .

Кстати, у этого микроконтроллера есть брат-близнец, ATtiny4313 с которым они во всем одинаковы, кроме того, что ATtiny4313 обладает вдвое большим объемом всех видов памяти. 4КБ флэш памяти, 256 байт EEPROM и 256 байт SRAM. Это к тому, что если не хватит ресурсов памяти для работы вашего скетча на ATtiny 2313, можно его заменить на ATtiny 4313 и не придется менять код или устанавливать другую библиотеку.

ATtiny2313 располагает двумя таймерами – 8 битным и 16 битным , встроенным аналоговым компаратором, четырьмя ШИМ каналами и аппаратным UART . Это единственный из тех микроконтроллеров, семейства ATtiny, что я рассматривал ранее в своих статьях, содержит аппаратный UART. Т.е. нам доступен обмен данных с другим устройством по привычной двухпроводной схеме RX-TX как на Arduino UNO. И в том числе загрузка скетчей через USB-TTL конвертер.

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

Важной особенностью данного микроконтроллера является его цена .

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

Характеристики мы уже обсуждали, а последняя строка – это примерная цена на площадке AliExpress. Цены на AVR микроконтроллеры за последний год сильно увеличились, но соотношение цен сталось примерно одинаковым - ATtiny2313 не намного превышает по стоимости ATtiny13. Временами даже бывает дешевле.

Распиновка микроконтроллера ATtiny2313

Распиновка микроконтроллера ATtiny2313 выглядит следующим образом:

Первая ножка связана с Reset . Она же может превратится в 17 пин среды Arduino IDE если мы изменим фьюзы. Как это делается я рассказывал в отдельной статье ( Что такое фьюзы? Как работать с фьюзами на микроконтроллерах AVR ).

Далее у нас идут две ножки поддерживающие аппаратный UART . Т.е. RX и TX . Они занимают те же нулевой и первый пин, что и у Arduino UNO.

4-я и 5-я ножки служат для подключения внешнего источника тактирования (например, кварцевого резонатора).

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

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

Ножки, обозначенные как 17, 18 и 19 мы будем использовать для прошивки микроконтроллера, используя SPI интерфейс которые используются при прошивке и так же используются для обмена данных по I2C интерфейсу.

Ниже идут два таймера Timer0 – 8 битный и Timer1 – 16 битный .

У модели 2313A все 18 цифровых пинов поддерживают программное прерывание. У модели 2313 без буквы A, программное прерывание доступно на 8 пинах.

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

Как и в случае с другими AVR микроконтроллерами, пожалуй, кроме ATtiny10, для прошивки микроконтроллера ATtiny2313 мы можем использовать Arduino UNO в качестве ISP-программатора.

Так же можно использовать другие программаторы, такие как USBasp, AVRISP mkII и другие, поддерживающие SPI интерфейс.


AVR - Сравнительно мощные и популярные контроллеры!
Прошиваются они элементарно, с помощью специального программатора и программы!

Рассмотрим простой программатор для контроллеров этого семейства!

Смотрим на схему, как видите, всё еще проще чем с PIC контроллерами!
Под схемой показаны примеры расположения выводов двух разных контроллеров семейства AVR!


Рассмотрим печатную плату:

Две панельки на плате предназначены ТОЛЬКО для контроллеров Attiny2313 и Attiny15L соответственно.
Все остальные контроллеры подключаются по ISP.

Программа для программирования:


В настройке программа не нуждается, всё что нужно это выбрать порт, к которому подключен программатор!
Если всё спаяно и настроено правильно - то если в программатор вставить контроллер и подключить к компьютеру - то программа должна определить тип контроллера!


Фото готовой платы:

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

В литературе уже опубликовано большое количество разнообразных схем, как простых, так и сложных, подключаемых к различным портам компьютера (LPT, COM, USB) 3. Из USB-программаторов наибольшее распространение получили USBasp [4] и AVR910 [5]. Они относительно просты, миниатюрны, поддерживают большую номенклатуру контроллеров.

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



За основу был взят проект CDC-SPI японского автора Osamu Tamura [6]. В отличие от оригинала, напряжение питания программатора и программируемого микроконтроллера составляет не 3,3 В, а 5 В, что позволяет расширить ряд программируемых контроллеров. Кроме того, были внесены некоторые изменения в программу прошивки контроллера.

Ядром программатора является микроконтроллер DD1 ATTiny45. Изюминкой схемы является то, что в качестве тактового генератора контроллера используется генератор системы ФАПЧ частотой 16,5 МГц, что позволило отказаться от применения уже привычного в данных схемах внешнего кварцевого резонатора. Конденсатор С1 снижает пульсации по питанию. Резисторы R2, R3 токоограничительные (величиной 68 – 82 Ом), работают в паре со стабилитронами VD1, VD2 и служат для защиты компьютера от высокого напряжения (по стандарту не более 3,6 В) Они могут быть заменены отечественными КС136 либо импортными с маркировкой 3V3, 3V6. Резистор R1 указывает компьютеру, что подключенное устройство работает на скорости LS, его номинал может изменяться в диапазоне 1,5 – 2,2 кОм. Резисторы R4-R7 служат для защиты выходов контроллера от короткого замыкания и согласования логических уровней в случае раздельного питания контроллера и программатора, их величина может изменяться от 270 до 560 Ом. Для соединения программатора и компьютера используется пятипиновое гнездо mini-USB (XS1). Это сделано для уменьшения размеров печатной платы, а также исходя из того, что кабель mini-USB имеется практически у каждого. Подключение программатора к программируемому контроллеру осуществляется при помощи 10-контактного разъема XS2, распиновка которого соответствует стандарту STK200/300 (рис. 2). Можно использовать другую стандартную распиновку либо придумать свою, но тогда придется изменить печатную плату.



Программатор собран на плате из одностороннего фольгированного стеклотекстолита размером 14х28 мм. Внешний вид дорожек платы представлен на рис. 3, а расположение деталей на ней – на рис. 4. При этом синим цветом обозначены детали, устанавливаемые со стороны монтажа, а зеленым – с верхней стороны платы. Файл с печатной платой в формате программы DipTrace можно скачать здесь.



Рисунок 3 – Разводка печатной платы



Внешний вид программатора со стороны монтажа и общий вид программатора представлены на рисунках 5 и 6 соответственно.



Рисунок 5 – Внешний вид программатора со стороны монтажа



Для тех, кому сложно достать не слишком пока распространенный контроллер ATTiny45, автором была разработана схема на более широко используемом контроллере ATTiny2313 (рис. 7)



Плата также выполнена из одностороннего фольгированного стеклотекстолита размером 30х50 мм. Внешний вид дорожек платы представлен на рис. 8, а расположение деталей на ней – на рис. 9. Файл с печатной платой в формате программы DipTrace можно скачать здесь.





Рисунок 9 – Расположение деталей на плате программатора на ATTiny2313

Внешний вид программатора со стороны монтажа и общий вид программатора представлены на рисунках 10 и 11 соответственно.



Рисунок 10 – Внешний вид программатора со стороны монтажа



Рисунок 11 – Общий вид программатора

Теперь что касается программной части. Файлы прошивки контроллера можно скачать вот тут: tiny45.hex и tiny2313.hex. После программирования flash-памяти контроллера для ATTiny45 необходимо установить следующие конфигурационные биты: CKSEL3, CKSEL2, CKSEL1 (тактирование от схемы ФАПЧ), BODLEVEL0 (детектор пониженного напряжения на 1,8 В), RSTDSBL (поскольку количество выводов микроконтроллера невелико, то вывод RESET используется в качестве обычного порта ввода-вывода). Для ATTiny2313 необходимо запрограммировать только бит BODLEVEL0, а остальные сбросить (естественно, SPIEN должен остаться установленным) (в журнале напечатали с ошибкой).

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

Кроме того, поскольку прошивка контроллера ведется через интерфейс внутрисхемного программирования SPI, то возможно (и даже желательно для ATTiny45) прошивать его непосредственно в устройстве уже после распайки.

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

При программировании контроллера ATTiny45 все необходимые выводы подведены к разъему XS2, в этом случае схема подключения будет иметь следующий вид (рис. 12). Поскольку обе части разъемов XS2 и XS3 представляют собой гнезда, то можно либо спаять кабель со штекерами с обеих сторон, либо выполнить соединения проводками, втыкая их в соответствующие контакты гнезд. На разъеме внешнего программатора не проставлены номера выводов – они могу быть различными для разных типов программаторов, и их следует уточнить в документации для каждого конкретного программатора.

При программировании же контроллера ATTiny2313 сигнал сброса, подводимый к выводу RESET, формируется линией РВ0 (см. рис. 7). В этом случае сигнал сброса от внешнего программатора необходимо подключать непосредственно к выводу RESET контроллера ATTiny2313 (вывод 1), подпаяв к нему дополнительный проводок (рис. 13). Можно обойтись и вовсе без него, но тогда необходимо перед подачей питания на контроллер замкнуть вывод RESET на землю, однако в данном случае возможны сбои, и этот вариант не рекомендуется для повторения.





Еще одно замечание. COM- и LPT-программаторы обычно не имеют вывода питания, поэтому питание платы с контроллером может осуществляться от шины USB через разъем XS1. В этом случае перемычка VCC-VCC не требуется.

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

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

Для проверки работоспособности схемы на микроконтроллере ATTiny45 можно поступить следующим образом: в flash-память контроллера записать файл tiny45.hex, установить все конфигурационные биты кроме RSTDISBL, собрать схему, подключить ее к USB-порту компьютера. Если все сделано верно, то появится надпись о том, что обнаружено новое устройство MICROPROG (рис. 14) и система попросит установить драйвера на него.







Для пользователей других версий Windows необходимо выбрать папку с соответствующим названием (\vista64, \xpvista7). Следует заметить, что драйвера взяты из оригинальной конструкции Osamu Tamura [7].
После установки драйверов в системе появится новый виртуальный COM-порт, в чем можно убедиться, зайдя в диспетчер устройств (рис. 17)



Если посмотреть свойства данного порта, то можно видеть, что это как раз наш программатор MICROPROG (рис. 18)



Итак, мы убедились, что аппаратная часть программатора исправна. Теперь можно смело устанавливать конфигурационный бит RSTDISBL. Более никаких настроек для работы с программатором на контроллере ATTiny45 не требуется. Если монтаж выполнен правильно, то устройство начинает работать сразу же. Все вышеописанные действия в равной степени относятся и к программатору, собранном на базе ATTiny2313, за исключением установки бита RSTDISBL

Для работы с программатором MICROPROG автором была разработана специальная программа MicroProg.exe. Главное окно программы представлено на рис. 19.

ВНИМАНИЕ. Программатор необходимо подсоединять к компьютеру до запуска программы. При перестыковке программатора необходимо перезапустить программу.



Возможно, у кого-то возникнет вопрос, зачем нужна столь низкая частота, как 2 кГц. Автор однажды столкнулся со следующей проблемой. При тактировании контроллера ATtiny13 внутренним генератором частотой 128 кГц и запрограммированном фьюзе CKDIV8 реальная тактовая частота контроллера установилась на уровне 16 кГц. При этом как следует из инструкции к контроллерам AVR, частота импульсов SCK должна быть меньше тактовой как минимум в 2,5 раза, то есть на уровне 6 кГц. Минимальная же частота импульсов SCK для того же программатора USBasp составляет 8 кГц, чего как оказалось, недостаточно. Таким образом, абсолютно рабочий контроллер оказался негодным к употреблению, пока не был создан программатор MICROPROG, который таки смог вернуть его к жизни. Но вернемся к описанию.

1. Побитно, устанавливая или снимая флажки с соответствующих битов (важно помнить, что установленный флажок сбрасывает соответствующий бит в 0)

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

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

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

Для обсуждения работы программатора создана ветка на форуме сайта автора по адресу [9].

Все файлы, встречающиеся в статье, можно скачать одним архивом по этой ссылке

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