Forum: Mikrocontroller und Digitale Elektronik Globale oder lokale Variablen bei IRQ?


von Michael S. (michl-s)


Lesenswert?

Hi Leute,
ich habe eine prinzipielle Frage zur Interrupt-Programmierung. Folgende 
zwei Möglichkeiten schweben mir vor:

Möglichkeit 1:
Ich habe eine Moduldatei, in der ich LOKAL Zählvariablen deklariere. 
Diese sollen alle 150ms per IRQ erhöht oder erniedrigt werden, je nach 
Status eines Portbits. SOmit müsste die IRQ-Routine eine Funktion dieses 
Moduls aufrufen, die wiederum die LOKALEN Zählvariablen editiert.


Möglichkeit 2:
Alles wird per GLOBALEN Zählvariablen erledigt, sprich ich deklariere 
die Zählvariablen im Modul "extern".



Meine Frage zielt nun darauf ab, dass es ja eigentlich Gebot ist, die 
IRQ-Routine so kompakt wie möglich zu halten, ich bei Möglichkeit 1 ja 
allerdings innerhalb der IRQ-Routine einen weiteren Funktionsaufruf 
habe. Die variablen wären hier allerdings lokal.

Was würdet ihr nehmen?

Danke und Gruß.

von Klaus W. (mfgkw)


Lesenswert?

2 ist unelegant; das würde ich genau dann nehmen, wenn 1 wirklich zu 
lange braucht.

Bzw. C++ dafür nutzen, es elegant zu schreiben, aber die Methoden zum 
Zugriff dann vom Compiler inline genauso schnell machen zu lassen.

von Stephan (Gast)


Lesenswert?

Ich denke, ich würde das über einen Zeiger machen.
Stephan.

von Klaus W. (mfgkw)


Lesenswert?

hm, was ist daran besser, als über extern direkt auf die Variable 
zuzugreifen?

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.