Многие радиолюбители (и я в том числе), наконец-то решившиеся поддаться соблазну использования в своих работах микроконтроллеры (МК), сталкиваются с необходимостью программирования этих самых МК. Кто-то опускает руку в карман, достает банкноты, и без всякого угрызения совести отдает их «дяде», получая взамен черную или цветную коробочку с неизвестным содержимым (или известным) за большие деньги, а кто-то пытается сделать программатор своими руками, при этом получая дополнительный опыт. Поприветствуем этих энтузиастов и попробуем хоть немного посодействовать им в их нелегком, но очень интересном и благородном труде.
Схем программаторов во всемирной паутине выложено огромное количество, выбор поистине неограниченный, и программное обеспечение имеется на все вкусы и потребности, поэтому не будем навязывать какие либо идеи, тем более, что схемы с вариациями одного из пожалуй самых повторяемых программаторов на этом сайте уже предоставлены. В данной статье поговорим немного об адаптерах, коими оконечиваются все программаторы.
Существует несколько видов подключения программатора к программируемому MK. Он (МК) либо вставляется в СОКЕТ (ZIP) адаптера, либо программирование осуществляется внутрисхемно, с помощью спец. разъёма устанавливаемого вблизи программируемого МК, либо шлейф программатора подпаивается проводниками непосредственно к ножкам микроконтроллера со стороны паек.
Безусловно, подключение непосредственно к МК на плате весьма удобны, и практически все микроконтроллеры фирмы Atmel поддерживают режим ISP, а при работе с ними вполне достаточно адаптера внутрисхемного программирования представляющего из себя плоский кабель с разъемами на концах, либо с одной стороны разъем, а другой он распущен и промаркированы проводники.
Так уж получилось, что не существует единого стандарта подключения адаптеров к программатору, 2 из них, самых популярных (от Атмел), приведены на следующей картинке:
Лично я использую в своих изделиях 10 пиновый коннектор. Обьяснение данному предпочтению простое, у нас всегда в запасе 3-4 свободных пина, посаженных на землю, которые можно не нарушая совместимости со стандартным интерфейсом задействовать в «мирных целях» для дополнительных сервисов, таких как дополнительное питание, внешний генератор тактирования и прочих.
Теперь перейдем ближе к микроконтроллерам. К нашему счастью здесь все более-менее стандартизировано по группам, по этому не надо на каждую микросхему паять свой сокет, достаточно 1 на группу со схожими распиновками. Вот таблица распиновки наиболее популярных микроконтроллеров фирмы Атмел:
Для наглядности можно привести еще такую вот удобную картинку соответствия
Ну и теперь, когда нам уже все ясно можем делать адаптер. Приведу вам 3 примера как можно это организовать.
Первый — это изготовить под каждый тип микросхем адаптеры, аналогичные этому, и применять их по мере необходимости.
Файл с примерами можно посмотреть в архиве от автора с ником AHEIR, найденном на одном из форумов
.
Второй адаптер для AVR — это коммерческий вариант адаптера, поэтому ни печатки ни подробной схемы не привожу.
Скажу по секрету, по этому фото была восстановлена схема и печатка, и даже сделан мною адаптер для себя. Очень он мне нравится, с помощью его даже кварцы проверяю. Печатной платы для раздачи нет, но есть фото и sprintlayout. Выводы делайте сами 🙂
Еще на форумах был найден такой вот похожий адаптер, тоже грамотно выполнен, но уже для МК в корпусах SOI и TQFP
печатная плата от автора plumber и еще одна
.
Про адаптеры для Pic контроллеров и микросхем последовательной памяти читайте в последующей статье «PIC & SEEPROM Adapters». Это будет уже чисто моя разработка, так что печатку и схему обязательно предоставлю. При написании статьи были использованы фото и другие материалы, найденные в интернете на форумах. На авторство никак не претендую, материал использован исключительно в просветительных целях. По конкретным вопросам пишите в личку. С уважением, Oleg63m.
Внимание, в статье есть неточности! Один из внимательных читателей reis заметил их и любезно поделился с нами, за что скажем ему спасибо. В ATmega64 и ATmega128 выводы MOSI и MISO не применяют для ISP. Внимательно смотрите ДатаШит! Например для ATmega128 сигналы MISO подключают к ножке PE1, MOSI подключают к ножке PE0. В первоисточнике, автор в комментариях сам указывает, что 128 разведена не правильно. Кстати и в стате, плата которая в архиве имеет неточность. Посадочное место AtMega какое-то кривое. А исправить все легко — MOSI—> 2-я нога, MISO—> 3-я нога для 128.