Forum: Mikrocontroller und Digitale Elektronik DAC 8512, DA-Wandler Problem


von Martink11 M. (Firma: google) (martink11) Flattr this


Lesenswert?

Hallo C-Kollegen und Elektroniker,

ich habe ein nicht unlösbares Problem.

Bin eigentlich ein fortgeschrittener Anfänger was C angeht.
Habe einen at90128can auf einem Experimentierboard.
Auf dem selben Board ist ein DA-Wandler DAC8512 den ich ansteuern muss.

Hier ist das Datenblatt:
*****************************************************
http://www.datasheetcatalog.org/datasheet/analogdevices/42749849DAC8512_a.pdf
*****************************************************

mein Frage:
Hat schon jemand Erfahrungen mit dem 8512.
Ich denke das Ding wird über I2C angesteuert, habe aber damit wenig 
Erfahrung.

Ich denke mal als 1. muss man den Chip-Select CS aktivieren.
Dem Timing-Diagramm (Figure1) zufolge muss man einen Wert über SDI 
schreiben und das dann Laden mit Load LD, oder.
Danach löschen mit Clear CLR VOUT.
Was spielt der Clk für eine Rolle, muss der immer syncron mitlaufen, und 
was ist der Clk-Pin??

so genau weis ich das auch nicht und jetzt bin ich eigentlich am 
ende.....


vielleicht kann mir einer ein paar nützliche Tipps geben...??!!!

Danke für jede Hilfe!!!!!!!!!!!!!!!!!!

von Michael U. (amiga)


Lesenswert?

Hallo,

Martin 567 schrieb:
> Auf dem selben Board ist ein DA-Wandler DAC8512 den ich ansteuern muss.

> mein Frage:
> Hat schon jemand Erfahrungen mit dem 8512.
Nö, hane bisher nur den DAC7512 genutzt.

> Ich denke das Ding wird über I2C angesteuert, habe aber damit wenig
> Erfahrung.
Schau doch ins Datenblatt...
Ist ein normales SPI, mit I2C ist da nichts.

> Ich denke mal als 1. muss man den Chip-Select CS aktivieren.
Ja, sonst fühlt er sich nicht angesprochen.

> Dem Timing-Diagramm (Figure1) zufolge muss man einen Wert über SDI
> schreiben und das dann Laden mit Load LD, oder.
Richtig. Die 12 Bit reinschieben, der Chip übernimmt mit der stegenden 
Flanke von SCK.
Load übernimmt dann die Daten aus dem Shiftregister in das DAC-Register 
und setzt damit die Ausgangsspannung.

> Danach löschen mit Clear CLR VOUT.
Naja, wenn die Ausgangsspannung 0 sein soll...
Das macht schlißlich CLR, es setzt das DAC-Register und damit die 
Ausgangsspannung auf 0...

> Was spielt der Clk für eine Rolle, muss der immer syncron mitlaufen, und
> was ist der Clk-Pin??
Das habe Schiebrigszer so an sich, woher sollte sonsz der DAC wissen, Du 
das nächste Bit an SDI anliegen hast?
>
> so genau weis ich das auch nicht und jetzt bin ich eigentlich am
> ende.....

Naja, wohl eher am Anfang. ;-))

Gruß aus Berlin
Michael

von Martink11 M. (Firma: google) (martink11) Flattr this


Lesenswert?

Servus,

hab aber noch ne andere Frage:

was muss ich eigentlich an den CLK-Pin ranhängen
  1. den Quarz (10 MHz)
  2. einen selbsterzeugten impuls mithilfe eines timers

wie sende ich überhaupt einen wert über SDI???


@Michael:
könntest du mir mal so eine kleine erklärung zum 7512 geben (evtl. 
codebeispiel...)
ich denke mal der SYNC ist so ähnlich wie mein LOAD
und der DIN so ählich wie mein SDI

*****
noch ne andere allgemeine Frage:
diese SPI-Schnittstelle kann man die mit 4 ganz normalen Pins 
realisieren oder braucht man da spezielle pins des Prozessors?
*****


wäre nett bin dankbar für jede antwort und Hilfe

danke und merci Martin!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

von Flori (Gast)


Lesenswert?

Hallo Martin,

also im datasheet gibts das Kapitel "Serial Peripheral Interface – SPI" 
- sehr empfehlenswert (wie üblich mit brauchbaren Codebeispielen).

Der Controller nimmt Dir eigentlich alles ab, auch die clk-Generation, 
Du musst ihm nur sagen wie groß der Teiler zum Takt sein soll...

Gruß,
Flori

von Martink11 M. (Firma: google) (martink11) Flattr this


Lesenswert?

Servus

ich habe jetzt schon einiges geschnallt aber noch nicht alles:


***wichtig:
-Ist es egal welche pins ich als SPI schnittstellen-pins auswähle???
***

-Wie sende ich daten auf den SDI-Pin des DA-Wandlers?
aus Datenblatt: 12bits
                (SDI packed byte 1 “0,0,0,0;MSB,DB10,DB9,DB8”
                 SDI packed byte 2 “DB7,DB6,DB5,DB4;DB3,DB2,DB1,DB0”)

-muss ich quasi an dem CLK pin nur einen prescaler (vorteiler) 
einstellen?

-noch dazu muss ich sagen das das codebeispiel im Datenblatt mir 
eigentlich nicht viel bringt, da ich ja in C programmiere und ich dieses 
Assembler oder was auch immer nicht verstehe

das wars erstmal
danke martin!!!!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> -Ist es egal welche pins ich als SPI schnittstellen-pins auswähle???
Wenn du Software-SPI macht, kannst du die Steuersignale und Daten 
ausgeben, wo du willst. Bei einer Hardware-SPI sind feste Pins 
vordefiniert.
SPI braucht 4 Pins:
MasterOutSlaveIn MOSI,
MasterInSlaveOut MISO,
SpiClock SCLK  und den
SlaveSelect SS.

> -muss ich quasi an dem CLK pin nur einen prescaler (vorteiler)
> einstellen?
Nein, grob gesagt gibst du mit dem SS einem Slave zu erkennen, dass es 
losgeht. Dann gibst du am MOSI ein Bit aus und zappelst anschliessend 
mit dem SCLK herum. Damit wird das Bit übergeben. Zum Schluss 
deaktivierst du den SS und beendest damit die Übertragung.

Du solltest dich mal vom DA-Wandler lösen und das Thema SPI grundlegend 
ansehen. Wenn du das verstanden hast, ist die Kommunikation mit dem DAC 
einfach.
http://www.mikrocontroller.net/articles/Serial_Peripheral_Interface
http://www.lothar-miller.de/s9y/categories/17-SPI

von Martink11 M. (Firma: google) (martink11) Flattr this


Lesenswert?

hallo

also ich hab mir das jetzt schon ein bisschen durchgelesen

aber ich würde wenn schon den software-spi benötigen da ich den 
AD-wandler nicht mehr umpositionieren kann, (der ist auf einer geätzten 
platine drauf)

würde es gehen wenn ich den ad-wandler manuell zum laufen bringe. (ohne 
spi)

also wenn ich diese 12 Bits manuell rein schreibe

erstes  Bit an SDI und einen Clock-Durchgang (High & Low) per pin 
schalten
zweites Bit an SDI anlegen und .......

... und so weiter


könnte doch gehen dann brauch ich kein spi??

danke für die vielen antworten

von Martink11 M. (Firma: google) (martink11) Flattr this


Lesenswert?

Servus

also an alle die "Lösung" die ich als letztes gepostet habe.
funktioniert!!!!!!!!

wenn ich z.B. 3V in Binär umwandle und dann so eingebe wie oben 
beschrieben. hab ich genau 3,005 V am Ausgang

bin sehr zufrieden

danke an alle die mir auf irgendeine weise helfen wollten!

merci martin!!!!!!!!!

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.