Hallo zusammen Bevor ich ein Register schreibe, möchte ich zuerst einmal wissen, wie der Inhalt des Registers aussieht. Hier ist das Datenblatt: https://www.nxp.com/docs/en/data-sheet/PCA9956B.pdf Es steht hier nur, dass ich auch lesen kann, ohne das Register zuvor beschrieben zu haben. Wenn ich das mache, dann lese ich gerade das Register aus, das zuletzt beschrieben wurde, auf den also noch der letzte Pointer zeigt. Fig. 18, Seite 35 Angenommen ich möchte das Register LEDOUT0 lesen, wie bewerkstellige ich das nun, wenn ich laut Bus transactions Fig. 18, S. 35 keine Registeradresse angeben muss? Nur Slaveaddress und Daten? Ich verstehe das leider nicht. Kann jemand weiterhelfen? Grüsse
> In this case, the data sent out is from the register pointed to by the > control register (written to during the last write operation). Das heißt, du schreibst die Register-Adresse (ohne Auto-Increment), und machst dann ReSTART (oder STOP und später START) für das Lesen.
Fraenki schrieb: > Angenommen ich möchte das Register LEDOUT0 lesen zwei Möglichkeiten: 1: Du hast zuvor LEDOUT0 gelesen/geschrieben und auto Inkrement ist aus oder du hast zuvor das Register VOR LEDOUT0 gelesen/geschrieben und autoinkrement ist an -> du schreibst nur Device Address + Read Bit, und ließt dann die Daten ein (sendest dabei ein ACK), beendet wird durch NACK + STOP. 2: Die Adresse /Mode im Control register ist nicht durch vorheriges lesen/schreiben richtig gesetzt: -> du schreibst Device Address (cleared Read bit), dann schreibst du das Control register, nach dem ACK sendest du ein RESTART, dann nochmal Device Address + Read Bit, jetzt ließt du wieder Daten bis du mit NACK + STOP beendest. Du musst nur dann keine Registeradresse angeben, wenn du die beim letzten schreiben/lesen (+ autoinkrement wenn es an ist) verwendete nochmals benutzen willst. Sonst gilt Fig17. direkt da drüber. Fraenki schrieb: > Es steht hier nur, dass ich auch lesen kann, ohne das Register zuvor > beschrieben zu haben. kannst du, ergibt wenig Sinn. Guck ins Datenblatt, da steht drin welchen Wert das Register bei Initialisierung hat. für LEDOUT0 ist das 0b10101010, oder für je LDR0-3 0b10, oder übersetzt PWMx bzw. PWMALL kontrolliert die Helligkeit jeder LED einzeln.
:
Bearbeitet durch User
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.