-         

Ergebnis 1 bis 4 von 4

Thema: Problem D/A Wandlung mit MEGA16

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.02.2004
    Alter
    35
    Beiträge
    171

    Problem D/A Wandlung mit MEGA16

    Anzeige

    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.

    Code:
    $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.

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    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/p...ts/doc2466.pdf
    Seite 209 ff.
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    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/p...ts/doc2466.pdf
    Seite 209 ff.
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.02.2004
    Alter
    35
    Beiträge
    171
    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!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •