[2s.mk-friends] i2c-tinyusb
Damjan Georgievski
penguinista at mail.net.mk
Fri Feb 11 23:22:33 UTC 2011
Додека чепкавме електроника во хаклаб се појави потреба од компјутер да
се врземе на I²C bus[1]. Секако за тоа постојат и купечки решенија, но
тоа би било премногу лесно нели (а плус најдобра технологија е таа што
сам ќе ја направиш). Од друга страна, во хаклаб имаме неколку attiny25
микроконтролери, па решивме да пробаме да склепаме нешто.
Значи, идејата е да се направи софтвер за микроконтролерот, кој од една
страна ќе збори со USB, од друга со I²C.
Испадна дека веќе постои таков проект i2c_tiny_usb[2] - со таа разлика
што овој е наменет за attiny45 т.е. му требаат повеќе од 2KB flash колку
што имаат нашиве микроконтролери...
*** CHALLENGE ACCEPTED ***
Со некои прости манипулации успеавме да дојдеме до величина на софтверот
од 120 бајти повеќе од 2KB. Простите манипулации беа:
- надградба на usbtiny[3] (usb имплементацијата) на најновата 1.6
верзија (ова спаси некои 100-тина бајти)
- исклучување на текстуалните дескриптори на USB уредот (и ова скрати
околу 100)
- по default компајлира со -Оs, -O1/2/3 не помогнаа
Но тука негде е крајот на лесните оптимизации.
Plan B:
i2c_tiny_usb не го користи хардверскиот I²C контролер што го имаат
микроконтролерите, туку софтверски ги игра пиновите (техника наречена
bit-banging). Втората идеја е да се измени кодот да се користи
хардверскиот I²C со што би се скратил кодот кој прави bit-banging.
Ова не е баш тривијален пљукни-залепи колку се чинеше од прва, така да
вчера до 2 саат го анализиравме кодот на i2c_tiny_usb а и кернелскиот
драјвер со кого комуницира итн.
За сега толку, со повеќе информации покасно...
[1] http://en.wikipedia.org/wiki/I2c
[2] http://www.harbaum.org/till/i2c_tiny_usb/
[3] http://www.xs4all.nl/~dicks/avr/usbtiny/
--
дамјан
More information about the Ossm-members
mailing list