Hallo Leute,
ich entwickle gerade mit Bascom eine SPI Steuerroutine
zur Ansteuerung eines "digitalen" Potis (Texas Instruments
PGA2310 bzw. CS3310 von Crystal). Das ganze soll via SPI
ablaufen. Leider bewegt sich der PGA auf Befehl von meinem
Atmega16 kein Stück :( Da ich noch relativ neu in Bascom
bzw. uC Programmierung bin, bitte ich um eure Hilfe. Vielleicht
habe ich ja etwas falsch gemacht. Die Verbindung von Atmel
zum PGA ist wie folgt:
SDI = MOSI
CS = PortA.0
CLK = SCK
ZCEN/Mute = PortA.1/PortA.2
Folgende Zeile wird zum SPI Init verwendet:
Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = Yes ,
Polarity = Low , Phase = 0 , Clockrate = 4
Dann geht's weiter mit
Totalvol = &B10000000 (Datentyp WORD)
CS vom PGA auf LOW setzen (da invertierend)
SPIINIT
Spiout Totalvol , 1
CS vom PGA auf HIGh zurücksetzen
Hat jemand vielleicht ein Stück funktionierenden Code oder eine
Idee was ich da falsch gemacht haben könnte?
Grüsse,
Alois
Hallo,
ich versuche gerade das selbe mit einem ATmega8.
Mir ist aufgefallen, dass du, wenn ich es richtig verstanden habe
die Variable Totalvol festlegst und mit Binär 10000000 beschreibst.
Diese sendest du dann an den Chip über den SPI. Ich habe im Datenblatt
gelesen, dass der PGA 2310 ein 16BIT WORD benötigt,
je 8 Bit pro Kanal. Vieleicht hilft dir das weiter bei deinem Problem.
Vieleicht liegt es aber auch an der Art der übertragenen Daten, ich
wurde aus der Syntax laut Datenblatt nicht sonderlich schlau.
Schönen Abend noch,
Maroc
Ich habe so etwas mal mit einem CS3310 in C realisiert. Was genau ist am
Datenblatt unverständlich? Der Ablauf gestaltet sich so:
Ruhezustand: CS auf 1, CLK egal
1. CS und CLK auf 0 ziehen
2. Datenbit bereitstellen, rechter Kanal zuerst, MSB zuerst
3. Datenbit wird auf steigende Flanke von CLK übernommen
4. das Ganze 16 Mal wiederholen
5. CS wieder auf 1 setzen ==> Daten werden übernommen
Ich kenne mich nicht so in BASCOM aus, daher kann ich nur die Parameter
aus dem Atmel Datenblatt wiedergeben:
CPHA=0 (clock phase)
CPOL=0 (clock polarity)
DORD=0 (MSB first)
Ein Schaltplan wäre zur Fehlersuche nicht schlecht... und eventuell
der ganze Code, so kann man Fehler bei der Initialisierung erkennen.
Greetz
KMT
By the way, es könnte am /SS-Pin (bzw. beim Mega32 PB.4) liegen. Ist der
bei Euch als Output konfiguriert? Wenn er als Input geschaltet ist und
nicht angeschlossen ist, könnte das zu Fehl- oder Garnicht-Funktionen
führen.
KMT
Hallo,
ich habe mit dem PGA2311 kürzlich einen DMX Lautstärkesteller
realisiert. Ansteuerung des PGA erfolgt über die SPI Schnittstelle.
Also bei Interesse.. (Code ist in Assembler)
Jürgen
Allo jürgen hab gelesen dass du mit dem pga2310 zu tun gehabt hast!
bin gerade dabei einnen über atmega 88V (ATMEL) controllierten PGA2310
zu programmieren.
Bin seit einem Monat bei assembler, habe die basics erlernt
dennoch weiss ich nicht so an welcher Stelle ich mit den programmieren
anfangen soll , der code soll in Assembler geschrieben werden.
kannst du mir dabei helfen wäre nett!
Vielleicht ist Dein SPI zu schnell. Versuch´s doch mal in Software mit
Pintoggeln und halte Dich genau an das Datenblatt, was die
Minimaltimings angeht.
Hallo Nico,
Hardware richtig aufgebaut? Ich habe mal meine Schaltung angehängt.
Ansonsten, läuft dein SPI richtig? Lässt sich im Simulator recht gut
kontrolieren.
@Travel Rec. Glaube nicht, dass das SPI zu schnell ist. Ich arbeite
auch mit fck/2 bei 12Mhz - ohne Probleme, der PGA läuft bis 6Mhz.
Gruß
Jürgen
@Juergen Berger
Ich habe da auch Probleme den PGA2311 anzusteuern. Beschaltung ist wie
bei dir, allerdings mit nem AtMega16 bzw 644(beim 644 mit geaenderten
Registernamen). Der ganze Strutz laeuft sauber durch, aber der PGA2311
zeigt keinerlei Reaktion.
Leider hab ich kein Oszi um mal zu schauen was die Leitungen da so
veranstalten.
cu Tarzanwiejane
Der Mute Eingang haengt an einem Controllerpin. Damit kann ich schoen
aus und einschalten. Das funktioniert. Das einzige was nicht
funktioniert ist die SPI Geschichte. Ich werde mal nen anderen avr an
den SPI-Out haengen und ausgeben was der fuer Daten kriegt. Vielleicht
komme ich ja so weiter.
Bei mir ist der Chip initial auf voller Lautstaerke auch wenn das
Datenblatt was anderes behauptet. Ist das normal? es Sieht auch so aus
als ob Chipintern +5V Analog mit +5V digital verbunden sind. Zumindest
kriegt mein avr jetzt auch Spannung wenn ich sein Netzteil abschalte.
Ist das auch normal? Eventuell 2311 spezifisch? der 2310 hat ja 15v da
sollte dem wohl definitiv nicht so sein.
cu Tarzanwiejane