stcdude 0.1-rc1 доставлен

Ну что, было весело, и я могу похвастаться первым работающим релизом stcdude.
stcdude это опенсорсная ISP утилита для прошивки микроконтроллеров STC. Долгожданная замена упоротой софтине от китаез написанной на VB6.
так что теперь можно комфортно работать используя привычные инструменты: sdcc и make.

(далее…)

Занимательная математика

Продолжаю веселиться с микроконтроллерами STC, и опять попалась интересная задачка. В общем, частота на которой работает мк определяется хост компьютером по 8ми 16-битным числам, которые передает хосту контроллер в инфопакете. MCU измеряет какую-то часть временной диаграммы последовательности двух байт {0x7f, 0x7f} и передает 8 измерений хосту в инфопакете вместе с другими настройками. Из них надо получить частоту кварца/RC осциллятора в мегагерцах. Получилась хорошая задачка решающаяся небольшим количеством школьной математики.

(далее…)

Скажем дружно «привет, stcdude»

Прошло некоторое время, с тех пор как были последние подвижки над этой проблемой, но сейчас уже начинает что-то вырисоввываться.
Я оказался полным идиотом и несколько дней потратил на брутфорс поиск нестандартного полинома дл CRC-16 и как-то недоглядел, что это чексуммой оказалась простая сумма байт в посылке в порядке BIG ENDIAN. ну а после задача развалилась и стала тривиальной, протокол оказался прост как три копейки одной монетой. отдельное время потребовалось на написание пары дешевых, но очень сердитых парсеров на луа, которые мне живехонько сварганили базу данных по контроллерам STC, их меджикам, а после дополнили это инфой из CDB файла от Keil’а Сейчас это тупо табличка луашная, которую просто обновлять вмерживая в нее инфу. Не шибко чистое решение для бд, но пока сойдет. А уж будет тормозить — переедем на sqlite.
Ладно, мой ‘proof-of-concept’ код, который пока только и умеет, что запрашивать инфо пакет и декодировать его, и то не полностью, в действии можно увидеть ниже:

[necromant@lamia stcdude]$ ./stcdude -d ./mcudb/stc12x.lua -p /dev/ttyUSB1 -i
STC ISP Tool. (c) Necromant 2012
Using mcudb file: ./mcudb/stc12x.lua
Loading mcudb ./init.lua
Done with result 0
Loading mcudb ./mcudb/stc12x.lua
Done with result 0
Using /dev/ttyUSB1 @ 19200
fd is 3
Waiting for an infopacket from MCU...
 --- 8< ---
Part name:       STC12C5A32S2
Magic bytes:     D170
IRAM size:       256 (0x100) bytes
XRAM size:       1024 (0x400) bytes
IROM size:       32768 (0x8000) bytes
Tested ops: FixMe: implement reading of tested ops
Description:
        8051-based microcontroller with 1T(1-clock) High-Speed Core,
        Dual DPTR, 36-44 I/O Lines, 2 Timers/Counters, 2 PCA Timers,
        Alternative build-in oscillator,
        Independent Baud Rate Generator, Programmable Clock-Out,
        32K bytes flash ROM, 1280 bytes data RAM,
        On-chip EEPROM, 2 UARTs, WDT, ISP/IAP, A/D, CCP/PWMm
--- 8< ---

Все остальное - в этапе напилинга, копания показали, что существует по меньшей мере 3 вариации ISP протокола, так что мы далеки от полной поддержки всего, что только есть. Но их добавить будет уже просто. Желающие отведать чудной препреальфы могут сходить взять копию с моего шитхаба.

8051 STC: Ковыряемся потихонечку

Некоторое время назад я добыл себе энное количесство этих мк, и даже оф. борду. Однако ковыряния отложил по причине нехватки времени. Может они и не такие вкусные как stm32, но все же достаточно мощные и дешевые аки грязь. (Хочешь наводнить рынок какой-то простой фигней — это твой выбор, юзернейм).


(далее…)

MK802: Первые впечатление, разборка и добавление UART’а

Наконец-то оно доехало! За 60 баксов 1Ghz ARM CPU + 1GiB RAM это крайне вкусно. Так или иначе, так как андройд на таком девайсе штука бесполезная, первое что я сделал (после того, как убедился, что оно до меня дошло живым), это разобрал на части.
Фото внутренностей можно найти тут.
Далее последовала хирургическая процедура по добавлению уарта. Этот мне вскоре очень понадобится. 4 пятака около SoC’а оказались Vcc(?), GND и пара RX&TX, так что добавление уарта прошло просто и безболезненно

Вот лог загрузки ванильной прошивки.
(далее…)

Mercury MW150R: Делаем из треша конфетку подручными средствами

Это было весело. Так получилось, что я фактически задарма добыл роутер Mercury MW150R. Он был крайне уныл по всем параметрам, и я даже не думал делать из него что-то, так как не ожидал увидеть под капотом что-то мало мальски интересное. И уж даже в кошмаре не мог предположить, что на нем взлетит OpenWRT. Однако, как выдалась минутка я его таки вскрыл…
Внутри был AR9331. Тот самый который на тыпылинках WR703N, и на котором взлетает моя горячо любимая OpenWRTя. Ну что же, я подцепил уарт и увидел внутри уныние: 2 мегабайта spi флеша, 8 метров мозгов, с горем пополам это хозяйство ворочает VxWorks с недо-вебо-интерфейсом. Самое время разогреть паяльник и прокачать железяку:


(далее…)

proof-of-concept: 13 сервомашинок по усб с attiny2313

Недавно кое кто жаловался, что на ардуйне на mega1280 можно шевелить малым количеством серв по USB (пан и тилт для нескольких камер).
Решив сварганить подобное на спор, я взял мк, у которого не было ни аппаратного USB для связи с ПК, ни 13ти хардварных каналов сравнения (attiny2313), далее сварганил платку, написал пару сотен строк кода и вуоля:
Attiny2313 рулит 13 сервомашинками 16-битным ШИМом по USB при практически отсутствующих внешних компонентах. Опция выставлять все каналы в Z-состояние из командной строки расслабляя сервомашинку в комплекте.
(далее…)

RTL-SDR и защита от статики

Я наконец-то себе добыл донгл rtl-sdr, да тот самый dvb-t приемник, который работает как полноценное SDR радио и может ловить что угодно в диапазоне от 68 до 1700 Mhz. Однако, небольшое НО:
Если в мыслях есть подключить хорошую, годную антенну больших размеров — надо не полениться и посмотреть на печатную плату. Например, на мой донгл откуда-то с «наебея» китаезы не напаяли ESD защиты, уроды.

Если ситуация такая же, то отсутствие ESD защиты + большая антенна == мертвый от статики донгл. ESD защита там, судя по референсу — BAV99, это мелочь в sot23 корпусе, которую видно на рисунке.
Спасибки exception13 за то, что обратил на эту деталь мое внимание.
Саму ESD защиту можно раздобыть где-то по 7 баксов за 100шт на алиэкспрессе с фришипом.

Небольшой настольный блок питания

Я разбирал хлам на даче, когда откопал древнющий и могущественный артифакт: Советский пятнадцативаттный трансформатор ТПП-245-127/220-50 (С приветом из где-то 1979. Да эта малышка старше меня!). Ну а будучи фанатом советской электроники, как не сделать себе на нем блок питания?
В общем, схема крайне примитивна. Диодный мост, конденсатор на 4700uF, и три импульсных преобразователя GS6300, по одной на канал (Сойдут и LM2576/LM2596). Туда же я воткнул самовосстанавливающиеся предохранители на 1.8A, чисто на случай, если вдруг что коротну. Сами импульсники могут прокачать по 3А, но это перебор, как мне показалось для такого проекта.

(далее…)