Hallo, zunächst muss ich sagen, dass ich ein Anfänger in Sachen AVR Programmieren bin. Ich habe folgende Frage: In meiner main()-Funktion warte ich mit einer unendlichen for-Schleife auf das Eintreten eines bestimmten Ereignisses. Wenn das Ereignis eingetreten ist, gebe ich die Verarbeitung an eine Funktion ab, die dann eine bestimmte Zeit warten muss, den Pin (wo das nächste Mal etwas passieren soll) erneut abfragen, wieder warten und wieder abfragen usw. Wie mach ich das am besten? Ich brauch ein Konstrukt, das solange wartet, bis der Timer abgelaufen ist, dann muss wieder abgefragt werden und wieder gewartet werden usw. Ich schreib hier mal (etwas wenig, zugegebendermaßen) Code rein, um euch zu zeigen, wie ich's in etwa mein: Ausschnitt aus der main()-Funktion: for ( ; ; ) { for ( ; ; ) { current = (PINB & 0b00000010); if (current != 0) { cli(); zuständige_funktion(); break; } void abzuarbeitende_funktion(void) { Hier soll gewartet werden, bis der Timer abgelaufen ist, Pin abgefragt werden und wieder gewartet werden } Ich hoffe, dass ich den Sachverhalt nicht zu verwirrend beschrieben habe. Für eure Hilfe schon mal herzlichen Dank! Viele Grüße!
while(!(TIFR & (1 << TOVn))); //Warten bis Timer Overflow TIFR |= 1 << TOVn; //Timer Overflow Flag loeschen wobei TOVn das Overflow Flag von Timer n ist. Es wird so lange nix getan, bis der Timer überläuft. Ansonsten mal die Literatur durchgehen. Da steht ne Menge dazu drin!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.