Zähler
-
Ich habe folgendes Problem,
ich habe einen Interrupt-Timer. Dieser wird alle 10ms aufgrufen. Jedesmal wenn dieser aufgerufen wird, soll in dieser Timer-routine eine Variable hochgezählt werden, um sich das zu merken. Wenn jetzt z.b. 100x der Interrupt-Timer aufgrufen wurde soll eine Funktion ausgeführt werden.
Nun ist es anscheind so, das jedesmal wenn der Interrupt-Timer aufgerufen wird, wieder von vorne angefangen wird zu zählen. was muss ich machen das dies nicht so ist.
@interrupt void tima_it(void) { unsigned int i=0; i++; if (i == 100) //wenn 100 mal Interupt-Timer dann in if-Schleife { //.... bestimmte funktion wird ausgeführt } }
-
i wird ja bei jedem Aufruf zuerst mit 0 initialisiert. So bringt das nichts.
Du könntest eine globale Variable benutzen.
Du könntest eine static Variable benutzen.
Du könntest der ISR einen Zeiger auf deine Zählvariable übergeben (wenn das möglich ist).
Du könntest aber auch, und das wäre imho das Beste, den Timer so einstellen, dass du überhaupt nicht zählen musst.
-
Wenn das C sein soll dann funktionierts so
void tima_it(void){ static unsigned int i=0; i++; if (i == 100) //wenn 100 mal Interupt-Timer dann in if-Schleife { //.... bestimmte funktion wird ausgeführt i=0; } }
Kurt