Forum: Mikrocontroller und Digitale Elektronik Treiber datenblatt


von Fraenki (Gast)


Lesenswert?

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

von Clemens L. (c_l)


Lesenswert?

> 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.

von K. S. (the_yrr)


Lesenswert?

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
Noch kein Account? Hier anmelden.