Hallo,
ich wollte mit meinem Mega32 eine LED mit der Pulsweitenmodulation dimmen. Dazu habe ich folgenden Code verwendet:
Code:
int main(void)
{ 
  uint16_t hell = 500;
 
  PORTD = 0x00;				//PORTD alle Pins low
  DDRD = 0x30;				//PORTD Pin 4 und 5 als Ausgang
  
  TCCR1A = (1<<WGM10) | (1<<WGM11) |(1<<COM1A1);  	//10 Bit Phase Correct PWM, max Wert 0x03FF
  TCCR1B = (1<<CS10) | (1<<CS11);						//Takt = CPU-Takt/8
  
  OCR1A = hell;			//Vergleichswert
}
Dies funktionierte auch einwandfrei.
Nur will ich den Helligkeitswert per Taster verändern. Dazu habe ich den Code um folgendes erweitert:
Code:
while(1){
  DDRB = 0x00;      //Port B alle Pins Eingang

    if ((PINB & (0x10))==0)			//Wenn Taster 1 gedrück (Pin 2 auf low)
	{
		if (hell < 0x03F6)
		{
	    hell = hell +10;						//Erhöhe Helligkeit um 10
	    _delay_ms(1);									//Verzögerung
	   }
	}
    if ((PINB & (0x20))==0)			//Wenn Taster 2 gedrück (Pin 3 auf low)
	{
		if (hell > 0x0009)
		{
	    hell= hell -10;						//Verringere Helligkeit um 10
	   _delay_ms(1);									//Verzögerung
	   }
	}

//PWM-Code

}
Das Problem ist nur, dass ich zwar den Wert ändern kann, jedoch die PWM an sich nicht mehr funktioniert.

Mache ich irgendetwas falsch?

Chris