Forum: Mikrocontroller und Digitale Elektronik PT2322-s ansteuerung mit I²c (arduino)


von DAVID B. (bastler-david)


Lesenswert?

Hallo
Wie genau kann ich die Funktionen ansprechen die im Datenblatt genannt 
werden?
Konkret geht es mir um zb gesamt Lautstärke.

Das starten wird ja mit:
  Wire.begin();
  Wire.beginTransmission(0x88);
  Wire.write(11000111);
  Wire.endTransmission(0x88);
  int rtnCode = audio.init();

Gemacht (hoffe ich).

Aber wie genau teile ich dem Ic jetzt die wunschwerte mit ?
Mein xxxter versuch zeigt leider immer noch keine Wirkung.

Versuch von leiser machen beispiel.

if (3 == LOW) {
    Wire.beginTransmission(0x88);
    Wire.write(0xd0 & 0x0f);
    Wire.endTransmission(0x88);
    lcd.setCursor(14, 1);
    lcd.print("+1");
  }

Wie wird der befehlt (welcher überhaupt) Richtig gesendet ?
http://labkit.ru/userfiles/file/documentation/Audioprocessor/pt2322.pdf

Die Verwirrung wird noch größer was hat es mit den G3/K3/H3 oder 
G2/K2/H2 von seite 10 des Datenblatte.

Wenn jemand mir das kurz (auf deutsch) erklären könnte wäre es super.
Vielen Dank

von pegel (Gast)


Lesenswert?

Wartest du auch mindestens die 300ms nach dem Reset bevor das erste 
Kommando gesendet wird?

von DAVID B. (bastler-david)


Lesenswert?

ja sind sogar wegen Display 3 sek :-)
Aber danke für den tipp.

von pegel (Gast)


Lesenswert?

Ich kenne mich mit dem Ardu* nicht aus, aber sind:
Wire.write(11000111);
wirklich bits, oder sind das 11 Millionen?

von Joachim B. (jar)


Lesenswert?

pegel schrieb:
> Ich kenne mich mit dem Ardu* nicht aus, aber sind:
> Wire.write(11000111);
> wirklich bits, oder sind das 11 Millionen?

wenn das bits sein sollen fehlt 0xb davor?

von pegel (Gast)


Lesenswert?

Joachim B. schrieb:
> 0xb davor

Hm. 0xb..... oder 0b11000111 ?

von DAVID B. (bastler-david)


Lesenswert?

oh habe gar nicht mehr gewusst das ich so ein post hier schon gemachte 
hatte oh...
Tut mir leid ganz vergessen.

Ich konnte das Problem so halbwegs lösen(eingrenzen)
der 2322 wird zum starten mit 0x88 angesprochen und nach den 300 ms 
warte zeit ist dieser nur noch mit 0x44 erreichbar wieso auch immer aber 
jetzt scheint es zugehen zumindest das manuelle ansprechen.
die libary arbeitet wie auch immer weiter mit 0x88) ich muss ohne 
library aber mit 0x44) werte senden.
habe mal ein test geschrieben wo bass wechselt (+14 +0 -14)

Wire.beginTransmission(0x44);
 Wire.write(0x90 | 0x08);
 Wire.endTransmission();
 delay(2000);
 Wire.beginTransmission(0x44);
 Wire.write(0x90 | 0x0F);
 Wire.endTransmission();
  delay(2000);
   Wire.beginTransmission(0x44);
 Wire.write(0x90 | 0x00);
 Wire.endTransmission();

ergibt zwar kein sinn FÜR MICH aber es geht.(verwundert)
ich hoffe das löst jetzt mein Problem dauerhaft.
Danke

von Michael U. (amiga)


Lesenswert?

Hallo,

das IC hat die I2C-Adresse 0x44, I2C-Adressen sind 7Bit.
Die landen dann in Bit 7...Bit 1, Bit 0 entscheidet, ob gelesen (bit 0 = 
1) oder geschrieben werden soll (Bit 0 = 0).

Dein Vorgehen ist also völlig richtig, die Lib schiebt die Adresse um 
ein Bit nach links (0x88) und setzt Bit 0 auf 0 (0x88) für Schreiben 
oder auf 1 (0x89 für Lesen.

Gruß aus Berlin
Michael

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.