Hi Leute,
könnt ihr mir ein Beispiel Program zu schicken,
ich habe nämlich keinen Schimmer wie ich mit einem AT-Mega 16 einen 12Bit-DAC (DAC7611) professionell ansteuere.
Datenblätter
AT-Mega16
http://pdf1.alldatasheet.com/datasheet-pdf/view/78532/ATMEL/ATmega16.html
12-DAC 7611:
http://pdf1.alldatasheet.com/datasheet-pdf/view/56629/BURR-BROWN/DAC7611.html
Vielen Dank!
Hallo,
ich habe auch dies Problem.....wer kann uns helfen..?
Majid
Hab mittlerweile das Problem gelöst.
Primitiv, aber es funktioniert mit jedem DAC (8Bit, 10 Bit...)
Wäre aber schneller gegangen, wenn sich jemand bereit erklärt hätte uns zu helfen.
:-((((( bin zu tiefst entäuscht!!!!!!
Funktionsweise:
8Bit-DAC bedeutet soviel, dass wenn ich dem Baustein seriell 8 Nullen (0b00000000 bzw. 0x00) zu schicke, am Ausgang 0V anliegt.
Sende ich dem DAC-Baustein 8 Einsen (0b11111111 bzw. 0xFF), so liegt am Ausgang die "Versorgungsspannung" z.B. 5V an.
8-bit: 2 hoch 8 = 256 (12Bit in 4096)
Ein 8-bit DAC kann somit die Spannung von 5V in 256 Teilen zerlegen bzw. darstellen.
5V / 256 = 0.020V -> 20mV Schritte (0b00000001 = 20mV am Ausgang)
Überlegung:
Ich muss also dem DAC Baustein irgendwie die einzelnen Bits "1" oder "0" zuschicken und dass 12 mal für 12Bit.... schaut euch einfach den Quellcode an
Pin Beschreibung:
SDI = Datenleitung, was hier anliegt "1" oder "0" wird mit jedem Takt in das Shift Register geschoben
CLK = Taktleitung um die SDI Zustände in das Shift Register zu schieben
CS = Liegt dieser Pin auf High, funktioniert der Takt-Pin CLK nicht, damit können mehere DACs geziehlt angesprochen werden
LD = Load; Läd die im Shiftregister enthaltene Info (bits) in das DAC Register das die Ausgangsspannung definiert
CLR = Setzt das DAC Register auf Null
;Funktionsweise:
;---------------------------------------------------------------------------------
;- CLR auf High (Festverdrahtung)
;- Loadpin (LD) auf Low setzten, DAC Ausgang „aus“
;- CS auf Low um den DAC-Chip auszuwählen
;- Bits im Register (temp/temp2) mit 0 oder 1 vergleichen und je nachdem SDI setzten.
;- CLK an/aus für SDI Übernahme
;- Bits im Register (temp/temp2) schieben um das nächste Bit mit 1 oder 0 zu vergleichen und auszugeben
;- Loadpin (LD) auf High, für die Darstellung der Bits am Ausgang als Spannung (Volt)
;DAC Steuerleitungen
;---------------------------------------------------------------------------------
.equ SCL = PC0 ;Clock-Pin
.equ SDI = PC1 ;Daten-Pin
.equ LOAD = PC2 ;Daten ins DAC-Register laden
.equ CS = PC3 ;Chip-Select DAC1/2 -Auswahl (aktive Low)
;Register
;---------------------------------------------------------------------------------
.def temp = r16
.def temp2 = r17
.def zaehler = r18
DAC1_out_12Bit:
;---------------------------------------------------------------------------------
ldi temp2, 0b00001111 ; R16 + R17 => 12 Bit
ldi temp, 0b11111111 ; R17 => 8Bit
cbi PortC, Loadpin ;deaktiviere Übernahme der Daten aus dem DAC Register
cbi PortC, CS
mov R1, R16 ;kopiert den Inhalt von R16 in R1
;Schleife1
;---------------------------------------------------------------------------------
ldi R18, 0x04 ;Oberes Nibble des Registers R16 0b00001111
loop_4Bit:
sbrc R9, 3 ;Überspringe wenn bit 3 Null "0" ist
sbi PortC, SDI ;“1“ an SDI
sbrs R9, 3 ;Überspringe wenn bit 3 Eins "1" ist
cbi PortC, SDI ;“0“ an SDI
; SCL Takten
sbi PortC, SCL ;”1” an SCL
cbi PortC, SCL ;”0” an SCL
lsl R1 ;Inhalt des Registers R1 um 1 Stelle nach links schieben
dec zaehler ;Zählregister 0x04 - 1
brne loop_4Bit ;Springe wenn nicht „0“
;Schleife2 das gleiche noch mal, nur mit temp2
;---------------------------------------------------------------------------------
mov R1, temp2
ldi zaehler, 0x08
loop_8Bit:
sbrc R9, 7
sbi PortC, SDI
sbrs R9, 7
cbi PortC, SDI
sbi PortC, SCL
cbi PortC, SCL
lsl R9
dec zaehler
brne loop_8Bit
;---------------------------------------------------------------------------------
cbi PortC, Load ;Daten die ins Shiftregister getaktet wurden,
sbi PortC, Load ; in das DAC-Register übernehmen
ret
Es gibt bestimmt eine bessere Lösung, aber bis dahin ;-)
Viel Spass!
danke,
es war sehr hilfreich.
bis dann
majid
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.