mikrocontroller.net

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


Autor: Tobias Schenk (herrgesangsverein)
Datum:

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

Autor: Carsten M. (ccp1con)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht meines Wissens nicht/nicht sinnvoll mit struct.
// im Header
#define on 1
#define off 0
#define meine_LED1     LATDbits.LATD7
#define meine_LED2     LATDbits.LATD8

// im Programm
meine_LED1 = on;

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

: Bearbeitet durch User

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.