Hallo,

ich möchte mit der RN-Control ein einfaches Servo von Conrad
per Software PWM ansteuern. Komisch ist wenn der Controller die
ISR ausführt dann stürzt er ab. Servo bewegt sich kurz und macht dann
nichts mehr. Ich hab auch schon alles mögliche ausprobiert und
per Try and Error andere Werte eingesetzt jedoch verhält sich
der Servo stets gleich. Kurze Bewegung und stop.
Vielleicht kann mir ja einer weiterhelfen...

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

int ontime = 0;
int offtime = 2000;

ISR(TIMER0_COMP_vect)
{
    static int onBuf;

    if( offtime - ontime > 0 )
    {
        onBuf = ontime;
        offtime--;
    }
    else
    {
        if( onBuf == 0 )
        {
            offtime = 2000;
            PORTA &= ~0x80;
            onBuf = ontime;
        }
        else
        {
            if( onBuf == ontime )
                PORTA |= 0x80;
            onBuf--;
        }
    }   
}

int main(void)
{

    DDRA = 0x80;
    PORTA = 0x00;

    // CLK/8 Prescaler                  CS01
    TCCR0 = (1<<CS01);

    OCR0 = 20;  // 16000000/8 = 1999490/20 = 99974,50Hz => 0,01ms

    TIMSK |= (1<<OCIE0);

    sei();

    int i = 0;

    ontime = 3; // links

    for(i=0;i<312;i++)
        _delay_ms( 16 );

    ontime = 11; // mitte

    for(i=0;i<312;i++)
        _delay_ms( 16 );

    ontime = 19; // rechts

    for(i=0;i<312;i++)
        _delay_ms( 16 );

    ontime = 0;

    while(1);
}
Viele Grüsse
Thomas