Forum: Mikrocontroller und Digitale Elektronik Software Reset


von Pfeiffy (Gast)


Lesenswert?

Hallo,
ich habe Probleme mit meinem PCA9685 und möchte hier einen softwarereset 
ausführen. Im Datenblatt steht:

Software Reset I2C-bus address
The address shown in Figure 5 is used when a reset of the PCA9685 needs 
to be
performed by the master. The Software Reset address (SWRST Call) must be 
used with R/W = logic 0. If R/W = logic 1, the PCA9685 does not 
acknowledge the SWRST


-> ich hab keine Ahnung was ich machen muss :(( - ich denke ich muss 
irgendetwas in ein Regigster schreiben - aber in welches? Ich kann das 
aus dem Datenblatt (http://www.nxp.com/documents/data_sheet/PCA9685.pdf)
nicht erkennen.
Gruß
Pfeiffy

von Joe F. (easylife)


Lesenswert?

S.28 "7.6. Software Reset".

1 Datenbyte "0x06" an die Software-Reset Adresse schicken (write), dann 
Stop-Condition.

: Bearbeitet durch User
von Bernd (Gast)


Lesenswert?

Du sendest an die Adresse 0x00 das Byte 0x06, wie in Fig. 12 (Software 
reset7.6) gezeigt.

von Pfeiffy (Gast)


Lesenswert?

ok, ich schreibe 0b00000110 - aber wie bekomme ich die Reset-Adresse ist 
das 00h?
und wie schreibe ich die Stop-Condition

Pfeiffy

von Cyblord -. (cyblord)


Lesenswert?

Pfeiffy schrieb:
> ok, ich schreibe 0b00000110 - aber wie bekomme ich die Reset-Adresse ist
> das 00h?
> und wie schreibe ich die Stop-Condition
>
> Pfeiffy

Du hast doch ganz andere Probleme als einen Software-Reset auszuführen. 
Geh mal ein paar Schritte zurück und beschäftige dich mal mit dem I2C 
Bus an sich.

von Joe F. (easylife)


Lesenswert?

Beides musst du in der Dokumentation zur I2C Library, die du verwendest, 
zu dem Prozessor, den du verwendest, nachgucken.
Üblicherweise gibt es da Funktionen, um ein oder mehrere Datenbytes an 
eine I2C Adresse zu schicken, und da gibt man auch gleich an, ob der 
Master am Ende eine Stop-Condition erzeugen soll.

von Pfeiffy (Gast)


Lesenswert?

Hallo,
ich weiß, das ich mich nicht mit den Registern und schreiben auskenne, 
ich möchte den PCA benutzen

Cyblord -. schrieb:
> Pfeiffy schrieb:
>> ok, ich schreibe 0b00000110 - aber wie bekomme ich die Reset-Adresse ist
>> das 00h?
>> und wie schreibe ich die Stop-Condition
>>
>> Pfeiffy
>
> Du hast doch ganz andere Probleme als einen Software-Reset auszuführen.
> Geh mal ein paar Schritte zurück und beschäftige dich mal mit dem I2C
> Bus an sich.

ich bin Java-Programmierer und möchte mit pi4j einen pca9685 benutzen - 
dies hat auch funktioniert, doch nun ist irgend etwas falsch gelaufen 
und er bringt nichts mehr - also muss ich versuchen ihn irgendwie 
zurückzusetzen - ich weiß, dass ich dazu eigentlich mehr Erfahrung in 
den Registern haben müsste. Aber ich kann mich eben nicht in alles 
einarbeiten.

von Pfeiffy (Gast)


Lesenswert?

Joe F. schrieb:
> Beides musst du in der Dokumentation zur I2C Library, die du
> verwendest,
> zu dem Prozessor, den du verwendest, nachgucken.
> Üblicherweise gibt es da Funktionen, um ein oder mehrere Datenbytes an
> eine I2C Adresse zu schicken, und da gibt man auch gleich an, ob der
> Master am Ende eine Stop-Condition erzeugen soll.

ja, ich kann ja schreiben - aber ich weiß nicht an welche Adresse

von Pfeiffy (Gast)


Lesenswert?

ok, habe einen Beitrag übersehen. Ich schreibe nun:
device.write(0x00,(byte) 0b00000110);

nur die Stop_condition kann ich noch nicht

von Joe F. (easylife)


Lesenswert?

Ich gehe mal stark davon aus, dass die Stop-Condition automatisch 
generiert wird.

Edit:
und
device.write(0x00,(byte) 0b00000110);
ist vermutlich falsch, da write() doch nur das Datenbyte erwartet, und 
"device" bereits an eine I2C Adresse gebunden ist.

Du musst ein weiteres device erzeuten (z.B. "device_reset"), und diesem 
device die Adresse 0x00 zuweisen.
Dann
device_reset.write(0x06);

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