Einfache Frage zu ADC

Gast #2846220
Lesenswert?

Hallo zusammen,

ich möchte mit meinem ATmega8 die Spannung an PC0 messen.
Laut händischer Messung variiert diese zwischen 4V und 0,4V.

Den ausgelesenen Wert möchte ich dann an PORTB und PORTD ausgeben (Dort 
sind LEDs angeschlossen).

Ich dachte es würde so gehen, doch es funktioniert nicht:
1
#include <avr/io.h>
2
#include <avr/iom8.h>
3

4
int main(void)
5
{
6
  // LEDs an!
7
  DDRB=0xFF;
8
  PORTB=0xFF;
9
  DDRD=0xFF;
10
  PORTD=0xFF;
11
  
12
  // ADC einstellen
13
  ADMUX = 0b01000000;
14
  //ADMUX = 0b01100000; //Linksbündig
15
  ADCSRA = 0b11101100;
16
    while(1)
17
    {
18
        //TODO:: Please write your application code 
19
    }
20
}
21

22
ISR(ADC_vect)
23
{
24
  PORTB = ADCL;
25
  PORTD = ADCH;
26
}

Sehr ihr einen Fehler? Hab ich etwas vergessen?

ADMUX ist so eingestellt:
 Interne Referenz Avcc
 Rechtsbündig in ADCH und ADCL ausrichten
 Kanal 0

ADCSRA ist so eingestellt:
 ADEN (ADC Enable)
 ADSC (ADC Start Conversion)
 ADFR (Freerunning-Mode)
 ADIE (ADC Interrupt Enable)
 Vorteiler 16
Muss ich ADIF selber setzen? Das wird doch vom uC automatisch gesetzt, 
oder? Muss ich dieses Bit am Ende meines Interrupt-Handlers löschen für 
die nächste Messung oder geschieht dies auch automatisch?

Vielen Dank für jede Antwort!!!

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