-         

Ergebnis 1 bis 3 von 3

Thema: ADC gibt nur beim starten einen Wert

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.07.2005
    Ort
    Berlin
    Alter
    34
    Beiträge
    25

    ADC gibt nur beim starten einen Wert

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,
    aus irgend einem unerfindlichen Grund gibt mein ADC nur beim starten den richtigen wert zurück, wenn ich ihn das zweite mal benutzt gibt er noch immer den selben wert zurück und nicht den aktuellen.
    hier mein code:

    Code:
    void AD_init(void){
    	ADMUX = (1<<REFS1) | (1<<REFS0);
    	
    	ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADATE); 
    }
    int getAD(void){
    
    	ADCSRA|= 1<<ADSC;
    	ADCSRA|= (1<<ADIF);
    	
        while ( !(ADCSRA & (1<<ADIF)) ) {}
    	int x = ADCH * 256 + ADCL ;          
    
    	return x;
    }
    ich vermute das es daran liegt dass das ADIF bit nicht wieder auf 1 zurück gesetzt wird, weiss aber nicht warum er das nicht macht.
    ich benutzte einen ATMEGA 16.
    getAD wird in einer endlos schleife angesprochen.

    hat einer ne Idee?

    mfg Cornelius

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Es ist unbedingt wichtig, daß er ZUERST ADCL und DANN ADCH liest.
    Sicherheitshalber zerleg' das
    int x = ADCH * 256 + ADCL ;
    in:
    int x = ADCL ;
    int x += ADCH * 256;

    weiss nicht, ob das hilft, aber schau mal
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.07.2005
    Ort
    Berlin
    Alter
    34
    Beiträge
    25
    danke für den tipp,
    daran lag es

    mfg Cornelius

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •