-         

Ergebnis 1 bis 8 von 8

Thema: #define "PortPin" im Header-Datei

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1

    #define "PortPin" im Header-Datei

    Anzeige

    Hallo Freunde !
    ja das berühmte "Brett vorm Kopp.." hat wieder zugeschlagen.. Ich möchte in einer Headerdatei mit #define einem bestimmten Namen einen PortPin zuweisen , so das ich zBsp.
    Code:
    #define Output1 PORTD
    #define LED1 PIND1
    
    ... usw
    Code:
    Output1  &= ~(1 << LED1)
    schreiben kann. Ich weiss aber nicht wie ich so etwas definieren muss, ich meine wie ich die zugeordneten Pin/Ports schreiben muss und ob es überhaut geh...

    Mir geht es darum, in grösseren Projekten einfach durch Änderung im #define mal eine Änderung vor nehmen zu können , das ich nicht dann den ganzen Source ändern muss.
    Ich hoffe das ich mich richtig ausgedrückt habe und zu erkennen ist, was ich eigendlich möchte. Ich habe es leider nicht verstanden, per Webrecherche danach zu suchen, weil ich mich wahrscheinlich nicht recht in den Suchmaschinen richtig ausdrücken konnte...

    Ich freu mich wenn mir Jemand helfen könnte...

    Gruss und Danke

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Kandel
    Alter
    29
    Beiträge
    1.220
    Hallo Gerhard,

    ich sehe dein Problem gerade nicht. Der Code den du da geschrieben hast realisiert doch genau die von dir gewünschte Funktion, oder übersehe ich was?

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Danke Markus !

    Ja ich weiss nicht ...der Compiler( AVR-Studio + STK500-DevBoard) meckert wenn ich hinter einer '#define Name Bezeichnung' über die Bezeichnung wenn da Text steht...aber ich werde mal weiter probieren..
    Gruss
    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    ...der Compiler( AVR-Studio + STK500-DevBoard) meckert ...
    *Grübel* Sag mal, der Ausdruck PIND1 ist doch der Inhalt von Bit1 {0...7} des PORTD, oder nicht? Und ich habe so den Eindruck, dass Du den Pin PD1 von PORT D schalten möchtest. Ich würde das anders schreiben - so in der Art #define LED1 PD1. Und wenn mich nicht alles täuscht, ergibt das Auslesen eines Ausgangsregisters mit dem Befehl PINxn ein Umschalten (toggeln) des Pinns.
    Ciao sagt der JoeamBerg

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Ja Oberall..
    So meine ich das... soeben musste ich feststellen das mein oben vorgestellter "Code" nun plötzlich angenommen wird, jedenfalls wenn ich ihn so in der main.c im header so schreibe. Vielleicht hatte ich ja in der direkten Headerdatei noch ein Fehler beim Einbinden oder so. Dann hatte ich was in der Form von "_sv_" oder so ähnlich im Web gefunden, da die Beschreibung in english war/ist musste ich leider streiken...

    Nun ist mir schon geholfen, das es so geht. Werde es gleich noch mit separater Headerdatei versuchen...
    Ich könnte mir auch denken das vieleicht der verwendete µC diese von mir benutzte Pinangabe nicht mag...Das AVR Studio meckert ja wenn da was falsch ist also Code und Chip nicht übereinstimmen...

    Mal gleich einflechte, kann man eigendlich im Header mit '#define auch den µC festlegen um dann Chipgerecht auf die richtigen Register zuzugreifen... ??
    Ist zwar ein anderes Thema aber viell. hat ja wer grad ne passende Antwort der das hier liest...

    Gruss und Dank

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Kandel
    Alter
    29
    Beiträge
    1.220
    Zitat Zitat von oderlachs Beitrag anzeigen
    Mal gleich einflechte, kann man eigendlich im Header mit '#define auch den µC festlegen um dann Chipgerecht auf die richtigen Register zuzugreifen... ??
    Ist zwar ein anderes Thema aber viell. hat ja wer grad ne passende Antwort der das hier liest...
    Ja, du kannst über #if / #endif eine Fallunterscheidung einbauen die Abhängig vom jeweiligen µC ist. Je nach ausgewähltem AVR werden eine ganze Reihe von Makros gesetzt, die Aussagen über die Prozessorgeneration und vorhandene Features/Eigenheiten treffen. Eines dieser Makros beschreibt den konkreten Prozessortyp, z.Bsp. __AVR_ATmega8__

    Code:
    #if __AVR_ATmega8__
    //do something for Mega8
    #endif
    #if __AVR_ATmega32__
    //do something for Mega32
    #endif
    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.435
    Hallo Gerhard,

    #define funktioniert eigentlich wie "Suchen und Ersetzen" in der Textverarbeitung!

    Und da #define zum Pre-Processor gehört, wird dies ausgeführt bevor der Compiler anfängt zu Übersetzen.

    Deshalb muss man bei gewissen Dingen dann etwas aufpassen

    #define BufferSize 10+1

    int a[BufferSize]; // ergibt ein Array mit 11 int

    int a[BufferSize * 3]; // ergibt ein Array mit 13 int !!! und nicht wie erwartet 33.
    Nach dem Pre-Processor sieht das folgendermassen aus:
    int a[10 + 1 * 3]; // und dies ergibt aber 10 + 3 = 13

    Mit
    #define BufferSize (10+1)
    funktioniert es dann richtig!
    int a[(10 + 1) * 3];

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Danke Markus, danke Peter !

    So langsam frischt sich der Speicher im Kopfe wieder auf...schon mal gelerntes wird aufgefrischt

    Ja ich denke nun weiss ich Bescheid und kann meine Aufgaben lösen, Dank der Hilfe im Forum hier !

    Gruss und DANKE

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 01.11.2017, 13:53
  2. syscode "p5driv12.s19", Datei nicht gefunden
    Von Wolfes im Forum Robby CCRP5
    Antworten: 1
    Letzter Beitrag: 29.01.2012, 21:21
  3. "Funktionen" in andere Datei auslagern
    Von CowZ im Forum Assembler-Programmierung
    Antworten: 11
    Letzter Beitrag: 29.09.2008, 16:21
  4. "rückkompilieren" einer hex-Datei möglich?
    Von pinsel120866 im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 09.07.2008, 20:37
  5. Portpin "gleichzeitig" als Ein-und Ausgang nutzen?
    Von dl1akp im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 28.09.2007, 22:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •