PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C Kommunikation PIC18F16Q41



gunzelg
05.11.2021, 17:42
Hallo
stehe grad auf dem Schlauch. Habe nen PIC18F16Q41, will mit dem über I2C einen RTC auslesen (RV-3029-C2). Nur habe ich keinen Schimmer, wie ich den Lesetakt erzeugen soll. Bei SPI ist das ja dokumentiert, dass du da ein dummybyte sendest, aber das geht ja eigentlich bei I2C nicht, hast ja nur eine Datenleitung (bidirektional). Hat schon mal einer mit dem PIC was i Bezug auf I2C gemacht?
Der Anfang ist ja einfach: I2C-Adresse senden, Page senden, die man lesen möchte, aber dann....???

Gruß
gerhard

RoboHolIC
07.11.2021, 18:57
Du musst ein NACK-Signal senden. Das wird ausgelöst durch das Setzen eines spezifischen I2C-Steuerbits im Controller. NACK bedeutet in der Regel, dass weitere Daten zu empfangen sind; der Controller erzeugt daraufhin die nötigen CLK-Signale am Bus, bis das letzte Retour-Bit des Datenbytes eingetroffen ist.

gunzelg
08.11.2021, 06:34
Hallo
danke für den Tipp, werds versuchen. Bin aber noch bei der Vorbereitung....

Gruß
gerhard

engineer
02.11.2022, 02:36
Die CLK-Signale sollten aber immer laufe. Was sicher passiert, ist dass der Master nicht mehr weitersendet, weil er wartet. Das ACK muss im Übrigen sehr rasch am Ende der Übertragung kommen und in das Bitraster passen, das vom Takt vorgegeben ist. Wenn der Slave das nicht hinbekommt, gibt es die Möglichkeit, dass er den Takt strechen, also blockieren kann (wenn der REC Chip das kann und der Master es verträgt) sodaß mehr Zeit ist.
Da muss man aber in das Datenblatt des RECEIVERS schauen.

gunzelg
02.11.2022, 10:14
Danke für den Tipp. Das Ding tut schon was es soll. Es ist nur so, dass Microchip immer wieder neue I2C-Engines baut, die zu denen älterer Controller nicht kompatibel ist. Hat ne Weile gedauert, bis ich das hinbekommen habe. Auch die Doku, die Microchip dazu bietet ist doch sehr mangelhaft. MCC war da noch am Hilfreichsten.

Gruß
Gerhard