mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Spannung an ATMega8 ADC7 messen


Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich möchte eine Analogspannung von maximal 9V an dem Analogeingang ADC7
messen. Dazu habe ich den ATMega8 folgendermasen initialisiert:

  ADCSRA=(1 << ADPS1 |1 << ADPS2 |1 << ADEN |1 << ADFR);
  cbi (ADCSRA,ADPS0);
  ADMUX=(1 << MUX0 |1 << MUX1 |1 << MUX2);

Wenn ich nun aber das ADCW abfrage und mir seriell ausgeben lasse,
stehen dort nur Wirre Zeichen. Der UART-Befehl lautet wie folgt:

        UartPrintF("U: %2.1f",(ADCW*0.009775));

Habe ich etwas falsch initialisiert? Kann mir jemand nen Tip geben?
Gruß
Chris

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme an das du einen Mega8 in SOIC hast. Woher hast du das ADCW ?
oder ist das selbst definiert?
ADFR ist Freerunnig Mode, wann liest du die Register aus?

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den ATMega in SMD, also TQFP.
Das ADCW habe ich in einem anderen Projekt gesehen, hatte es zuvor auch
schon mit
(ADCL + (ADCH<<8))
probiert. War leider genauso!
Ich gehe doch recht in der Annahme das im Freerunning Mode ständig das
Register aktualisiert wird, oder? Ich muß also nur noch wie oben
beschrieben darauf zugreifen?!
Oder habe ich doch vergessen etwas zu initialisieren?

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich arbeite immer mit Interrupt, sonst kannst du nur abfragen wenn das
ADIF gesetzt ist, so lese ich es in der Doku.
Zum Probieren setze einmal ADLAR und frage nur ADCH ab.

Beschaltung des Mega ist sicher richtig?

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, habe beide GND und VCC leitungen beschaltet sowie auch AGND, AVCC
und AREF...
Kannst Du mir vielleicht ein Beispiel für die Interruppt abfrage geben?
Was alles initialisiert werden muß.
Habe ich nämlich auch schon versucht, sprang aber gar nicht in den
Interrupt. Deshalb glaube ich ja das ich nen Initialisierungsfehler
mache!
Zu erwähnen ist vielleicht noch, ich arbeite mit dem internen
Oszillator auf 8Mhz. Ist ja wichtig für den Vorteiler...

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <avr/signal.h>
#include <avr/interrupt.h>

für single conversion
ADMUX=(1<<ADLAR)|(1<<REFS0)|(1<<REFS1);  /*ADC-Kanal, ADLAR, interne
Ref. einstellen 0xe0 */
  ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADPS1)|(1<<ADPS2)|(1<<ADSC);  /* ADC
initialisieren und starten */

abfrage
SIGNAL(SIG_ADC){      /*Interrupt auslösen wenn ADC-conversion 
komplett*/
Messwert=ADCH;         /*Register auslesen*/

einstellung ist Kanal 0, ergebnis linksbündig, interne Referenzstpg.,
ADC enable, ADC interrupt enable, Teilerfaktor, ADC Start

Da fällt mir gerade auf, wo startest du die Conversion?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aboniert weil ich morgen auch mit A/D Wandlung starten will ;-)

Autor: (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Dieser Beitrag wurde geloescht)

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.