Another tiny USBasp

USBAsp по минимуму.
Фото для затравки:

Итак:
— В AtTiny25/45/85 можно запихать USB-стэк от V-USB.
— В 45-ю и 85-ю можно запихать еще что нибудь, кроме самого стэка.
— В этих тиньках 8-ног, из них две питание, одна резет, которая может становиться ногой ввода/вывода, и, следовательно 5+1 ног ввода/вывода.
— Для USB надо 2 ноги, D+ и D-. Для SPI нужно 4 ноги, MOSI, MISO, SCK и CS или в нашем случае будет называться Reset.
— Так как, и USB-протокол, и SPI-протокол будет программный, ноги можно выбирать любые.
В общем все что нужно для USBAsp в этих двух тиньках (AtTiny45/85), есть.
Схема:

Плата:

Top:

Bottom:

Заказал несколько платок. Вот что получилось:

Конечно не без косяков. Но не будем о грустном. И Москва не сразу строилась.
Вот так выглядит конечное устройство:

Не забываем себя любимого:

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

Но только один раз!
Исходники:
Все, в принципе, осталось от USBAsp'а, но немного перелопачено.
Скачать.
Теперь об особенностях:
— Скорость не высока, так как SPI полностью программный, можно попробовать прикрутить аппаратный USI, но у меня что-то не пошло.
— Питается все сразу от программатора, нет отключения.
— Для SPI'ного Reset'а, используется нога Reset AtTiny. Соответственно во фьюзах устанавливается работа этой ноги как ввода/вывода, и следовательно перепрошить эту тиньку с помощью ISP-программатора больше нельзя, нужен HVSP-программатор (или сбрасывалка фьюзов).
Выбор типа чипа в файле makefile:

Выбор ног для USB в файле usbconfig.h:

Выбор ног для SPI в файле isp.h:

Фьюз биты:
Внимание! После изменения фьюзов потребуется HVSP-программатор!

— Для того чтобы собрать проект нужно в директории с проектом выполнить «make all».
— Получившийся *.hex файл с помощью любого другого программатора загрузить в чип.
— После чего настроить фьюзы. (Включить PLL. Отключить делитель на 8. Выключить ногу Reset.)
Если изделие годное, то не забудьте плюсануть! =)
- +10
- 29 августа 2011, 01:51
- hexanaft
Мое почтение. Устройство действительно высококлассное, хотя немного опасное для материнки, так как защита минимальная.
- count_enable
- 29 августа 2011, 02:07
- ↓
Интересно. Особенно порадовала возможность прошиваться через свой разъем.
В USI вроде ничего сложного нет. Я на нем I2C делал.
Алсо, если осталось место, то можно сделать возможность обновления прошивки по usb
В USI вроде ничего сложного нет. Я на нем I2C делал.
Алсо, если осталось место, то можно сделать возможность обновления прошивки по usb
У тинек нет аппаратного бутлоадера. =(
А даже если и был бы то надо придумать сигнал для входа в него, а ноги уже все заняты. =(
И следовательно надо все это продумывать программно.
А даже если и был бы то надо придумать сигнал для входа в него, а ноги уже все заняты. =(
И следовательно надо все это продумывать программно.
Можно программно в него переводить, командой по USB — никто же не мешает протокол аспа или допера чуток доработать. Либо выделить скажем RST под вход в бут, врядли его внешняя плата будет довить к земле — там обычно RST подтянут к питанию.
Хотя без аппаратного бутлоадера они будут уходить в спячку на время записи в флеш, USB при этом отвалицо :(
Можно еще попробовать сделать бутлоадер через разъем программирования.
Хотя без аппаратного бутлоадера они будут уходить в спячку на время записи в флеш, USB при этом отвалицо :(
Можно еще попробовать сделать бутлоадер через разъем программирования.
Да, можно от команды по USB переходить в бутлоадер записанный где нить в конце флеши, но тогда загружаемый hex обязан поддерживать эту команду, если окажется не валидный hex, то надо будет перепрошивать аппаратно.
Моно вынести в бутлоадер весь USB-стек, тогда бут будет проверять адресована ли команда ему и если нет — передавать в коллбэк в прошивке. Для связи бута и основной прошивки можно использовать например таблицы адресов функций на фиксированных позициях.
Правда без поддержки RWW секций (aka секция бутлоадера) затея дохлая — USB не будет ждать, пока кристалл протупится. Хотя… Если стирание/запись странички занимает менее 1мс (даже меньше, до 600-800мкс быть может), то можно записывать данные в промежутке между кадрами USB.
Правда без поддержки RWW секций (aka секция бутлоадера) затея дохлая — USB не будет ждать, пока кристалл протупится. Хотя… Если стирание/запись странички занимает менее 1мс (даже меньше, до 600-800мкс быть может), то можно записывать данные в промежутке между кадрами USB.
Забавно. А AVRdoper туда портировать не пробовал? Там интерфейс постандартней.
Ну и USB-бутлоадер и правда было бы неплохо)
Ну и USB-бутлоадер и правда было бы неплохо)
С AVRdoper'ом не работал, но скорей всего тоже реально, если он тоже умеет использовать прерывание не по int0, а по pcint.
Стек везде один и тот же. Посмотри в этом направлении, допер имхо поинтересней. Хотя я не пробовал ни его, ни asp.
А в чем плюшки у допера в отличае от аспа?
При том что я половину кода аспа уже перелопатил?
Навороченей все равно не получится в виду отсутствия ног.
При том что я половину кода аспа уже перелопатил?
Навороченей все равно не получится в виду отсутствия ног.
Ну например то, что он юзает стандартный протокол, поддерживаемый студией напрямую. К тому же, я читал что протокол STK500 разработан так, чтобы поддерживать любые камни с SPI ISP, тогда как скажем AVR910 поддерживает лишь ограниченное число камушков.
Выглядит неплохо :) исполнение понравилось
замечания:
Можно было использовать и мегу 168 — размер маленький; цена такая же, но имеет 32 ноги
На защиту думаю лучше диоды Шоттки ставить, в т.ч. и на питание(пример можно посмотреть в описании к микросхеме cp2102)
замечания:
Можно было использовать и мегу 168 — размер маленький; цена такая же, но имеет 32 ноги
На защиту думаю лучше диоды Шоттки ставить, в т.ч. и на питание(пример можно посмотреть в описании к микросхеме cp2102)
Если изделие годное, то не забудьте плюсануть! =)Однозначно годное, однозначно плюс!
Где платы заказывал?
Заказывал в Резоните почти с год назад на пару с приятелем кучу разных плат, потому не по срокам не по цене сказать не смогу.
Скорее всего питание таргета и частота SPI. В оригинале три джампера. Третий и тут джампером, переключение разъема ISP на прошивку МК в погроматоре.
Правда там ресурсов хватает и аппаратный бут поддерживается. Мона было сделать USB бутлоадер.
Правда там ресурсов хватает и аппаратный бут поддерживается. Мона было сделать USB бутлоадер.
Собрал и я, стабилитронов SMD ненашлось пришлось лепить обычные, прилепил на плате Poly Switch и два светодиода, которых тоже 1206 небыло, прилепил 0805 на резисторах, зелёный просто посажен через резистор на +5 а красный коммутируется транзистором база на reset типа индикатор активности, хз как он будет себя вести если что перекочует с reset-ф на SCK
При сборке были проблемы с прошивкой (пришлось USBasp перешивать в Doper чтобы прошить Tiny45) Спасибо hexanaft<a за разработку и помощь при сборке
При сборке были проблемы с прошивкой (пришлось USBasp перешивать в Doper чтобы прошить Tiny45) Спасибо hexanaft<a за разработку и помощь при сборке

Комментарии (58)
RSS свернуть / развернуть