суббота, 22 августа 2009 г.

usb программатор

Давненько ничего не писал. Сейчас напишу о USB программаторе для программирования AVR микроконтроллеров.

Схему найти не проблема. В гугле ищется на ура. Я взял отсюда: http://www.fischl.de/usbasp/

Плату сделал по ЛУТ. Получилось опять таки просто великолетно (вспоминаю как лет 5 назад все рисовал лаком и иголкой от шприца заточенной под прямым углом...). Вкратце: сделал схему в eagle. Там же сделал разводку платы. Далее сделал экспорт в bmp. Инвертировал цвета в GIMP и прям из него печатал на листе из каталога ИКЕА :) Т.к. лист очень тонкий приклеивал его на двусторонний скотч к обычному 80 гр листу бумаги, а чтобы край не начало зажевывать, его я загибал и тоже приклеивал. Далее утюжил схему на плату. И травил. Травление не вызывает труда, и описаний куча.

Далее сверление. Опять таки проблем не вызвало. Единственная проблема найти сверло менее 1 мм :)

Далее, лужение платы: купил паяльную кислоту прошелся по плате и залудил достаточный количеством олова.

Далее сборка. Тут тоже все просто: взяли детали, и запаяли все на свои места.

Далее прошивка. Прошивал через COM порт. Проблем возникнуть не должно.

Далее отладка. Вот тут началось самое интересное. После подключения к USB программатор начинает быстро отключаться и подключаться. И соответственно не работает.
При этом вывод в dmesg:

[66926.902652] usb 3-1: device not accepting address 81, error -71
[66927.014540] usb 3-1: new low speed USB device using uhci_hcd and address 82
[66927.044702] usb 3-1: device descriptor read/8, error -71
[66927.173584] usb 3-1: device descriptor read/8, error -71
[66927.514049] usb 3-1: new low speed USB device using uhci_hcd and address 83
[66928.037522] usb 3-1: device not accepting address 83, error -71
[66928.149534] usb 3-1: new low speed USB device using uhci_hcd and address 84
[66928.281282] usb 3-1: ep0 maxpacket = 512
[66928.393171] usb 3-1: new low speed USB device using uhci_hcd and address 85
[66928.450380] usb 3-1: device descriptor read/8, error -71
[66928.580259] usb 3-1: device descriptor read/8, error -71

Проблема была решена впаиванием недостоющих стабилитронов. По схеме должны быть 3,6В я впаял которые были на 3,3В, как оказалось, этого было достаточно.

После всего этого lsusb говорит следующее:
Bus 003 Device 088: ID 16c0:05dc

Дальше, устанавливаем софт:

sudo aptitude install avrdude

Средой для разработки я пользовался kontrollerlab. Качал верию для убунты, потому что только она поддерживает usbasp.

Пробуем считать кристалл:
avrdude -c usbasp -p m16

Если получаем такое,
avrdude: Warning: cannot query manufacturer for device: error sending control message: Operation not permitted
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

То пишем правило для USB девайса:
touch /etc/udev/rules.d/95-avrrule.rules

В этот файл пишем следующее:
# Programator AVR USBasp
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", ATTRS{product}=="USBasp", GROUP="group_name", MODE="0664"

Где group_name группа для вашего пользователя.

На этом настройка и отладка для меня пока завершена.

Когда пытался оттестировать программатор под виндой через extream-burner, то все микроконтроллеры с которых пытались просто считать внутренности более переставали даже читаться через COM порт...

Если повторится под линуксом, буду разбираться дальше, если нет, то буду считать что программатор удался. Если будут вопросы, можете задавать slimusgm (at) gmail (dot) com. Занавес.

Комментариев нет: