-
-
Erfahrener Benutzer
Roboter Genie
Hallo Erik,
Du musst auf dem Slave die Abfrage "if (!I2CTWI_readBusy) " eher als Schleife realisieren, die wartet bis keine Lesezugriffe mehr erfolgen. Sonst kannst Du hier nicht sicher sein, das der Wert überhaupt jemals geschrieben wird.
Also in der Art:
- Frage ab ob das Mikrofon etwas detektiert hat.
- WENN es etwas detektiert hat, setze ein Flag und warte solange bis schreibzugriff möglich ist.
Das gilt auch für den umgekehrten Fall, also wenn das Register auf 0 gesetzt werden soll.
Und vor allen Dingen wird bei Deinem Slave Code das Register fast sofort wieder auf 0 gesetzt - denn der Peak wird nur einmal kurz detektiert.
Du musst also zusätzlich den Code so auslegen, dass der Slave den Wert zurücksetzt sobald der Master das entsprechende Register gelesen hat.
Schau Dir hierzu auch mal das Beispielprogramm "RP6Base_I2CSlave" an - ist zwar für den Controller auf dem Mainboard, ist vom Prinzip her aber ähnlich. Da wird genau das gemacht (Interrupt flag zurücksetzen usw.)
MfG,
SlyD
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen