Собираем универсальную тестово-отладочную плату на микроконтроллере

Начнем с того, что мне довольно часто приходится разрабатывать различные устройства на микроконтроллерах RISC архитектуры семейства AVR компании Atmel. У них очень много преимуществ перед основными конкурентами (PIC):

  • довольно широкая система команд
  • большинство команд выполняется за 1 такт
  • низкая цена, широкая доступность
  • частота этих МК достигает 20 МГц, что соответствует производительности в 20 MIPS
  • а так же понты, понты, понты…перечислять можно довольно долго :)

Думаю, многим надоело тестировать программы на макетках/в эмуляторах, и не всегда это удобно/результативно. Вобщем назрела идея сделать универсальную тестовую плату с возможностью использовать ее как для отладки и тестирования ПО, так и в качестве контроллера для управления различными устройствами по интерфейсу USB(CNC станок, умный дом, и т.п.), тем более появилась необходимость разобраться с HID обменом данными между компьютером и GPS модулем.

Для решения поставленных задач была разработана схема тестовой платы, подобраны детали, сделана печатная плата. В итоге получился довольно неплохой девайс :)

Основные характеристики отладочной платы:

  • Размер памяти 8кб (2кб используется под USB загрузчик,  под программы остается 6кб. Если требуется больше памяти, выход — либо использовать вместо загрузчика обычный SPI программатор, либо использовать МК с большим объемом памяти)
  • 18 независимых линий ввода-вывода
  • Компактные размеры (меньше 35*35 мм)
  • Низкая стоимость и доступность компонентов
  • Простота изготовления

Итак, что сегодня нам потребуется:

  • Принадлежности для ЛУТа(текстолит, принтер, хлорное железо, и так далее)  ~50 руб
  • Микроконтроллер Atmega8-16AU (подойдет любой Atmega8 без индекса L в корпусе TQFP-32)  ~80 руб
  • Кварц, желательно SMD, на 12 или 16 МГц (можно выпаять из флешки) , подойдет и обычный кварц   ~20 руб
  • Резисторы SMD 0603 на 68 ом — 2шт, 1.5k — 1шт, перемычка в таком же корпусе (0 ом) — 1шт (все это можно выпаять со старых материнских плат)   ~ 20 руб
  • Конденсаторы SMD 0805 на 33пф (пойдут и 22пф) — 2шт, 0.1мкф(тоже SMD, 0805 типоразмер) — 1шт, 1vra (все тот же SMD) — 1шт (их уже придется покупать в магазине радиодеталей, продаются ленточками по 10шт)   ~ 30 руб
  • Ну а так же понадобятся коннекторы (по-русски, разъем, таких много на материнских платах, на них еще джамперы ставят, можно купить или отпаять газовой горелкой)   ~20 руб
  • Mini-USB гнездо на плату (отпаять с телефона / купить) ~ 40руб
  • И, разумеется, умение паять SMD (Не надо пугаться, можно потренироваться сначала просто сделав на текстолите площадки, и попаять туда детали (отпаять потом можно, нагревая с другой стороны платы газовой горелкой/зажигалкой/свечкой), за пару часов можно довольно неплохо напрактиковаться. Неплохие видеоуроки были у Di Halt’a (на его сайте «изиэлектроникс», найти, думаю,  несложно) )
  • Однократно, обычный SPI программатор, чтобы зашить в МК USB загрузчик

Примечаение: как оказалось позже, все же следует делать плату побольше для удобства экспериментов, печатные платы таких вариантов будут добавлены чуть позже. Также часто бывает полезным вывести +5в с порта USB.

На сборке останавливаться не буду, ибо на печатной плате, сделанной в SL5, все отмечено. После сборки прошиваем микроконтроллер(припаиваем проводки GND(земля), VCC(питание), RESET, MOSI, MISO, SCK программатора к соответствующим пинам микроконтроллера на плате(около RESET’a сделана маленькая площадочка, остальные сигналы припаиваются к соответствующим дорожкам на плате). Заливаем в микроконтроллер прошивку из прикрепленного архива (.hex файл, смотрим по модели микроконтроллера и частоте кварца), затем прошиваем фьюзы:

BODLEVEL=1
BODEN=1
SUT1=1
SUT0=0
CKSEL3=1
CKSEL2=1
CKSEL1=1
CKSEL0=1
RSTDISBL=1
WTDON=1
SPIEN=0
CKOPT=1
EESAVE=1
BOOTSZ1=0
BOOTSZ0=0
BOOTRST=0

(0- запрограммирован, 1 — незапрограммирован)

Т.е. по байтам:

LOW — 0xEF

HIGH — 0xD8

(Желающие могут на всякий случай проверить еще раз, ведь при неправильно запрограммированных фьюзах можно «запороть» контроллер так, что перешить обратно можно будет только с помощью параллельного программатора) . Для рассчета прошиваемых фьюзв можно воспользоваться специальным калькулятором http://avr.roboforum.ru

Топерь можно отпаять программатор, если все прошло хорошо, надеть джампер от 17 ноги (PB5) к земле (на плате отмечено «Jumper-programming»)  и подключить устройство по USB к компьютеру. Устройство должно определиться, дрова должны поставиться сами, теперь можно запускать утилиту HIDBootFlash, нажимать кнопку «Find device», затем «Open .hex-File», и наконец «Flash Device». Теперь можно снимать джампер, будет выполняться только что загруженная программа.

Вместо загрузчика   HIDBootFlash можно использовать USBAsp, гуглится легко.

 

Итак, что у нас получилось:

Пример использования — как раз платка с GPS:

Все файлы можно найти тут:

bootloadHID.2008-11-26.zip/ bootloadHID.2008-11-26/firmware/hexfiles — прошивки

В старших каталогах исходные коды USB загрузчика bootloadHID.

Программа  HIDBootFlash:

 http://dl.dropbox.com/u/24276637/HIDBootFlash.exe

Все одним архивом:

 http://dl.dropbox.com/u/24276637/Atmega8_test_board.zip

Тема на форуме: http://lasers.org.ru/forum/threads/Универсальная-тестово-отладочная-плата-на-микроконтроллере.2370/

Комментирование и размещение ссылок запрещено.

3 комментариев к записи “Собираем универсальную тестово-отладочную плату на микроконтроллере”

  1. Фтвкун:

    И что делает прога в МК ? ГПС запускает ии что?\Какая польза йумному дому от этого МК ?

  2. hexFF:

    По- видимому, принимает от gps модуля данные и отдает компу.

    А умный дом можно и на одном этом МК сделать. Будет и свет включать, и сиреной орать (если влезет кто), и воду перекрывать (если протечет), и кондеем управлять когда жарко/холодно, и за домашнюю метеостанцию логи на комп писать… а gsm модуль прикрутишь- ещё и эсэмэсить обо этом всем.

  3. Diro:

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

    Электрические:

    Напряжение: AC100-240V…50/60Hz

    Номинальная мощность: 30 Вт

    Лазерный диод:

    Длина волны: 532nm

    Мощность: 50 мВт

    Модель: TTL

    Частота:> 2K

    Охлаждение: Принудительное воздушное охлаждение, авто-терморегулирования

    Система сканирования:

    Система: Galvo

    Сканирование зеркало: 15 * 10 * 1 мм

    Скорость сканирования: 12K пакетов в секунду

    Угол сканирования: 50

    Режим работы:

    DMX512, автомобиль, Музыка-активных и ведущий / ведомый

    DMX512: 10 каналов

    Гобо: 64 гобо и 1 мультфильм эффект

    Эффекты гобо: вращающиеся, прыгать, размер, slowdraw, стрейч и прокатки

    Название Trident Я LT — 217

    хочу закачать туда новых рисунков как это сделать и что за порт зади там 10 каналов ????