PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie PGA2310 Ansteuern



Tjorven
23.03.2013, 02:52
Hallo ich bin dabei eine Digitale Lautstärkeregelung zu bauen. Und nun hab ich den PGA2310 an SPI vom ATmega8 Angeschlossen und wollte mal fragen ob jemand den Schon mal angesteuert hat oder mir jemand helfen kann?:confused:

Sauerbruch
23.03.2013, 13:35
wollte mal fragen ob jemand den Schon mal angesteuert hat

Ich nicht - und Du? :-)

Aber ich hab´ schon einige andere SPI-Bausteine verwendet, und kann mir vorstellen, dass der PGA2310 nicht wesentlich anders zu handhaben sein sollte.

Wie weit bist Du denn schon gekommen? Gab´s irgendwelche konkreten Probleme?

Kampi
23.03.2013, 13:47
Hey,

schau mal hier:

http://www.ti.com/lit/ds/sbos207b/sbos207b.pdf

Auf Seite 8 steht genau wo welche Bits in den übertragenen Bytes stehen.
Im Grunde musst du nur die Daten in den Chip rein schieben ;)

Tjorven
25.03.2013, 23:32
Ok schon mal vielen dank
Ich habe bisher leider noch nichts mit SPI angesteuert und deshalb nur sehr wenig Ahnung davon (Hab nur in der Bascom Hilfe ein bisschen geguckt).
Wäre super wenn mir das jemand erklären könnte oder mir irgend ne gute Seite zeigen wo das gezeigt wird. Und dann verstehe ich den ZCEN Eingang vom PGA2310 noch nicht so ganz. Also ich weiß nur das er mit eine High aktiviert wird und das dafür da ist um irgend welche Störungen beim verändern der Lautstärke zu verhindern. Stimmst ??? Ich würde gerne wissen ob man ihn braucht und wenn, wann man ihn aktivieren/deaktivieren soll.

Kampi
26.03.2013, 06:17
Hey,

bzgl. Zero Crossing (hoffe richtig interpretiert):
Der ist eigtl. nur wichtig wenn du Audio bzw. Wechselspannungen mit negativen Halbwellen verstärkst.
Das Zero Crossing sorgt dafür, dass eine neue Verstärkung "sanfter" auf das Signal gegeben wird, nämlich erst dann wenn zwei Nulldurchgänge erkannt wurden oder eine Zeit von 16ms vergangen ist.
Dadurch wird die Verstärkung erst beim Nulldurchgang umgeschaltet und du bemerkst das nicht am Audio Signal. Stell dir mal deine Musik vor wo die Musik läuft und mitten im Signal ist auf einmal die zweite Hälfte lauter als die erste Hälfte. Um dies zu vermeiden, verwendest du Zero Crossing.

Zum Thema SPI:
Schau mal hier nach:

http://avrhelp.mcselec.com/index.html?using_the_spi_protocol.htm

Vielleicht hilft dir das weiter.
Prinzip ist recht einfach:

CS -> low
SPI Clock an
SPI Daten raus shiften (vom Master und Slave)
SPI Daten empfangen (Master und Slave)

Stell dir SPI wie eine kreisförmige Wasserleitung vor. Mit jedem Takt wird das Wasser ein Stück bewegt. So im Prinzip ist das mit den Daten auch (sehr einfach ausgedrückt).

Tjorven
26.03.2013, 09:50
Danke damit kann ich schon so einigermaßen was anfangen

Sauerbruch
26.03.2013, 14:32
...und der Rest ist eigentlich auch ganz einfach:

Wenn Du eine Software-SPI-Schnittstelle verwendest, musst Du als erstes festlegen, welcher Pin des Controllers Clock, Data Out, Data In (in diesem Fall eigentlich nicht notwendig) und Chip Select sein soll. Danach wird die Schnittstelle initialisiert:



Config Spi = Soft , Din = Pinb.0 , Dout = Portb.1 , Ss = Portb.2 , Clock = Portb.3 (Pins sind nur Beispiele!)
Spiinit


Mit dem Spiout-Befehl kannst Du dann Bytes über die Schnittstelle an den empfangenden Baustein senden. Der Befehl enthält daher immer en Namen der Variablen und die Anzahl der Bytes. Ein einzelnes Byte zu senden sähe so aus:



Dim var as Byte
...
...
var = .... (Binärer oder dezimaler Wert des zu sendenden Bytes)
Spiout var, 1


Sollen es mehr als 1 Byte sein (wie in Deinem Fall, wo ja für jeden Kanal ein eigenes Lautstärke-Byte gesendet werden muss), legst Du ein Array an:



Dim var(2) as Byte
...
...
var(1) = .....
var(2) = .....
Spiout var(1) , 2


Hier werden zwei Bytes gesendet, beginnend bei var(1).

Tjorven
26.03.2013, 18:34
Ok jetzt bekomme ichs auf jeden fall hin :)

Vielen Dank :)