- LiFePO4 Speicher Test         
Ergebnis 1 bis 5 von 5

Thema: c-Programmierung: in ausgelagerter Funktion auf Port-Pin zugreifen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2007
    Beiträge
    16

    Idee c-Programmierung: in ausgelagerter Funktion auf Port-Pin zugreifen

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich würde gern eine Funktion so in eine eine eigene .c-Datei auslagern, dass diese für viele Projekte wiederverwendbar ist.
    Die Funktion soll aber auf ein Portpin zugreifen können, welches sich je nach Projekt ändern kann.
    Also z.B. so etwas:

    Code:
    // Datei blink.c
    //#define led PORTBbits.RB0;
    
    void blink(char anzahl){
        while(anzahl-->0){
            led=1;
            warte();
            led=0
            warte();
        }
    }
    Die Definition von "led" möchte ich aber nicht auslagern, da in einem anderen Projekt die LED an einem anderen Pin angeschlossen sein könnte.
    Im Prinzip möchte ich also genau das machen, was von Haus aus auch schon mit _delay_us() geht. Um das delay nutzen zu können, muss ich zuvor _XTAL_FREQ definiert haben.
    Wenn ich "led" aber nicht im ausgelagerten Teil, sondern im Projekt-c-File definiere beschwert sich der Compiler, weil ihm die Definition dort fehlt, wo er sie braucht.

    Weiß jemand, wass man tun muss, damit sowas funktioniert?

    (Ich möchte natürlich nicht in blink.c ein include einbauen, dass dann die jeweilige Definition einliest. Denn dann kann ich ja nicht ein und dieselbe blink.c für verschiebdene Projekte nutzen.)

    Viele Grüße
    Stefan

  2. #2
    shedepe
    Gast
    Etwas andere Lösung als mit _delay_us(), aber sollte trotzdem funktionieren.
    Du übergibst der blink Funktion als Argument welchen Pin sie benutzen soll.
    Code:
    void blink(char anzahl, PORTBbits pin)
    {
    
    }
    Das ist jetzt nur mal geraten, sollte aber funktionieren wenn PORTBbits ein Enum oder Struct ist.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2007
    Beiträge
    16
    ja, das geht natürlich auch. An die Option hatte ich noch gar nicht gedacht. Danke.
    Allerdings sind die auszulagernden Routinen etwas größer als das LED-Beispiel und benötigen mehrer Hardwareelemente (2 Pins, 1 Timer).
    Für kleine Routinen werde ich das bestimmt auch mal so machen.
    Für größere Sachen habe ich mir jetzt überlegt, dass ich Pinzuweisungen o.ä. immer in eine config.c schreibe, die ich dann jeweils bei allen ausgelagerten routinen standardmäßig mit einbinde.
    Nich so schön, aber erfülllt auch die Anforderungen.

    Falls jemand doch noch weiß, warum sich der Comiler bei _XTAL_FREQ nicht beschwert, würde das aber trotzdem gern noch wissen

    (PS: späte Antwort wegen Dienstreise)

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von changlee Beitrag anzeigen
    Für größere Sachen habe ich mir jetzt überlegt, dass ich Pinzuweisungen o.ä. immer in eine config.c schreibe, die ich dann jeweils bei allen ausgelagerten routinen standardmäßig mit einbinde.
    Ich würd das eher config.h oder auch hardware.h nennen. Wenn man Definitionen Fileübergreifend benutzen will, ist das IMHO der richtige Weg.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2007
    Beiträge
    16
    ja, config.h meinte ich auch
    Ich schreibe jetzt in die config.h sämtliche configuration-bits sowie alle Hardware-Definitionen rein, und in die zugehörige config.c die Initialisierungsroutinen.
    Danke un viele Grüße
    Stefan

Ähnliche Themen

  1. Programmierung Schalter Funktion (start Script) im Mini Maestro 12
    Von Heli-Xtreme im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 0
    Letzter Beitrag: 26.07.2013, 10:35
  2. Port oder Alias an Funktion als Parameter?
    Von luvat im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 30.12.2009, 19:15
  3. Wie auf Pins zugreifen?
    Von Jacob2 im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 01.03.2008, 11:55
  4. Auf USB zugreifen
    Von blizzard im Forum Software, Algorithmen und KI
    Antworten: 7
    Letzter Beitrag: 01.02.2006, 17:15
  5. Vom PC aus über TCP/IP auf S7 zugreifen
    Von Thorsten80 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 2
    Letzter Beitrag: 12.01.2006, 09:29

Stichworte

Berechtigungen

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

12V Akku bauen