Forum: Mikrocontroller und Digitale Elektronik Variablenhandling im Zusammenhang mit Interrupt-Service-Routinen


von Dennis (Gast)


Lesenswert?

Guten Tag :)

Wie kann ich in C in einer ISR einen Wert berechnen, ohne ihn in einer 
globalen Variable zu speichern,  gleichzeitig aber anderen Funktionen 
den Zugriff auf diesen Wert möglich machen?

Beispiel wäre zb eine Echtzeituhr.
ISR von Timer 2 zählt die Sekunden und berechnet Datum und Zeit.
Gleichzeitig soll aber die Uhrzeit über serielle Schnittstelle 
einstellbar bzw lesbar sein.

Geht das ohne globale Variablen?

Grüße

Dennis

von Peter II (Gast)


Lesenswert?

Dennis schrieb:
> Geht das ohne globale Variablen?

auf einen µC - nein.

Was findest du an globale Variablen schlimm?

von m.n. (Gast)


Lesenswert?

Dennis schrieb:
> Beispiel wäre zb eine Echtzeituhr.
> ISR von Timer 2 zählt die Sekunden und berechnet Datum und Zeit.
> Gleichzeitig soll aber die Uhrzeit über serielle Schnittstelle
> einstellbar bzw lesbar sein.

Ganz schlechtes Beispiel!
In der ISR wird nur gezählt und nichts berechnet. In einem Modul kannst 
Du static-Variablen verwenden, die nur dort sichtbar sind. Wenn Du 
ansonsten globale Variablen brauchst, mußt Du sie auch nehmen.

von Dennis (Gast)


Lesenswert?

Peter II schrieb:
> Dennis schrieb:
> Geht das ohne globale Variablen?
>
> auf einen µC - nein.
>
> Was findest du an globale Variablen schlimm?

Nix :)
Reines Interesse!

von Axel S. (a-za-z0-9)


Lesenswert?

Dennis schrieb:
> Wie kann ich in C in einer ISR einen Wert berechnen, ohne ihn in einer
> globalen Variable zu speichern,  gleichzeitig aber anderen Funktionen
> den Zugriff auf diesen Wert möglich machen?

Gar nicht. Eine ISR nimmt keine Funktionsparameter entgegen und kann 
auch keinen Wert zurückgeben. Ergo kann sie Daten nur über globale 
Variablen austauschen. Hättest du mit ein paar Sekunden Nachdenken auch 
selber drauf kommen können.

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.