PIC dynamischer Verweis auf Latch in C

OP #4681984
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
#4682438
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");

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren