www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega88 ADU Problemme


Autor: tntbc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebes Forum Team.
Ich habe ein kleines Problem ich versuche schon seit zwei Tagen den ADC 
in gang zu gekommen aber meine versuche scheitern immer.

Vorab mein Code zum init. der ADU
lds temp1,ADMUX
  cbr temp1, (1 << REFS1)  //Interne AVcc 
     sbr temp1, (1 << REFS0)  
     sbr temp1, (1 << ADLAR)  
     cbr temp1, (1 << MUX3) //ADU 0 
     cbr temp1, (1 << MUX2)  
     cbr temp1, (1 << MUX1)  
     cbr temp1, (1 << MUX0) 
  sts ADMUX, temp1

  lds temp1, ADCSRA
     sbr temp1, (1 << ADEN) 
     cbr temp1, (1 << ADATE) 
     cbr temp1, (1 << ADIE) 
    sbr temp1, (1 << ADPS2) //128bit Pres.
     sbr temp1, (1 << ADPS1) 
     sbr temp1, (1 << ADPS0) 
  sts ADCSRA, temp1

nun lese ich die werte wie folgt aus.
lds temp1, ADCSRA
  sbr temp1, (1 << ADSC) // Conv. Starten
  sts ADCSRA, temp1 

adu_read_in_wait:
  lds temp1, ADCSRA
  sbrc temp1, ADSC
  rjmp adu_read_in_wait //Warten bis ferig
        ldi temp1, ADCL  
  ldi temp2, ADCH
        ... Auswertung 
Ich habe an derm ersten Kannel ein Poti dran der als Spannungsteiler 
arbeitet. Das Signal kommt auch am MCU an. Des weiteren habe ich laut 
Datenblatt als minimalbeschaltung ein 100nF am Aref Pin. AVcc hängt an 
Vcc.

Nun das Problem, ich kann an dem Poti drehen wie ich will es kommt immer 
der gleiche Wert aus der ADU...

Da ich jetzt schon so lange auf den Code gucke sehe ich warscheinlich 
den Fehler nicht mehr. Daher die Frage habt ihr eine Idee was schief 
laufen könnte???

Gruß TNTBC

Autor: Seppl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du lädst nicht den Inhalt des Registers nach temp1/temp 2, sondern der 
"Adresswert" vom ADCL/ADCH.
Du darft nicht "LDI" sondern mußt "LDS" schreiben, dann sollte es 
funktionieren.

LDI temp1,Konstante = lade sofort Konstante in temp1
LDS temp1,Speicherstelle = lade den Inhalt der Speicherzelle in temp1

Gruß

Seppl

Autor: tntbc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Seppl für die Antwort.

Das war sicherlich ein fehler aber leider nicht meine lösung ich habe 
immernoch das Problem. jetzt gibt er immer FF im High register aus.

Also immernoch das Problem :(

Gruß TNTBC

Autor: Seppl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das Includefile mit den Definitionen korrekt? Das File heißt 
"m88def.inc", wenn ich mich nicht irre.

Ich würde mal das Ergebnis der Wandlung zur Probe "rechts adjusted" 
(ADLAR-Bit=0) ausgeben, dann müßten die oberen 6 Bit = 0 gesetzt sein.

Ist der ADC0-Pin als Analog-Input definiert?

Gruß

Seppl

Autor: tntbc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Seppl,

ich danke dir für deine Unterstützung. ich habe  den fehler gefunden 
jedoch nicht im Programm. Auf der Platine war ein Kurzschluss zwischen 
GND und ARef. Daher konnte es nicht gehen. Aber jetzt geht alles. Also 
Danke noch einmal

Gruß TNTBC

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.