Variablenhandling im Zusammenhang mit Interrupt-Service-Routinen

Gast #4284149
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
Gast
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.
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.