www.mikrocontroller.net

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


Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In uart.c außerhalb der Funktionsdefinitionen:
int status;

In uart.h:
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.

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

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

Lg,

Carsten

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.