Forum: Mikrocontroller und Digitale Elektronik Interrupt in ausgelagerter Funktion?


von marc (Gast)


Lesenswert?

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?

von Haudrauf (Gast)


Lesenswert?

Nein. Im TimerInterrupt setzt man ein flag : TimerCame=1 und im main 
prueft man dieses Flag :

if (Timercame==1) {
 ...
 TimerCame=0;
 }

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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.

von Detlev T. (detlevt)


Lesenswert?

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

von marc (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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!

von Falk B. (falk)


Lesenswert?

Oder wenigstens den Artikel Interrupt liest . . .

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
Noch kein Account? Hier anmelden.