Forum: Compiler & IDEs gemeinsame Variable in verschiedenen C-Files wie geht das?


von Carsten (Gast)


Lesenswert?

Hallo!

Ich benutze die UART-Ringpuffer-Bibliothek von Peter Fleury.
Diese binde ich über die Headerdatei uart.h ein.

Dateien:

MeinProgram.c//Meine Quellcodedatei
uart.h       //Header von Peter Fleury
uart.c       //Ringpuffer für Uart von Peter Fleury

Wie kann ich es erreichen eine gemeinsame Variable zu haben, auf die ich 
in MeinProgram.c und in der ISR von uart.c benutzen kann?
(ich möchte in meinem Programm eine Statusvariable, die anzeigt sobald 
ein Zeichen empfangen wurde, also der Uart-receive Interrupt ausgelöst 
wurde).
Wo muss diese Variable deklariert werden? In der uart.h? Mit extern?

Ich habe schon lange gegoogelt und auch im Forum gesucht, aber keine 
brauchbaren Hinweise gefunden.

Vielen Dank an alle die sich die Zeit nehmen,

Carsten

von yalu (Gast)


Lesenswert?

In uart.c außerhalb der Funktionsdefinitionen:
1
int status;

In uart.h:
1
extern int status;

Wenn uart.h in MainProgramm.c includet wird, kannst du ganz normal auf
die Variable zugreifen.

Da du die Variable in einer ISR veränderst, solltest du vor das int in
den obigen Deklarationen noch ein volatile schreiben, damit der
Compiler die Variablenzugriffe nicht zu stark optimiert.

von Carsten (Gast)


Lesenswert?

Hallo!

@yalu:
Vielen Dank für deine schnelle Hilfe!
Jetzt klappts!
Du hast mir sehr weitergeholfen!
:-))

Lg,

Carsten

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.