PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem D/A Wandlung mit MEGA16



farmerjo
18.12.2005, 21:32
Hallo!
Folgendes Problem:
Ich habe an meinen MEGA16 eine R2R DA-Wandler angeschlossen über 15/30kOhm Widerstände und den Port C soll eine 8 bit Wandlung ablaufen. Als test hab ich ein kleines Program mit Bascom geschrieben, dass einen am AD-Wandler anleigenden Wert wieder über den DA-Wandler ausgibt.
Im Großen und ganze funktioniert das auch. Allerdings ist die Wandlung nicht linear und es werden bei 0 auch noch immer 0,7V ausgegeben.
Ich hab dann mal angefangen die einzelnen Pins nachzumessen und da sind immer wieder welche dabei die statt 0V und 4,96V zwischen 3,1V und 4,9V umschalten. Ich bin mir ziemlich sicher, dass keine Lötbrücken oder ein generreler Fehler im Aufbau des Wandlers vorliegen.
Ein absolut baugleicher Wandler läuft an meinem RN-MEGA8 ohnr Probleme. Dort sind aber auch alle Pins über die Status LEDs mit Masse verbunden. Ich hab so den verdacht das da was mit den Pullups/Pulldowns nicht stimmt. Muss ich die Pins einzeln noch extern auf ein Level ziehen oder kann ich die direkt mit den DA-Wandler verbinden?

Anbei noch der Quellcode, vielleicht ist da ja auch der Hund begraben. Würd mich freuen wenn mir jemand helfen könnte hab da heute schon ein paar Stunden reingesteckt ohne richtiges Ergebnis.



$regfile = "m16def.dat"

$crystal = 8000000

Config Porta = Input
Config Portd = Output
Config Portc = Output

Config Lcdpin = Pin , E = Portb.2 , Rs = Portb.0 , Db4 = Portb.3 , Db5 = Portb.4 , Db6 = Portb.5 , Db7 = Portb.6 ,
Config Adc = Single , Prescaler = Auto

Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Config Lcd = 16 * 4
Dim I As Integer
Dim V As Integer
Start Adc
Portd.1 = 1
Cls
For I = 1 To 20
Toggle Portd.0
Toggle Portd.1
Waitms 200
Next
Portd = 0
Do
V = Getadc(1)
V = V / 4
Cls
Lcd V
Portc = V
Waitms 250
Loop

End


Am Port D sind nur 2 LowCurrent LEDs angeschlossen die erst ein bischen blinken.
Sowohl der Mega 8 als auch 16 laufen mit dem interne 8Mhz Oszi.

darwin.nuernberg
18.12.2005, 22:06
Sind an Deiner AREF/AVCC/AGND entsprechende Siebglieder dran?
Laut Datenblatt sollten da etwas dickere Elkos und / oder Spulen mit ran,
um eine saubere Referennzspannung zu erzeugen.

Das könnte die Ursache der Schwankungen sein.

Nachzulesen im Datenblatt des Mega 16: http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf
Seite 209 ff.

darwin.nuernberg
18.12.2005, 22:07
Sind an Deiner AREF/AVCC/AGND entsprechende Siebglieder dran?
Laut Datenblatt sollten da etwas dickere Elkos und / oder Spulen mit ran,
um eine saubere Referennzspannung zu erzeugen.

Das könnte die Ursache der Schwankungen sein.

Nachzulesen im Datenblatt des Mega 16: http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf
Seite 209 ff.

farmerjo
18.12.2005, 22:16
An Areff ist kein RC-Glied dran Stütz elkos schon. Aber ich glaub nicht das es an der A/D Wandlung liegt die zeigt er ja auch sauber über das LCD an.

Gruß Johann!