Another tiny USBasp

AVR

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

Комментарии (58)

RSS свернуть / развернуть
Мое почтение. Устройство действительно высококлассное, хотя немного опасное для материнки, так как защита минимальная.
0
Бывало, коротил, и даже 12 вольт на +5 вольт от USB подавал, все просто ребутилось или отваливался USB до перезагрузки. Так что на современных мат. платах все не так уж категорично.
0
Подтверждаю. Коротил 5в на современной материнке — ноль эмоций. Другая — до перезагрузки. На старой — вспышка и сгоревший дросель.
0
Интересно. Особенно порадовала возможность прошиваться через свой разъем.

В USI вроде ничего сложного нет. Я на нем I2C делал.

Алсо, если осталось место, то можно сделать возможность обновления прошивки по usb
0
У тинек нет аппаратного бутлоадера. =(
А даже если и был бы то надо придумать сигнал для входа в него, а ноги уже все заняты. =(
И следовательно надо все это продумывать программно.
0
Можно программно в него переводить, командой по USB — никто же не мешает протокол аспа или допера чуток доработать. Либо выделить скажем RST под вход в бут, врядли его внешняя плата будет довить к земле — там обычно RST подтянут к питанию.
Хотя без аппаратного бутлоадера они будут уходить в спячку на время записи в флеш, USB при этом отвалицо :(
Можно еще попробовать сделать бутлоадер через разъем программирования.
0
Да, можно от команды по USB переходить в бутлоадер записанный где нить в конце флеши, но тогда загружаемый hex обязан поддерживать эту команду, если окажется не валидный hex, то надо будет перепрошивать аппаратно.
0
Моно вынести в бутлоадер весь USB-стек, тогда бут будет проверять адресована ли команда ему и если нет — передавать в коллбэк в прошивке. Для связи бута и основной прошивки можно использовать например таблицы адресов функций на фиксированных позициях.
Правда без поддержки RWW секций (aka секция бутлоадера) затея дохлая — USB не будет ждать, пока кристалл протупится. Хотя… Если стирание/запись странички занимает менее 1мс (даже меньше, до 600-800мкс быть может), то можно записывать данные в промежутке между кадрами USB.
0
Можно всегда входить в бутлоадер, ждать команды, а если ее нет, переходить на исполнение кода, только стек придется реинициализировать.
Но я, чессно говоря, не сильно в спецификации USB разбираюсь. И как в этом случае будет поступать комп я не вкурсе.
0
>>Моно вынести в бутлоадер весь USB-стек

Делал так для меги8, в качестве бутлоудера был BootLoadHID из V-USB examples. Правда для этого надо много памяти(примерно 1.5-2кб бутлоудер + столько же usb-стек в основной прошивке, и еще должна остаться память на полезный код)
0
Нет, видимо не так, раз было две копии стека — в основной части и в буте. Я предлагаю именно что использовать одну копию стека для обоих частей.
0
Прошу прощения, невнимательно прочитал
0
Забавно. А AVRdoper туда портировать не пробовал? Там интерфейс постандартней.
Ну и USB-бутлоадер и правда было бы неплохо)
0
  • avatar
  • Vga
  • 29 августа 2011, 02:14
С AVRdoper'ом не работал, но скорей всего тоже реально, если он тоже умеет использовать прерывание не по int0, а по pcint.
0
Стек везде один и тот же. Посмотри в этом направлении, допер имхо поинтересней. Хотя я не пробовал ни его, ни asp.
0
А в чем плюшки у допера в отличае от аспа?
При том что я половину кода аспа уже перелопатил?
Навороченей все равно не получится в виду отсутствия ног.
0
Ну например то, что он юзает стандартный протокол, поддерживаемый студией напрямую. К тому же, я читал что протокол STK500 разработан так, чтобы поддерживать любые камни с SPI ISP, тогда как скажем AVR910 поддерживает лишь ограниченное число камушков.
0
Хм. Знал бы прикуп, жил бы в Сочи.
Я не пользуюсь студией и никому не советую, хотя пятой еще не пробовал, выглядит вроде достойно.
А вот число поддерживаемых камушков это промах.
0
А чем пользуешься? И чем не угодила студия? Хотя как IDE она весьма убога, да.
0
Notepad++ для windows.
Geany для Linux.
Пытаюсь пересесть на полноценное IDE CodeLite или Code::Blocks и там, и там.
0
Гм. Не сказал бы что N++ сильно лучше студии. Вот пятая — та да, мне нравится. MSVS+VAX, одна из наиболее мощных связок в мире IDE.
0
>> И чем не угодила студия?

Сильный недостаток пятой студии для меня-- AVR Simulator не поддерживает половину камней, под который можно писать. Для остальных только железная отладка. (хотя может сейчас что-то и изменилось, я на пятую зимой перешел)
0
Какая приятная штучка. Думаю, стоит повторить.
0
  • avatar
  • ZPS
  • 29 августа 2011, 03:34
А что с твоим сайтиком?
0
Роутер продал тот. Сейчас другой. А под него все никак руки не дойдут собрать сервак.
0
Выглядит неплохо :) исполнение понравилось
замечания:
Можно было использовать и мегу 168 — размер маленький; цена такая же, но имеет 32 ноги
На защиту думаю лучше диоды Шоттки ставить, в т.ч. и на питание(пример можно посмотреть в описании к микросхеме cp2102)
0
мега168 все таки подорже: тини45 против мега168 .
А диоды шоттки тут походу не пойдут, тут идет синхронизация уровней с помощью этих стабилитронов, а не защита.
0
Тогда какой в этом смысл, если питание все равно идет 5 вольт.
0
У USB логические уровни на D+ и D- 3.3 вольта, для этого стабилитроны и нужны. Авторы V-USB предлагают также вариант с запиткой всей схемы от 3.3 вольт, но не все контроллеры осилят работу на этом напряжении на тактовых частотах 12-20 мГц, которые требует V-USB.
0
Мега48?
Ног много, в чипНН даже дешевле тини45 (50р против 75)
chipnn.ru/70.php
0
Если изделие годное, то не забудьте плюсануть! =)
Однозначно годное, однозначно плюс!

Где платы заказывал?
0
  • avatar
  • ploop
  • 29 августа 2011, 08:02
Заказывал в Резоните почти с год назад на пару с приятелем кучу разных плат, потому не по срокам не по цене сказать не смогу.
0
Я для протосса заказывал (у них же, кажется), тоже с белой маской


0
А кнопки для чего?
0
Скорее всего питание таргета и частота SPI. В оригинале три джампера. Третий и тут джампером, переключение разъема ISP на прошивку МК в погроматоре.
Правда там ресурсов хватает и аппаратный бут поддерживается. Мона было сделать USB бутлоадер.
0
Ну, про схему-то я в курсе. Моя конструкция попроще малость будет :)


Если кнопки с фиксацией, то охотно поверю, что одна из них как раз понижает частоту SPI. Но вторая…
0
В оригинальной схеме три джампера — питание таргета, клок и режим. Вот скорее всего питание и есть.
0
Именно так. Надоедает часто джамперы передёргивать, кнопки — самое оно.
Питание таргета не отключается, а переключается между 3,6 и 5В, бывает полезно, когда таргет от 3В питается, либо когда на линиях SPI висит что-то типа светодиодов, на 5В иногда не получается прошить, перетыкнул — и пошло.
0
Хм. без кварца. И стабильно работает?
0
Вполне работает видимо, V-USB на это рассчитана тоже. Там кстати еще есть код, который на таких МК подкручивает частоту генератора при помощи OSCCAL, в качестве опоры использует килогерцовые SOF-импульсы с USB (при этом на ножку с прерыванием нужно вешать D-, а не D+).
0
А трех-контактный разъем что делает?
0
Это джампер. Им можно подключить D- на третью ножку разъема. Правда я не понял зачем.
0
Я вот тоже думаю… Может это, для HV прошивки? Но тогда почему последний (DP) не выведен?
0
Там только эта нога нужна для HVSP:
0
0
Да видел. Он тоже сообразил =) и сделал.
И у него не USBAsp а USBTiny.
0
www.simpleavr.com/avr/vusbtiny
исходники
0
Ну очень качественно и компактно получилось! Автор молодец! Для прошивки чего-нибудь «на коленке» или в полевых условиях весьма актуально) А почему разъём вертикальный, а не горизонтальный?
0
Сразу чессно говоря не сообразил =(
Да и свою подпись надо куда-то размещать =)
0
Ссылка здесь ведёт на другую картинку. А хотелось бы и эту поближе рассмотреть! :)
0
  • avatar
  • Deer
  • 29 августа 2011, 21:12
Исправлено.
0
А ты продаешь эти программаторы? Я бы купил несколько штучек.
0
Хм, сразу несколько! =)
Думаю 300руб. адекватная цена.
Если цена устраивает то в личку.
0
мой вариант:

0
Втыкаю купленный на ибэе usbasp (на меге8А) в разъем usb, горит зеленый светодиод Д2(пин 23), красный Д1 (пин 24) не горит. В чем трабла?
0
  • avatar
  • tank
  • 06 сентября 2011, 07:53
Перевернул isp разъем, теперь пишет и читает. Зеленый СИД — power, красный — data
0
Собрал и я, стабилитронов SMD ненашлось пришлось лепить обычные, прилепил на плате Poly Switch и два светодиода, которых тоже 1206 небыло, прилепил 0805 на резисторах, зелёный просто посажен через резистор на +5 а красный коммутируется транзистором база на reset типа индикатор активности, хз как он будет себя вести если что перекочует с reset-ф на SCK
При сборке были проблемы с прошивкой (пришлось USBasp перешивать в Doper чтобы прошить Tiny45) Спасибо hexanaft<a за разработку и помощь при сборке
0
UPD между базой и Reset нужно воткнуть резистор кил 5-10, а индицирует отлично, во время прошивки reset притягивается намертво к GND что открывает транзистор
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.