Универсальная тестово-отладочная плата на микроконтроллере

Начнем с того, что мне довольно часто приходится разрабатывать различные устройства на микроконтроллерах 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/

 

Запись опубликована в рубрике Электроника и различные опыты. Создать закладку наpermalink. Оставить комментарийили trackback:Trackback URL.

Оставить комментарий

Ваш e-mail никогда не будет опубликован или передан третьим лицам. Обязательные поля отмечены *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>