Hi! Ich habe da mal eine Frage zum Timer-Interrupt. Ich verwende den ATmega16 zum programmieren. Also ich habe meine Funktionen in *.c bzw. *.h Dateien ausgelagert. In einer meiner Funktionen brauche ich einen Timer, den habe ich auf 1ms eingestellt. Im main-Programm brauche ich auch einen Timer. Ich wollte es so machen, dass ich in der Funktion den Timer1 und im main-Programm den Timer0 verwende. Aber irgendwie bin ich da skeptisch, ob die Profis das so machen würden ;-) Soll ich es lieber so machen, dass die Variable, die in der Funktion hochgezählt werden soll, einfach beim Funktionsaufruf mit übergebe?
Nein. Im TimerInterrupt setzt man ein flag : TimerCame=1 und im main prueft man dieses Flag : if (Timercame==1) { ... TimerCame=0; }
> Im main-Programm brauche ich auch einen Timer.
Wofür?
Üblicherweise setzt man in der ISR ein Flag und fragt das in der
main-Loop ab.
Hallo marc, ich habe nicht verstanden, was du da machen willst. Aber wenn du zwei Timer brauchst und zwei Timer hast, warum nicht? Gruß, DetlevT
Hi! Ich habe einen Tip bekommen. Wenn ich die Variable, die in der hauptdatei im Interrupt hochgezählt wird, in der ausgelagerten Funktion verwenden will, geht das mit dem extern-Befehl: extern volatile int x; Genau das hab ich gebraucht :D Kannte ich bis jetzt noch ni.. Also danke jungs
marc schrieb: > Genau das hab ich gebraucht :D > Kannte ich bis jetzt noch ni.. Dann wirds Zeit, dass du dir ein C-Buch kaufst und durcharbeitest!
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.