adc problem atmega2651

Gast #799784
Lesenswert?

hallo forum

ich arbeite mit einem atmega2561. habe ein code für den adc aus dem 
avrgcc tutorial genommen:

uint16_t ReadChannel(uint8_t mux)
{
  uint8_t i;
  uint16_t result;

  ADMUX = mux;                      // Kanal waehlen
  ADMUX |= (1<<REFS1) | (1<<REFS0); // interne Referenzspannung nutzen

  ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);    // Frequenzvorteiler
                               // setzen auf 8 (1) und ADC aktivieren 
(1)

  /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man 
liest
     also einen Wert und verwirft diesen, um den ADC "warmlaufen zu 
lassen" */
  ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung
  while ( ADCSRA & (1<<ADSC) ) {
     ;     // auf Abschluss der Konvertierung warten
  }
  result = ADCW;  // ADCW muss einmal gelesen werden,
                  // sonst wird Ergebnis der nächsten Wandlung
                  // nicht übernommen.

  /* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden 
Wandlungen */
  result = 0;
  for( i=0; i<4; i++ )
  {
    ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
    while ( ADCSRA & (1<<ADSC) ) {
      ;   // auf Abschluss der Konvertierung warten
    }
    result += ADCW;        // Wandlungsergebnisse aufaddieren
  }
  ADCSRA &= ~(1<<ADEN);             // ADC deaktivieren (2)

  result /= 4;                     // Summe durch vier teilen = arithm. 
Mittelwert

  return result;
}

...

/* Beispielaufrufe: */

void foo(void)
{
  uint16_t adcval;

  adcval = ReadChannel(0); /* MUX-Bits auf 0b0000 -> Channel 0 */
  ...
  adcval = ReadChannel(2); /* MUX-Bits auf 0b0010 -> Channel 2 */
  ...
}



1. Problem: wenn der wert des ADCs 100 unterschreitet beginnt er bei 999 
und zählt dann herunter, anstatt von 099.

Wie kann ich dieses problem beheben?

2. Wie kann ich die geschwindigkeit des adcs erhöhen?

Wäre für Hilfestellung Dankbar!

mfg mk2

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren