понедельник, 1 февраля 2010 г.

USB-программатор для контроллеров Atmel

Наконец-то собрал девайсину, нормальный человеческий программатор. До этого для прошивки использовался самый простейший вариант на четырёх резисторах работающий через LPT порт. Штука конечно была простая и нехитрая, но неудобная тем что это был LPT порт(почти R.I.P. в наше время) и не безопасная. Так я им однажды спалил одну из ножек atmega168 отвечающую за SPI, так что тот теперь не прошивается..
В связи с тем, назревшая необходимость стала толчком к делу. Нашёл нормальный и относительно недорогой по себестоимости вариант программатора USB-ASP. После довольно продолжительного шаманства в программе SprintLayout, рисунок был перенесён на печатную плату используя технологию лазерного утюга. Затем было лужение, паяние, потом танцы с бубном.... потом опять паяние....... потом опять танцы... и бац! заработало, прошивает!!!
По части дизайна я считаю у меня получилось очень даже ничего:
А вот в пайке я ламер, из-за этого и были танцы сначала.... не пропой. Я пожалел что не увеличил диаметр контактов для размещения DIP панельки, очень не легко было паять в этих местах.
Прошивка в программе avrdude проста и выполняется из консоли командой вроде этой:
$avrdude -v -c usbasp -p atmega644 -U flash:w:file.hex
Скорость выполнения составляет примерно 5 кбайт/сек, что тоже вполне неплохо. Бывают ошибки при попытке прошивки (пишет Expected Signature), причём судя по всему напрямую зависит от компьютера. Так на моём стационарном 6 из 10 попыток успешны, а на нетбуке все 10/10 оказались успешными.
Мой вариант разводки печатной платы в программе SprintLayout можно взять здесь (доработанный вариант).