Gast
#12728
Hallo,
Ich habe das folgende Problem. Der timer lauft
immer ungefaehr 20000 schritte und loest einen interrupt, leider auch
wenn ich timer1 mit einem niedrigeren wert initialisiere.Das
aussergewöhnliche daran ist dass das Programm im Avr studio Simulator
problemlos funtioniert. Also wenn ich Starttimer1(255) angebe lauft das
program genau 45 sekunden und wenn ich starttimer1(20) angebe lauft
kuerzer und loest einen interrupt aus. Nur wenn ich das Programm zum
STK5000 schicke dann lauft egal wie nur 19 sekunden (also 20000
schritte)
MAche ich was falsch ?
danke im voraus.
Ferhat
Clock= 3.69Mhz
Prescaler CLK/1024
Compiler: AVR GNU C ver 3.0.8
SIGNAL(SIG_OVERFLOW1) /* signal handler overflow
*/
{
outp((0<<CS12) |(0<<CS11) |(0<<CS10), TCCR1B);
outp(255, TCNT1L);
outp(0, TCNT1H);
Timer1overflow=1;
}
void StartTimer1(unsigned char bitti)
{
unsigned char tmp;
if (Timer1overflow==2)
{
tmp=255-bitti;
outp(255, TCNT1L); /* reset Counter1 Low Byte */
outp(tmp, TCNT1H); /* reset Counter1 High Byte */
outp((1<<CS12) |(0<<CS11) |(1<<CS10), TCCR1B);
Timer1overflow=0;
}
}
int main(void)
{
Timer1overflow=2;
stState=99;
uart_init();
sei(); /* enable interrupts */
for (;;)
{
if (stState==99)
{
StartTimer1(255);
if (Timer1Overflow==1)
{stState=0;Timer1Overflow=2;};
}
uart_send("test",4);
}