Forum: Mikrocontroller und Digitale Elektronik Interne Referenzspannung Atmega8


von Dieter (Gast)


Lesenswert?

Hallo,
bin ich richtig der Annahme das ich mit folgenden Code eine 2,56V an Pin 
21 meines Atmega8 gegen GND messen müsste?

uint16_t readADC(uint8_t channel)
{
  uint8_t i;
  uint16_t result = 0;

  // Den ADC aktivieren und Teilungsfaktor auf 128 stellen
  ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);

  // Kanal des Multiplexers waehlen
  // AREF Verwenden
  ADMUX = channel | (1<<REFS0)| (1<<REFS1);

  // Den ADC initialisieren und einen sog. Dummyreadout machen
  ADCSRA |= (1<<ADSC);
  while(ADCSRA & (1<<ADSC));

  // Jetzt 3x die analoge Spannung and Kanal channel auslesen
  // und dann Durchschnittswert ausrechnen.
  for(i=0; i<3; i++) {
    // Eine Wandlung
    ADCSRA |= (1<<ADSC);
    // Auf Ergebnis warten...
    while(ADCSRA & (1<<ADSC));

    result += ADCW;
  }

  // ADC wieder deaktivieren
  ADCSRA &= ~(1<<ADEN);

  result /= 3;

  return result;
}

AREF (pin 21) hängt mit nen 100nF Kondensator gegen Masse.

Ich messe 0V an den Pin... Aber Warum?

von Stefan F. (Gast)


Lesenswert?

ATmega8 Pin 21 ist AREF.

Deine Auswahl der Referenzspannung steht für "Internal 2.56V Voltage 
Reference with external capacitor at AREF pin"

In diesem Fall würde ich auch 2,56V an dem Pin erwarten. Ausprobiert 
habe ich das allerdings noch nie.

Bekommst du den die erwarteten Messwerte im ADCW Register?

von S. Landolt (Gast)


Lesenswert?

> 2,56V an dem Pin erwarten

Dann sind wir zu dritt. Allerdings nur, solange der ADC aktiviert ist, 
also während des Unterprogramms - man wird zur Messung ein Oszilloskop 
benötigen.

von holger (Gast)


Lesenswert?

>  // ADC wieder deaktivieren
>  ADCSRA &= ~(1<<ADEN);

Lass den doch mal aktiviert.

>  result /= 3;

Ich hätte 4 genommen;)

von Dieter (Gast)


Lesenswert?

das war es... macht ja eigentlich auch Sinn das die Spannung nur ansteht 
wenn sie auch gebraucht wird

Danke

von S. Landolt (Gast)


Lesenswert?

> zur Messung ein Oszilloskop

Und dann vermutlich sehen, dass die 100 nF an Aref nicht schnell genug 
geladen werden. Also war holgers Antwort
> Lass den doch mal aktiviert
wohl die beste.

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.