Hi,
ich hab mich heut zum ersten mal mit PWM beschäftigt und wollte daher eine LED auf- und abdimmen (langsam blinken). Dazu habe ich nach dem Tutorial bei mikrocontroller.net folgenden Code geschrieben:

Code:
#include <avr/io.h>
#ifndef F_CPU
/* Definiere F_CPU, wenn F_CPU nicht bereits vorher definiert 
   (z.B. durch Übergabe als Parameter zum Compiler innerhalb 
   des Makefiles). Zusätzlich Ausgabe einer Warnung, die auf die
   "nachträgliche" Definition hinweist */
#warning "F_CPU war noch nicht definiert, wird nun mit 1 MHz definiert"
#define F_CPU 1000000UL     /* Quarz mit 1.0000 Mhz */
#endif
#include <util/delay.h>


int main (void)
{
  uint8_t vergleichswert = 0;
  DDRB |= (1<<PB1); //PB1 auf Ausgang
  TCCR1A = 0;  
  TCCR1A |= (1<<WGM10) | (1<<COM1A1); //Nichtinvertierende PWM  
  TCCR1B = 0;
  TCCR1B = (1<<CS12) | (1<<CS10); //Takt CK/1024
  while(1)
  {
    while (vergleichswert < 255) //LED heller (Vergleichswert größer)
	{
      OCR1A = vergleichswert;
	  vergleichswert++;
	  _delay_ms(1); // warten, damit es nicht rasend geht
	}
	while(vergleichswert > 0) //LED dunkler (Vergleichswert kleiner)
	{
      OCR1A = vergleichswert;
	  vergleichswert--;
	  _delay_ms(1);
	}
  }
}
Die LED blinkt aber völlig willkürlich herum. Ich denke, dass das an falschen Werten bei Takt, Obergrenze oder so liegt. Da ich da eben keine Erfahrung habe, kann mir jemand Werte nennen, bei denen eine LED (ist mit minus am Mikrocontroller angeschlossen) einigermaßen flüssig auf- und abgedimmt wird? Damit ich erstmal einen Ausgangspunkt habe, an dem ich dann weiter rumspielen kann...
Oder gibt es Fehler im Code???