[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