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


von Siegfried S. (dieleena)


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

von A. F. (artur-f) Benutzerseite


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?

von Siegfried S. (dieleena)


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

von Andreas R. (blackpuma)


Lesenswert?

Versuch es mal so:

#pragma bit SPI2_EN @ LATAbits.LATA0


Welche Fehlermeldung bekommst du genau?

von QuizMaster (Gast)


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
1
#include MyModule.h
2
#define GlobaleModuldefine 0x01
3
4
unsigned char GlobaleVariable = 0; //aber nur für das Modul
5
6
void schoeneFunktion(void)
7
{
8
;
9
}
10
...

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

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

usw.

Gruß

von Siegfried S. (dieleena)


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

von Trohl (Gast)


Lesenswert?

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

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.