ich habe jetzt den Timer1 benutzt, und so sieht es aus:void T1Delay(unsigned int ms)
{
TCNT1=10000-((ms*1e3)/Tcyc);
TCCR1A= 0x00;
TCCR1B= 0x01;
while((TIFR1&(0x1<<TOV1))==0);
TCCR1B=0;
TIFR1= 0x1<<TOV1;
}
int main(void)
{
DDRC|=(1<<PC0); // PC0 als Ausgang
while(1) //Endlosschleife
{
PORTC=PORTC^(1<<PC0); Toggle Pc0
T1Delay(1); // 1ms warten
}
return 0;
}
ich hab die timerflags jetzt nicht auf Richtigkeit geprüft, vom Prinzip her okay, aber noch besser wäre es in dem speziellen Falle, in der main Schleife eine
if(delaytimer == 0) Bedingung einzubauen, bei der du dann den delaytimer neu setzt und den pin toggelst
so kannst du in der Zeit wo dein delaytimer mit " if ( delaytimer > 0 ) delaytimer--; " in der ISR dekrementiert wird noch in der main andere sinnvolle dinge tun, wie ankommende bytes aus SPI/UART auszuwerten
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Lesezeichen