Nochmals Danke für Eure Hilfe. Ich habe es nun geschafft zwei unterschiedliche PWM-Signale zu erzeugen. Im nächsten Schritt wollte ich nun versuchen die beiden PWM Signale (erst einmal zusammen) über das UART vom PC aus zu steuern. Sobald ich aber die Funktion "uart_getc()" aufrufe und versuche den Wert, also das empfangene Zeichen, einer Variablen zuzuweisen "var=uart_getc()", dann tut sich gar nichts mehr. Mein im Folgenden abgebildetes Programm bietet ebenfalls die Möglichkeit die PWMs über zwei Taster, die am PortA angeschlossen sind, zu steuern. Über die Taster lässt sich der Wert der Variable "status" erhöhen und senken. Die Variable "status" wird danach OCR1AL und OCR1BL zugewiesen.
Sobald ich die Funktion "uart_getc()" aufrufe, dann geht auch die Tastensteuerung der PWM nicht mehr. Kommentiere ich die Zeile "var = uart_getc();" aus, dann funktioniert die Tastensteuerung wieder.
Vielleicht habt Ihr da ja ne Idee woran das liegt und wie ich das Problem lösen kann? Die Uart-Funktionen sind sehr einfach und funktionieren im Moment noch ohne Interupts.

Code:
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
#include <avr/signal.h>



// Delay Funktion
void delay_ms (uint16_t delay_time)
{
	uint16_t k=0;
	while (k++<delay_time) {}

}


// Initialisierung der PWM
static void enable_pwm(void)
{
   TCCR1A = 0x00;  //Timer auf 0
   TCCR1B = 0x00;
   
   // PWM: 8-bit, phasenkorrekt 
   TCCR1A |= (1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<WGM10);  //Timer einstellen
   //TCCR1B |= (1<<CS10) | (1<<CS12);
   //TCCR1B |= (1<<CS10) | (1<<CS11) | (1<<CS12); 
   TCCR1B |= (1<<CS10);  //kein Prescaling

}


// Initialisierung UART
void uart_init (void)
{
/* USART-Init 38400 Baud bei 8MHz für Mega32 */
  UCSRB = ( (1<<RXCIE) | (1<<RXEN) | (1<<TXEN) );
  UCSRC = (_BV (URSEL) /*| _BV (USBS) */| _BV (UCSZ1) | _BV (UCSZ0)); //syncron usart modus UMSEL
  UBRRH  = 0;                                   // Highbyte ist 0
  UBRRL  = 12;                                  // Lowbyte ist 51 ( dezimal )

}


// Zeichen senden
int uart_putc(unsigned char c)
{
    while (!(UCSRA & (1<<UDRE))); /* warten bis Senden moeglich */
    UDR = c;                      /* sende Zeichen */
    return 0;
}


// String senden
void uart_puts (char *s)
{
    while (*s)
    {   /* so lange *s != '\0' also ungleich dem "String-Endezeichen" */
        uart_putc(*s);
        s++;
    }
}


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


int main(void)
{
	uint16_t status=0;
  	uint8_t var;

	DDRA=0;     //PORTA as Input
  	PORTA=255;
  	
  	DDRD |= (1 << PD4);
   	DDRD |= (1 << PD5);
  	
	//uart_init();
	enable_pwm();
	
	
	/* Loop forever */
	while (1)
	{
		// Steuerung der PWM-Kanäle über 2 Taster (Up/Down)
		if (status>127)
		  {
		  status=128;
		  }
		if (status<2)
		  {
		  status=1;
		  }		
		if (( PINA & (1<<PINA3))==0 )
		 {
		    delay_ms(50000);
		    status=status+1;
		 }
		if (( PINA & (1<<PINA4))==0 )
		 {
		    delay_ms(50000);
		    status=status-1;
		 } 
		
		OCR1BL = status;  // Kanal 1 verschiedene Werte
   		OCR1AL = status;  // Kanal 2 verschiedene Werte
		
			
		// Versuch: Wertzuweisung über das UART vom PC aus 
		var = uart_getc();  /// AN DIESER STELLE KOLLIDIERT ES MIT DER PWM
		///status=var;
		
	}
}