Forum: Mikrocontroller und Digitale Elektronik PIC dynamischer Verweis auf Latch in C


von Tobias S. (herrgesangsverein)


Lesenswert?

Hallo allerseits,

ich programmiere gelegentlich PIC18 mit dem XC8 Compiler.

Es kommt bei mir häufiger vor, dass ich gerne Verweise auf Pins in eine 
Variable schreiben will. Ein Beispiel: Wenn ich 5 LEDs an den Ausgängen 
(LATA0-LATA4) angeschlossen habe, würde ich mir gerne ein struct 
definieren, das mir einen Ausgang verwaltet. Dann instanziere ich 
fünfmal das struct und würde nun gerne 'meineLed.Ausgang=LATA3' usw. 
konfigurieren.
Wenn ich mir die Definition von LATAx anschaue, sehe ich dass es vom Typ 
__bit ist, den ich aber nicht in structs verwenden kann (must be global 
or static).

Kann man das irgendwie lösen? Oder bin ich nur verblendet und alles ganz 
einfach? Meine C Kenntnisse gehen nicht so weit, dass ich die 
Definitionen in xc.h bis ins letzte Glied verstehe.
Am besten wäre, wenn man sich nicht auf ein LATCH A,B,C festlegen 
müsste. Denn bisher gebe ich die Bitnummer an und das LATCH ist codiert.

Viele Grüße

von Carsten M. (ccp1con)


Lesenswert?

Geht meines Wissens nicht/nicht sinnvoll mit struct.
1
// im Header
2
#define on 1
3
#define off 0
4
#define meine_LED1     LATDbits.LATD7
5
#define meine_LED2     LATDbits.LATD8
6
7
// im Programm
8
meine_LED1 = on;

Oder
1
#define toggle_meine_LED1 asm volatile("BTG LATD, #7");
2
#define meine_LED1_ON     asm volatile("BSET LATD, #7");
3
#define meine_LED1_OFF    asm volatile("BCLR LATD, #7");

: Bearbeitet durch User
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.