mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik [SS] Globale Variablen, mehrere Dateien


Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
habe den Beitrag "Globale Variablen, mehrere Dateien" gelesen.
Dieses funktioniert sehr gut.

Ich möchte auch wie Beispiel, die Portpin's global verwalten.

#define  LED_FEHLER  LATBbits.LATB2  //  LED Fehler
#define  LED_SIGNAL  LATBbits.LATB3  //  LED Signal
#define  BUZZER    LATBbits.LATB4  //  Buzzer

Habe es leider noch nicht hinbekommen.
Für eure Hilfe bin ich sehr dankbar.

Gruß Siegfried

Autor: A. F. (artur-f) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind keine globalen Variablen. Es sind Defines!. Wenn du auf die von 
überall zugreifen willst, gehören die in einer Header-Datei, die dort 
eingebunden wird, wo du auf diese zugreifen möchtest.

@ LATBbits.LATB: was ist das für ein Controller den du da verwendest?

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Controller = 18F4550
Habe es so probiert.

#ifndef EXTERN
#define EXTERN extern
#endif
EXTERN unsigned char ProzessStatus;

EXTERN #define  SPI2_EN  LATAbits.LATA0  //  Service Enable

Bekomme aber ein Fehlermeldung: 35:Error: syntax error
Gruß Siegfried

Autor: Andreas Riegebauer (blackpuma)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch es mal so:

#pragma bit SPI2_EN @ LATAbits.LATA0


Welche Fehlermeldung bekommst du genau?

Autor: QuizMaster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#ifndef EXTERN
#define EXTERN extern
#endif

Würd ich so nicht machen, extern oder EXTERN, naja geschmäcker sind ja 
unterschiedlich aber nenns doch lieber GLOBAL

Syntaxerror, hmm, ...
schau mal:

EXTERN #define  SPI2_EN  LATAbits.LATA0  //  Service Enable

ich persönlich kenn keine externe #define!


Ich glaub hier haperts ein wenig an Grundkenntnissen.

Kurzanleitung:

MyModule.c
#include MyModule.h
#define GlobaleModuldefine 0x01

unsigned char GlobaleVariable = 0; //aber nur für das Modul

void schoeneFunktion(void)
{
;
}
...

MyModule.h
//in deinem Beispiel jetzt sind sie GLOBAL:
#define  LED_FEHLER  LATBbits.LATB2  //  LED Fehler
#define  LED_SIGNAL  LATBbits.LATB3  //  LED Signal
#define  BUZZER    LATBbits.LATB4  //  Buzzer
...
Und das kannst du mit weiteren Modulen aufrufen

Modul1.c
#include MyModule.h
...
Modul2.c
#include MyModule.h
...

usw.

Gruß

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich weis, du hast recht. "Ich glaub hier haperts ein wenig an 
Grundkenntnissen."
Mit C, C18 und PIC's arbeite erst seit 8 Wochen. Muß und werde noch viel 
lernen und auch Fragen. Die paar Beiträge haben mir sehr geholfen.
Für jede Hilfe bin ich immer dankbar.
Gruß Siegfried

Autor: Trohl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
8 Wochen und noch keine Ahnung, was der preprozessor eigentlich tut? Das 
is ein Kunststück...

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.