Forum: Mikrocontroller und Digitale Elektronik ADC zeigt nur Initialen Wert


von Armin A. (10110010)


Lesenswert?

Hallo,

ich möchte ein Spannungseingang an PB2 messen und verarbeiten. 
(ATTiny13A)
Wenn ich das in Proteus simuliere erhallte ich immer den Initialen Wert, 
der beim Start anliegt. Wenn ich das zur Laufzeit mit einem Variablen 
Wiederstand änder, bekomme ich immer das selbe Ergebnis.
Wenn ich den Wiederstand änder und dann die Simulation Starte, bekomme 
ich auch den entsprechenden Wert, der aber unverändert bleibt.

Hier mein Code:

    rjmp RESET           ; Reset Handler
    RETI                 ; IRQ0 Handler
    RETI                 ; PCINT0 Handler
    RETI                 ; Timer0 Overflow Handler
    RETI                 ; EEPROM Ready Handler
    RETI                 ; Analog Comparator Handler
    RETI                 ; Timer0 CompareA Handler
    RETI                 ; Timer0 CompareB Handler
    RETI                 ; Watchdog Interrupt Handler
    rjmp ADW             ; ADC Conversion Handler

RESET:
    LDI r16, low (RAMEND)
    OUT SPL, r16     ; Setzt sen StackPointer auf Anfang
    LDI r16, 0b00000001
    OUT ADMUX, r16     ; VCC als Referenz; PB2 als input
    LDI r16, 0b11011000
    out ADCSRA, r16     ; ADC einschalten; Interupts zulassen
    SEI

Loop:
    rjmp Loop
ADW:
    IN XH, ADCH       ; High ablegen
    IN XL, ADCL       ; Low Ablegen

    SBI ADCSRA, 0x06     ; Convert zulassen

    RETI


Mein Variabler Wiederstand liefert Max 4,45V und Min 0,45V.

von S. Landolt (Gast)


Lesenswert?

"... ADCL must be read first, then ADCH."

von Armin A. (10110010)


Lesenswert?

Ihr Seit Götter!

Danke, daran hats gelegen!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.