Hallo Leute,

Ich hab neulich angefangen, mit Mikrocontrollern zu experimentieren und hab mir nen Atmega 16 gekauft... Zusätzlich benutze ich das Buch von Elektor "AVR Hardware und C-Programmierung in der Praxis". Ich habe jetzt angefangen mit PWM zu arbeiten. Allerdings schaffe ich es nicht, dass sich der OCR0 Wert verändert. Ich habe folgendes Programm:

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

uint8_t wert;

void delay_ms(uint16_t ms)
{
  for(uint16_t t=0; t<=ms; t++)
    _delay_ms(1); 
}

// Timer/Counter0 Overflow 
ISR (TIMER0_OVF_vect)
{
    
    PORTD |= (1 << PD0);  // PD0 ein
    
}

// Timer/Counter0 Compare Match
ISR (TIMER0_COMP_vect)  // Wenn OCR0 Wert erreicht wird
{
    PORTD &= ~(1 << PD0); // PD0 aus

}

void main(void)
{
    DDRD |= (1 << DDD0) | (1 << DDD1) ;   // PORTB als Ausgang
    wert = 10;

    TIMSK |= (1 << TOIE0) | (1 << OCIE0);    // IRQ bei Überlauf + Compare Match
    OCR0 = wert;      // Vergleichswert 128 einstellen
    sei();         // IRQs enable
    PORTD |= (1 << PD0);    // PB0 
    TCCR0 |= (1 << CS02);  // Prescaler: 1/1024 (CS1=0 per default) (1 << CS00) | 

    while (1);  // endlos
    {    
  
      delay_ms(100);
        if(wert >= 240)
            wert = 10;
        else
            wert++;
        OCR0 = wert;
    }
    return 0;
}
Der Sinn ist, eine LED zu faden... also von dunkel bis hell. Aber es klappt nicht. Der Wert von OCR0 verändert sich nicht.
Vielen Dank schonmal im voraus.

MfG
RP6fahrer