Начнем с небольшой сказки. О текстолите.
Был у меня текстолит. Часть — который я сам купил, часть — который дед мне отдал из старых запасов, когда сам он этим безобразием занимался. Односторонний миллиметровый пошел хорошо и скоро трофейного однослойного не осталось — только тот, что я впоследствии прикупил. Но вот встала надобность травить двуслойку и достал я трофейный дедов двуслойный текстолит.
Создается впечатление, что он трофейный аж из германии в 45м, ну либо просто провалялся долго: мало того что поверхность от окисла час тер, так когда уже протравил при пайке он вонял, словно тухлая селедка приправленная не менее тухлыми носками. Ну и дороги после этого как-то подозрительно отрываются легко… В общем, трофей пришлось отложить в сторону, и достать однослойный полумиллиметровый текстолит, купленный на днях в «кварце». Хотя основную роль в необходимости перетравки платы здесь сыграло то, что я по дури навалял пару косяков в разводке, которые всплыли потом и пока паял оторвал энное количество дрожек.
Впрочем, оно и к лучшему.
На полумиллиметровом разводочка вышла просто заглядение — нигде ничего не отрывается, все ровненько, все красиво, прям как с завода, несмотря на то что все еще старый добрый ЛУТ.
(Слота под карту не видно, он снизу.)
Ну а дальше уже дело навыка — V-USB, CDC-ACM реализация, и бутлоадерHID
Девайсина содержит бутлоадер (растрепанированный BootLoderHID (Не влезало в 2кб, местами пришлось напильником допиливать)). Так что ISP может отдохнуть на полочке. Коли перед стартом накинуть джампер, то можно будет его обновить. Ну и если будет целевая аудитория — могут спокойно обновляться без ISP. Автор BootloaderHID’a приспособил его даже для работы под мерзопакостной виндой.
В штатном же режиме все плугнплей. Втыкай, находи в /dev файлик ttyACM0, ну а дальше кому и чем удобнее. Хоть миникомом, хоть чатом, хоть из кода — открывай и рули АТ командами.
—cut—
AT
OK
ATV
MegaDog Prototype I rev. 1.2a CoDeName: maniac
FW: 0.1-pre; ldr: BootLoadHID-md 0.9
S/N: lilith-0000
MEPHI Science Session 2010; Party Build. Kaf 27/Mephi
—cut—
Текст, кстати, я запихнул во внутренний еепром. Быренько наваял либку на сях, и вуоля — еепром превращается в хранилище строковых данных. Так что если хватит места и код правки еепрома останется — то любой сможет замутить себе гоблинский перевод интерфейса парой АТ команд.
Суть проста. Первые байты, не считая нулевого (его частенько затирает, потому выкидываем его), являются массивом из N указателей на NULL-trminated стринги в еепроме. Дефайним константы с номерами строк по мере надобности, и делаем хитрую функцию которая по номеру выдает нам стринг. желательно сразу в виртуальный уарт. Ну а далее я соорудил несколько AT команд и функций, которые потом можно исключить из проши дефайном.
ATSI — инициализирует нулями таблицу строк.
ATSA TEXT — добавляет текст в ближайшую свободную ячейку. фейлит если кончились ячейки или еепром.
ATSD — начинает поочередный дамп строк еепрома. выводит первую строку.
ATSN — дампит следующую строку из еепрома. Для сброса в начало используем ATSD
В принципе, то что надо, чтобы заполнять еепром скриптом на баше уже после прошивки. Конечно, реализация не самая красивая, зато зараза работает и сэкономит до 512 байт кода, если будем этот текст писать в PGMSPACE. ну и оперативы.
А вот с дисплеем вышел полный облом. mt6116, который я думал использовать по причине, что олед дисплейчик так и не дошел до меня, имеет минимальный уровень логической единицы — 3.6 вольт. а у меня питание 3.3. Первой мыслью было быренько соорудить на 74hc244 конвертер уровня (пока там придет заказ из элитана с готовым решением?) — читать из дисплея мне все равно не надо, но потом я эту затею оставил, ибо лень. Будем ждать OLED’a из раделя… ну и когда приедут из элитана запчасти можно будет собрать до кучи экстеншн с эзернетом… слотов под экстеншны через SPI я предусмотрел 2. Ну один еще можно добавить, перебросив проволочку на ISP коннекторе.