Mega8 - ADC liefert konstanten Wert

Gast #1558158
Ich lese 4 ADC´s des Atmega8 etwa folgendermaßen aus:

1. Mux-Kanaleinstellungen ändern (auf z.B. Kanal3)
2. ADC-Starten
3. Warten bis der ADC fertig ist
4. ADC-Wert in Variablen kopieren
5. Wert der Variablen auf ein LED-Display ausgeben
->und wieder von vorn

Allerdings liefert der ADC immer einen kostanten Wert...

z.B.(0111011001->473) oder (0111011001->474)
Der Wert ändert sich aber nur bei einem Neustart der Schaltung.

Ich habe gelesen, dass die erste Messung nach dem Kanal-Wechsel immer 
schrott sein soll, aber 2-maliges Lesen hilft auch nicht.


Hat irgendwer eine Idee, woran das liegen könnte?

>PS:
>Programiert habe ich in Assembler nach dem ADC-Tutorial
Gast
Sorry, aber ich dachte, das mein vorgehen möglicherweise falsch sein 
könnte, so rein Hardwaremäßig (z.B. man muss erst 50µS warten bis man 
erneut den ADC lesen darf)

Hier also der Entscheidende Quellcode:
1
.include "m8def.inc"
2

3
.def temp1  = r16
4
.def temp2  = r17
5

6
.def WertL  = r18
7
.def WertH  = r19
8

9
Main:
10
  rcall Get_ADC_0
11
  rcall Ausgabe 
12
;Die Ausgabe funktioniert zu 100%, ewig getestet, die Daten werden korrekt ausgegeben, verwertet werden WertH und WertL
13

14

15
Get_ADC_0:
16
  ldi temp1, (1<<REFS0) | (1<<ADLAR) | (0<<Mux3) | (0<<Mux2) | (0<<Mux1) | (0<<mux0)
17
  ;Referenz 5V intern, Wert linksbündig, Kanal 0
18
  out ADMUX, temp1
19

20
  ldi temp1, (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (0<<ADPS0)
21
  ;ADC an, Vorteiler 64
22
  out ADCSR, temp1
23
  rcall Get_ADC_lesen
24
ret
25

26
;^^^Gibt es für die Kanäle 0-3^^^
27

28

29
Get_ADC_lesen:
30
  sbi ADCSR, ADSC       ;ADC starten
31
  wait_adc:
32
    sbic ADCSR, ADSC
33
    rjmp R_wait_adc
34
  in WertH, ADCH
35
  in WertL, ADCL
36
ret

Achja, AVCC ist mit einem 100nF-Kondensator gegen GND angeschlossen...


Haben möglicherweise die Register r18 und r19 eine Sonderfunktion?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.