Da ich neu bin in der Materie, brauche ich Hilfestellung: Ich möchte einen Baustein (PCF8574 oder PCF8583) über I2C ansprechen. Ich benutzt das Atmel Starterkit von Pollin und ein Atmega16 mit 8 MHz. Die weiteren Bausteine sind auf einer Zusatzplatine, die über etwa 50 cm FB-Leitung angeschlossen ist. Die Leitungen des I2C-Buses sind mit je 4K7 abgeschlossen. Die Bausteine sind mit 100nF Abblockkonensatoren versehen. Das Bitmuster von SLC und SDA ist am Baustein nachvollziehbar (Osci). Bei der Software habe ich verschiedene Möglichkeiten ausprobiert: I2cstart oder I2cinit I2cwbyte I2csend I2cstop Jedesmal wird beim Senden eines Bytes (I2cwbyte oder I2csend) die Variable "ERR" auf 1 gesetzt und der Baustein reagiert nicht. Wahrscheinlich ist das nur eine kleine Sache, aber als Anfänger hat man so seine Schwierigkeiten. Ich bedanke mich schon mal für die Hilfe wolfgang
Ich kenne mich nicht mit Bascom aus, aber im Prinzip sieht die Vorgehensweise wie folgt aus (Ich gehe mal davon aus, dass Du die Bausteine richtig verdrahtet hast): 1. Initialisierung 2. Startbedingung senden 3. Slave-Lese- oder Slave-Schreibadresse senden, danach ACK abfragen 4. Daten versenden bzw. empfangen, danach ACK senden bzw. abfragen 5. entweder noch mehr Daten versenden bzw. empfangen oder weiter mit n. n. Stopbedingung senden ... (n+1.) bei Punkt 2 wieder einsteigen, wenn wieder ein Transfer stattfinden soll. So sieht ein Datentransfer per I2C aus. Nun kannst Du es mal mit Deinem Programm vergleichen. Ich hoffe, dass es Dir einwenig weiter hilft.
Die Bascom Start-Sequenz I2CSTART ist aber mit Vorsicht zu behandeln, ich hatte mal den Fall, das ein Baustein nicht wollte wegen dem Befehl, weil Bascom intern ne Restart Sequenz generiert. Andere Bausteine brauchten genau das zur Funktion ... ein Hoch der Deutschen Industrienorm :o(
>ein Hoch der Deutschen Industrienorm :o(
was hat die mit I²C zu tun?
Marko wrote: > ich hatte mal den Fall, das ein Baustein nicht wollte wegen dem > Befehl, weil Bascom intern ne Restart Sequenz generiert. > Andere Bausteine brauchten genau das zur Funktion ... ein Hoch der > Deutschen Industrienorm :o( Huch was solln das sein (Restart Sequenz), kann man das essen ? Es gibt ein Repeat-Start, was z.B. EEPROMs zum Lesen brauchen, aber das entspricht voll und ganz der I2C-Norm. Erzähl dochmal, welche ICs Deiner Meinung nach von der Norm abweichen sollen. Mir sind bisher keine untergekommen. Ich mache meinen Single-Master allerdings grundsätzlich in Software, das ist einfacher, weniger Code, universeller und funktioniert immer. Peter
Bascom PCF8474 Beispiel siehe: \BASCOM-AVR\SAMPLES\I2C.bas Auszug : '-------- now write to a PCF8474 I/O expander ------- I2csend &H40 , 255 'all outputs high I2creceive &H40 , B1 'retrieve input Print "Received data " ; B1 'print it Gruß HansHans
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.