AVR – USB-I2C-Interface

i2c-tiny-usb

Quellen:
Philips – http://www.nxp.com/documents/user_manual/UM10204.pdf
Hardware – http://www.harbaum.org/till/i2c_tiny_usb/index.shtml
Windows-Treiber – http://sourceforge.net/projects/libusb-win32/
Firmware(i2c_tiny_usb) – http://www.harbaum.org/till/i2c_tiny_usb/i2c_tiny_usb-2009-02-10.zip
Firmware basiert auf V-USB von http://www.obdev.at/products/vusb/index-de.html

1. Hardware bauen
erforderliche Komponenten(siehe Hardware):
– Lötstation.
– Multimeter(Analog oder Digital).
– Hardware-Programmer(STK500, AVR Dragon…).

2. AVRStudio installieren/starten
2.1 Konfiguration /Main
–> Device = ATTiny45
–> Programming Mode and Target Settings (HVSP High Voltage Serial Programming)
2.2 AVRStudio–>Menü–>Tools/Program AVR/Connect..
2.3 Brennen firmware.hex(enthalten in Firmware(i2c_tiny_usb)).
2.4 Setzen Fuse-Bits (Wichtig! häufige Fehlerquelle), mehr Informationen zu den Fuse-Bits findet man in der readme.txt innerhalb des firmware-Ordners. In der readme.txt findet man einen Hinweis zu einer Makefile-Datei –>Makefile-avrusb.tiny45. Dort steht es sehr genau geschrieben, wie die Fuse-Bits gesetzt werden müssen.

3. Treiber installieren
Linux: seit Kernel 2.6 ist der Treiber i2c-tiny-usb(modprobe i2c-tiny-usb) im Kernel enthalten und kann mit modprobe geladen/entladen werden. Zusätzlich gibt es eine Werkzeugsammlung(i2c-tools), mit der man die Funktionalität angeschlossener I2C-Geräte testen kann(i2c-tools installieren, danach modprobe i2c-dev, danach i2cdetect -l).

Wenn es Probleme gibt dann helfen die Log-Dateien und Kernel-Aussagen:
– Logdatei fortlaufend beobachten
tail -f /var/log/messages

– Kernelmeldungen ausgeben
dmesg

– USB-Geräte auflisten
lsusb

– geladene Treiber und deren Verwendung anzeigen
lsmod

– Geräte auflisten
ls /dev/
ls /proc/bus/usb/devices

Windows: Die Treiber für Windows werden nach der Hardware-Erkennung installiert. Zuvor muss eine *.inf-Datei erstellt worden sein, um diese während der Hardwareerkennung auszuwählen. Genaue Anleitung auf Englisch steht auf der Projektseite von libusb-win32. Es dürfen mehrere verschiedeneTreiber parallel installiert werden.

4. Betriebstest

Im Ordner testapp befindet sich eine i2c_usb.exe-Datei. Sie testet die allgemeine Funktionalität der Hardware(i2c_tiny_usb) und Software(Treiber) und versucht eine Verbindung zu einem Temperatursensor aufzubauen. Daneben findet man den zugehörigen Quellcode i2c_usb.c. Um eine eigen Testapplikation kompilieren zu können müssen die Header-Dateien in die entsprechenden Compiler-Ordner kopiert werden. Unter Windows-XP mit MinGW kopiert man die Datei lusb0_usb.h (libusb-win32-bin-1.2.6.0libusb-win32-bin-1.2.6.0includelusb0_usb.h) in den Include-Ordner(C:MinGWinclude) des Compilers und ändert den Namen nach usb.h. Die Namensänderung ist notwendig, da die #include-Direktive innerhalb i2c_usb.c diesen Dateinamen referenziert. Danach kopiert man die Datei libusb.a(libusb-win32-bin-1.2.5.0libgcc) in den lib-Ordner(C:MinGWlib) von MinGW. Die libusb.a wird in der Makefile.MinGW durch die Option -lusb referenziert.