mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Warum zählt mein AD-Wandler nicht richtig?


Autor: Weihnachtsmann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe auf meinen STK-Kit mit ATMega ein Poti angeschlossen und will
die Spannung auf ADC0 messen.
Wenn ich das Poti drehe zählt der aber nicht rauf sondern zeigt einfach
sonst einen Mist an. Ich gebe nur den Low Bereich auf LEDs aus. Mit
allen anderen Microcontroller(kleineren) habe ich das fertig gebracht
nicht aber mit dem ATMega16. Habe ich irgendwo einen Offet oder
irgendwas nicht berücksichtig?

Gruss

Weihnachtsmann

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste mal wie du den Poti angeschlossen hast.

Tobi

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zwischen GND und VTG (STK500 Board) und schleifer auf PA0

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass du den ADC zu oft ausliest? Denn deine Mainloop hat
keine "Bremse".

...

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Setz das Bit ADLAR in ADMUX auf 1, lies das high-Byte aus, invertiere es
und gib es an den LED´s aus.

MfG
Andi

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Danke für die Hilfe

Also Ich habe jetzt eine Warteschleife eingebaut das hat nicht
geholfen. Erste nach dem ich das ADLAR-Bit gesetzt habe geht es.

Mein Englisch ist nicht so gut. Verstehe ich es richtig dass mit diesem
Bit "ADC Left Adjust Result" die "Linke" also niederwertigen Bit
zuerst angezeigt werden?


Gruss

Weihnachtsmann

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag

Leider habe ich festgestellt dass es doch nicht ganz geht.

Hänge ich den AD-Eingang auf GND leutet LED0 also das niederwertigste
Byte. Wenn ich AD-Eingang auf Vcc hänge dann leuchten alle ausser LED0
nicht.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Türlich geht das!
Wenn Du von 10 Bits nur die oberen 8 Bits anzeigen läßt und ein
ADC-Wert von 1019 erzeugt wird (1111111011) ist das in Ordnung.
Häng Dir doch mal einen Spannungsteiler mit Widerstand und Poti an den
ADC-Pin.

MfG
Andi

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie verstehe ich im Moment gar nichts mehr.


Der Wandler hat 10 Bit Auflösung Wenn ich den AD-Wandler auf Vcc hänge
müssen alle 10 Bit eine 1 anzeigen. Also:

ADCL = 11111111
DACH = 00000011

Mich interessieren in erste Linie mal die unteren Bits von Bit0 -Bit7

Autor: Hauke Sattler (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also zuerst sehe ich in deinem Code, das du ADFR (=ADATE) gesetzt hast.
Du willst also anscheinen den ADC im "Free Running Mode" laufen
lassen. Dazu mußt doch jedoch die Trigger Quelle im SFIOR Register
richtig auswählen.
Ich selber habe mit frei laufenden ADC bisher keine so guten
Erfahrungen gemacht. Deshalb starte ich den ADC immer "von Hand"
(sprich ADFR=0)

Weiterhin sehe ich das du das erst die ADC Wandlung startest und dann
erst ADMUX setzt. Das ist GIFT für den ADC. Man muß es andersherum
machen.

Nach dem Setzen von ADMUX hat es sich als praktisch erwiesen vor der
wirklichen Wandlung erst noch eine Dummywandlung durchzuführen (deren
Ergebniss dann verworfen wird).

Weiterhin mußt du abwarten ob der ADC schon fertig ist bevor du
ausließt.
Das prüfe ich immer damit ob das ADIF bit in ADCSRA gesetzt ist.

Da du weder das ADIE bit gesetzt hast noch den ADC Interuptvector
gesetzt hast ist das "SEI" auch überflüssig.

cu
Hauke

P.S. der Code ist noch nicht getestet und deshalb ohne Gewähr

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Programm hat zwar noch einen schreibfehler funktioniert jetzt aber
einwandfrei. Danke an alle


Gruss

Weihnachtsmann

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.