www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PGA2310/CS3310 mit Bascom via SPI?


Autor: Alois Stanzinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wo ist den der Befehl um den Globalen Interrupt zu aktivieren.

Enable Interrupts

Mfg

Dirk

Autor: Alois Stanzinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk,

Enable Interrupts war schon drinnen, habe es vergessen
zu erwähnen. Trotzdem bewegt sich leider nichts :(

Alois

Autor: Maroc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Kai markus Tegtmeier (kmt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Kai markus Tegtmeier (kmt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jürgen Berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: NICO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Jürgen Berger (hicom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Nico,
du nutzt am besten die SPI Funktion des AVRs.
Hier mal die entsprechenden Stellen aus meinem
Programm:

SPI Funktion aktivieren:
;Enable SPI, Master, set clock rate fck/2

        ldi temp,(1<<SPE)|(1<<MSTR)|(0<<SPR1)|(1<<SPR0)
        out SPCR,temp

        ldi temp,(1<<SPI2X)
        out SPSR,temp

Hier das Senden von Werten an den PGA:
SPI_VolumeTransmit:  
                
;start transmission
  cbi PORTB,CS      ;set /CS    
  out SPDR,dmx_volume_r    ;transmit volume right

Wait_transmit_Right:
  sbis SPSR,SPIF
  rjmp Wait_transmit_Right

  out SPDR,dmx_volume_l    ;transmit volume left
        
Wait_transmit_Left:
  sbis SPSR,SPIF
  rjmp Wait_transmit_Left
  sbi PORTB,CS      ;disable /CS
  ret

Gruß
Jürgen

Autor: Nixweiss (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: NICO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen dank jürgen!

Autor: Jürgen Berger (hicom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Nico,
Melde dich falls du noch Fragen oder Problem hast.

Gruß
Jürgen

Autor: NICO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo jürgen
hab nach deinen Code gearbeitet
es bewegt sich gar nichts !hast du idee von potenielle Fehlerquellen 
liegen könnten?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jürgen Berger (hicom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jürgen Berger (hicom)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch die Schaltung

Autor: Thomas Otto (tarzanwiejane)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habt ihr den Mute-Eingang des PGA inaktiv geschaltet, also auf Vcc? 
Falls der auf Masse liegt oder floatet, gibt´s auch nichts zu hören.

Autor: NICO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Ding geht jetzt
Mute war auf Masse....
Danke

Autor: Thomas Otto (tarzanwiejane)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.