www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zwei analog Eingänge nacheinander abfragen


Autor: Tobi P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe zu folgendem Problem nichts finden können : Ich möchte an einem 
ATMEGA8 den ADC0 und den ADC1 nacheinander abfragen. Einer ist kein 
Problem.( btw : Ich habe erst vor kurzem mit C und Mikrocontrollern 
angefangen... ). Ich hab mir gedacht, nach der ersten Messung einfach 
das ADMUX Register entsprechend zu ändern, dann die zweite Messung 
durchzuführen und dann wieder zurückzuschalten. Geht aber leider nicht. 
Wie macht man´s richtig ? Im Tutorial ist nur beschrieben wie man ADC 
generell verwendet.

Autor: Gast 57 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste Deinen Code, wie schaltest Du den ADMUX um?
Löscht Du z.B. das Bit 0 für das ADMUX-Register?
Das Bit ist gesetzt, wenn Du Kanal 1 mißt.

Bei mir geht das Umschalten bisher einwandfrei.....

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich hab mir gedacht, nach der ersten Messung einfach
>das ADMUX Register entsprechend zu ändern, dann die zweite Messung
>durchzuführen und dann wieder zurückzuschalten.

Das ist die übliche Vorgehensweise.

>Geht aber leider nicht.

WAS geht nicht? Falsche Werte? uC stürzt ab, bleibt hängen?
Die Schaltung fängt an zu rauchen?

Autor: Tobi P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ADMUX|=(1<<MUX0);                       //Auf ADC1 umschalten
ADCSRA|=(1<<ADSC);                      //Messungs starten
while(ADCSRA & (1<<ADSC)){;}            //Messung abwarten
variable=ADCW;                          //Wert übernehen
ADMUX&=~(1<<MUX0);                      //Auf ADC0 zurückschalten

Geht nicht bedeutet: sobald ich den Codeschnipsel mir reinnehme, ist das 
Ergebnis des ADCO falsch.( War vorher richtig ) Es zeigt dann 0 an. An 
ADC1 sollte es 0 anzeigen..

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeig bitte kompletten Code

Autor: Tobi P (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier der gesamte Code. Im oberen Teil ( kurz nach der while Schleife ) 
wird ein Dreh-Encoder abgefragt.
Danach die LCD Anzeige.
Dann die Analogen Sachen. Für ADC0 siehe Schaltplan.
An ADC4 und ADC5 sollen Schaterstellungen abgefragt werden.

Bitte keine Kommentare zum Programmierstil. Ich mach das erst seit Juni.
Ich möchte damit die Fenster eines kleines Gewächshauses steuern.

Autor: Tobi P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ! Ich glaube ich hab den Fehler. Muß ich gleich noch testen.

Es heißt ADMUX&=~(1<<MUX0)|(1<<MUX1)|(1<<MUX2)|(1<<MUX3); wenn ich auf 
ADC0 zurückschalten möchte oder ?

Ich vor jeder Klammer eine Tilde.

ADMUX&=~(1<<MUX0)|~(1<<MUX1)|~(1<<MUX2)|~(1<<MUX3);

Stimmt´s ?

Autor: Tobi P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobi P schrieb:
> Es heißt ADMUX&=~(1<<MUX0)|(1<<MUX1)|(1<<MUX2)|(1<<MUX3);

Nein. Noch mehr Klammern:

ADMUX&=~( (1<<MUX0)|(1<<MUX1)|(1<<MUX2)|(1<<MUX3) );

Blöder Fehler. Normalerweise setze ich nur einzelne Bits auf Null. Nicht 
gleich vier auf einmal. Danke trotzdem. Wenn ihr nicht gesagt hättet, 
das das eigentlich gehen müßte, hätte ich den Fehler nie gefunden...

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.