Forum: Projekte & Code PC Software: langsames I2C für IgorPlug-USB


von Matthias L. (matze88)


Angehängte Dateien:

Lesenswert?

Hier stelle ich mal meinen Quick & Dirty Code zur Verfügung, der an den 
IO Ports des IgorPlug-USB eine simple, langsame I2C Schnittstelle 
implementiert. Der Code ist komplett selbsterklärend, das beiliegende 
Sampleprogramm liest 2kByte von nem I2C EEProm mit der DeviceID 
0b1010000.

Vielleicht kann den Code ja mal jemand gebrauchen :-)

Achtung: SEHR langsam. Diese 2 kByte lesen dauert schon rund 2 Minuten 
oder so (hab jetzt nicht gestoppt). Ist halt normal, da man auf die IOs 
nur über bit-banging zugreifen kann und das schonmal immer 1 ms dauert 
über USB.

Schaltung: SDA bitte mit externem Pullup versehen (2-10k ist okay denke 
ich),
SCL ist als Push-Pull ausgeführt. Also bitte: Single Master und keine 
devices die ClockStretching benutzen anschließen. Wobei vermutlich auch 
diese Devices funktionieren dürften, da der I2C so extrem langsam 
arbeitet.

Zur Funktion benötigt wird die IgorUSB.dll, die aber mit der 
Installation des IgorPlug-USB Treibers mit installiert wird.

Matthias

von Εrnst B. (ernst)


Lesenswert?

(Sorry, hab mir deinen Code nicht genau angesehen, deswegen die evtl 
dumme Frage)

Implementierst du I²C auf dem AVR, oder komplett auf PC-Seite im 
Treiber?

Wärs zwecks Speed nicht besser, möglichst viel vom AVR machen zu lassen, 
z.B. wie
http://www.harbaum.org/till/i2c_tiny_usb/index.shtml
(Der ist allerdings eher für Linux-User interressant, wg. dem 
vorhandenen Kernel-Treiber, der ein komplettes Einbinden in das 
Linux-I²C-System ermöglicht)

von Matthias L. (matze88)


Lesenswert?

Es ist eine reine PC Software, die genau dazu da ist, ohne Aufwand etwas 
zu bewerkstelligen :-) Ich hatte gerade weder Lust auf AVR 
Programmierung noch auf viel Löten, weshalb ich mir einfach die 
erstbeste Schaltung gesucht habe, welche IOs bietet und vom PC steuerbar 
ist. Das war der IgorPlug und deshalb ist das PC Programm dafür :-)

Dient jetzt hier auch nur für Leute, die wie ich vorher nach sowas 
gesucht haben, aber nichts gefunden haben. Et voilà, hier wäre halt was 
funktionierendes :-)

cu
Matze

PS: Natürlich wäre es wesentlich schlauer, schneller, besser, den I2C 
Teil im AVR machen zu lassen, dann kann man auch über USB gute 
Geschwindigkeit erzielen (noch mehr indem man sich ein besseres PC<->µC 
Protokoll ausdenkt, indem man z.B. mehrere Bytes auf einmal 
lesen/schreiben kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.