RN-Control stürzt ab wenn Timer0 ISR ausführt
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