Die wenigsten IIC Devices erlauben es einfach so etwas zu lesen, ohne dass man vorher z.B. eine Registeradresse geschrieben hat.
Das wäre eine Möglichkeit, die andere ist, dass man wenn man die internen Pull-Up Widerstände abschaltet natürlich extern welche haben muss.
Hilfe für Anfänger
Moderator: Guido Körber
-
- Site Admin
- Posts: 2879
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Re: Hilfe für Anfänger
also muss ich dann erst mal einen leeren Write request schreiben? Ich weiß nicht, was passiert, wenn man versucht zu schreiben. dies ist in meinem speicher nicht erlaubt und sollte auch von diesem verhindert werden. ich denke mal, dann würde ein fehler kommen.
pull up widerstände sind extern vorhanden.
pull up widerstände sind extern vorhanden.
-
- Posts: 389
- Joined: Sun Feb 13, 2005 1:22 pm
- Location: Gerblingerode / Duderstadt
- Contact:
Re: Hilfe für Anfänger
Hallo Playground,
kann man denn das EEPROM mit dem Test-Tool All-IN-ONE auslesen ?
kann man denn das EEPROM mit dem Test-Tool All-IN-ONE auslesen ?
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Re: Hilfe für Anfänger
Hallo,
ja, das klappt wunderbar. sowohl mit dem "Simple I2C", als auch mit dem "ALL IN ONE". Vor allem auch ohne vorher irgendwas zu schreiben. Hab ja meinen Code aus dem Quellcode vom Simple I2C abgeschaut. Und da stand meines erachtens bei der funktion Lesen auch nicht erst noch ein schreiben vorher drin. Komisch.
Grüße
Edit:
So, hab mal ein bisschen rumgetestet. Diese Zeile war schuld. Die Adresse darf nich geschoben werden.
Allerdings ist die Startadresse im Speicher immer eine andere beim mehrmaligen auslesen. Gibt es eine möglichkeit den Adresszähler auf 0 zu setzen? Ein einfaches Write schreibt ja auch nur an die gerade anliegende Adresse, oder? Gibt es da eine Möglichkeit eine Zieladresse im Speicher mit anzugeben?
ja, das klappt wunderbar. sowohl mit dem "Simple I2C", als auch mit dem "ALL IN ONE". Vor allem auch ohne vorher irgendwas zu schreiben. Hab ja meinen Code aus dem Quellcode vom Simple I2C abgeschaut. Und da stand meines erachtens bei der funktion Lesen auch nicht erst noch ein schreiben vorher drin. Komisch.
Grüße
Edit:
So, hab mal ein bisschen rumgetestet. Diese Zeile war schuld. Die Adresse darf nich geschoben werden.
Funktioniert jetzt auch ohne vorheriges schreiben. Mit einem kurzem Schreiben hat der Speicher scheinbar auch kein Problem.rep.Bytes[1] = adresse <<1 | 0x01 ; //Address for read
Allerdings ist die Startadresse im Speicher immer eine andere beim mehrmaligen auslesen. Gibt es eine möglichkeit den Adresszähler auf 0 zu setzen? Ein einfaches Write schreibt ja auch nur an die gerade anliegende Adresse, oder? Gibt es da eine Möglichkeit eine Zieladresse im Speicher mit anzugeben?
- Christoph Jung
- Posts: 673
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: Hilfe für Anfänger
Dafür muss man vorher schreiben. Das Schreiben ist dafür da, den Startpunkt für das Auslesen zu setzten. Das ist auch im Simple IIC drin. Einfach nur den schreibbefehl, die Adresse und das zu lesende Register schreiben und dann von da an Lesen. Wenn man vorher nicht schreibt wird automatisch das Register 0x00 genommen, weil IOWKIT_SPECIAL_REPORT mit memset() auf null gesetzt wird.
Software developer
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Re: Hilfe für Anfänger
sehr schön. danke. klappt super.