Hallo Leute

ich hab vor mit einem MEGA8 die Spannung einer 1.5Volt Baterie zu messen, den gemessenen Wert über UART auszugeben und am PC auszuwerten.

Also den internen ADC-Wandler vom MEGA 8 zu verwenden.

Nur mein Programm werte mir nichts aus. Vielleicht könnt ihr mir bei der Suche nach dem Fehler helfen. Ich will den PC0 als AD-Wandler eingang verwenden.

Code:
#include <avr/io.h> 

#define F_CPU 8000000           /* Oszillator-Frequenz in Hz */
#define UART_BAUD_RATE 19200
#define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_CPU)/((UART_BAUD_RATE)*16L)-1)

void USART_Init(void) 
{
    UCSRB |= (1<<RXEN) | (1<<TXEN);
	UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);

	UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);	            //Asynchron 8N1

}

void UART_writeChar(char c)				// Ein Zeichen
{
    while (!(UCSRA & (1<<UDRE))) {} 		// warte, bis UDR bereit
        UDR = c; 							// Sende Zeichen
	return 0;
}

void UART_writeString(unsigned char *string)  // mehrere Zeichen
{ 
    while ( *string)	 					// so lange *s != NULL 
        UART_writeChar(*string++); 
	return 0;
} 


unsigned char UART_getChar(void)
{
    while (!(UCSRA & (1<<RXC))); 	 // warten bis Zeichen verfuegbar
    return UDR;                  	 // Zeichen aus UDR an Aufrufer zurueckgeben
}



int main(void) 
{ 

int result; 

USART_Init();

//ADMUX = (1<<MUX0); 

ADCSRA = (1<<ADEN)|(1<<ADPS2); 
    
    
   while (1) 
   { 

      /* Wandlung starten */ 
      ADCSRA |= (1<<ADSC); 

      /* Warten bis die AD-Wandlung abgeschloßen ist */ 
      while ( !(ADCSRA & (1<<ADIF)) ) 
      {    

      /* AD-Wert auslesen */ 
      result = ADC;        
        
      UART_writeChar(result);
   
   } 
 } 
}