www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik adc funktioniert nicht


Autor: triple2448 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo

ich bekomme vom adc meines mega 32 keine vernünftgen werte
(immer 25(dez))

ich habe einen 10k Trimmer an adc0 und vref an 5V

initialisiert habe ich die register folgendermaßen(in asm):
ADMUX:  REFS1 und REFS2 = 0 gelassen(ext vref)
        ADCLAR auf 1 geschrieben(lese nur ADCH)
ADCSRA: ADEN anf 1 geschrieben, den rest gelassen

vor dem lesen: ->MUX0-4 auf 0 (ADC0)
               ->ADSC gesetzt und gewartet bis ADIF 1 ist
nach dem Lesen:->Wert von ADCH eingelesen, in ziffern umgerechnet
                 und über UART ausgegeben
                 (Umrechnung und UART funktioniert, da einzeln
                 getestet)
ist die Vorgehensweise richtig oder weis jemand warum in ADCH immer 25
steht??

Gruß

triple2448

Autor: Andreas Kassner (andi_k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast Du den Trimmer an ADC0 gehängt?
Einfach von +VCC durch den Trimmer auf den ADC0 oder von +VCC zum
Trimmer, einen Abgriff auf GND und den anderen auf ADC0 (einstellbarer
Spannungsteiler)?

MfG
Andi

Autor: triple2448 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein ende an vcc, das andere an gnd und den mittelabgriff an adc0
spannung also zwischen 0 und 5 V einstellbar
(nur zum test, später sollen TSL250 licht-spannungswandler dran)

was ist denn mit den eistellungen, sind die für eine einzelmessung ok?
jede messung soll explizit eingeleitet werden, keine automatische,
stetige abtastung

gruß
triple2448

Autor: Andreas Kassner (andi_k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stell mal ADPS2:0 in ADCSRA auf 128 (0b111) ein.
Läßt Du das auf 0 hast Du einen Prescaler von 2 was selbst bei 1MHz der
CPU zu schnell ist für richtige Messwerte.
Für exakte 8/10 Bit-Werte sollte der ADC mit max. 200KHz laufen.
Ansonsten zeige doch mal Deinen Code.

MfG
Andi

Autor: triple2448 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das wars dankefür die schnelle hilfe - hatte einen 16MHZ Quarz, was das
ganze nicht besser macht. werde wohl noch kondensator und spule an an
AVCC hängen

gruß

triple2448

Autor: Andreas Kassner (andi_k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ein Tip:
Anstatt nach dem setzen von ADSC auf das ADC-Flag zu warten, kannst Du
mit ADSC=0 im "Vorbeigehen" prüfen, ob eine Konvertierung fertig
ist.
Wenn ADSC = 1, dann das Auslesen und erneute Starten einer
Konvertierung überspringen ansonsten auslesen starten und am besten in
eine Variable schreiben (STS etc.) welche permanent oder im gewissen
Rythmus ausgegeben wird.
Das spart Dir viel Rechenzeit zum warten und es können andere Dinge
erledigt werden.

MfG
Andi

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.