Hallo ihr alle, ich möchte von einem Controller (übrigens PIC18F2620) mehrere Bytes zu einem anderen schicken. Dabei soll der der sendende Controller der Master sein. Dabei sendet der Master (bisher) die Slave-Adresse und danach alle Datenbytes, der Slave ist auf "interrupt on address match" eingestellt. Nun meine Frage: Wie muss der Slave die folgenden Bytes erkennen, nachdem er den Adressinterrupt erhalten hat? Wird bei IIC automatisch mit jedem Byte ein startkondition gesendet, auf diese könnte ich einen Interrupt erzeugen lassen? Ich hoffe, einer von euch erbarmt sich und hilft mir weiter, auch wenn hier so viele Fragen zum Thema gestellt werden. Vielen Dank im Voraus, Bernhard
>Wie muss der Slave die folgenden Bytes erkennen, nachdem er den >Adressinterrupt erhalten hat? Gar nicht (s.u.) > Wird bei IIC automatisch mit jedem Byte ein startkondition gesendet, >auf diese könnte ich einen Interrupt erzeugen lassen? Es wird eine Startcondition gesendet, danach_ _ein Adressbyte und bis zu r Stopcondiditon sind alle Bytes für diesen einen Slave. Der I²C wird doch in den meisten Datenblättern gut erklärt, wozu also die Frage ? :(
Zuerst mal danke für deine schnelle Antwort. Also bleibt mir scheinbar nichts anderes übrig, als nach dem Adressinterrupt den Puffer zu pollen. >> Der I²C wird doch in den meisten Datenblättern gut erklärt In den Datenblättern und, zumindest den 5 Erstbesten, ANs der PICs IMHO nicht. Viele Grüße, Bernhard
Dann guckst du mal auf der Philips Homepage, die haben I2C erfunden, und haben eine wirklich gute allgemeine Doku. Ralf
Nein, der PIC erzeugt für jeden Zustand einen Interrupt. Für jedes Zeichen gibt es einen Start (oder auch repeated Start), ein Byte, ein ACK-Bit und einen Interrupt, der ausgewertet wird. In der ISR fragt man dann, ob Adresse oder Daten übertragen wurden und speichert die Daten ab. Nix Polling !
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.