-
        

Ergebnis 1 bis 9 von 9

Thema: Signale an Ports abfragen???

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Magge2k
    Registriert seit
    27.10.2004
    Beiträge
    163

    Signale an Ports abfragen???

    Anzeige

    Hi Leute,

    ich hätte da mal ne frage bezüglich des Einlesens von signalen in den PIC.
    Ich möchte meinem PIC 16F871 mit Hilfe des Parallelports des druckers mit 8 Bit am PORTD ansprechen. Dieser ist in der normalen I/O Port funktion und nicht in den PSP geschaltet. Mein erstes Ziel wäre es über eine kontinuierliche Abfrage des Portds immer ein Wechselndes Bitmuster abzufragen.

    Wenn ich z.B. 00000101 an Port D anlege soll der µController eine Funktion starten. beispielsweise einen Schrittmotor ansteuern. Als Pogrammiersprache verwende ich C -> C Compiler = CC5X in der Freeware Version.

    Auf antworten würde ich mich freuen.
    gruß Marc

  2. #2
    ingo_01
    Gast
    Hi Marc,
    Du brauchst den D-Port nicht kontinuierlich abfragen! Es reicht wenn Du das Strobe-Signal des Parallel-Ports auf einen Interupt-Eingang legst. Entweder auf B7-B4, dann kann man den B-Change-Interupt abfragen. Oder auf B0, dann man den Externel-Interupt aktivieren, auf steigende oder fallende Flake einstellen und schon ist der Pic immer informiert wenn Daten vom parallelen Port zu holen sind!

    GRUSS
    INGO

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Magge2k
    Registriert seit
    27.10.2004
    Beiträge
    163
    Hi Ingo,

    danke für den Tip, das hört sich gut an. Aber weißt du zufälliger weiße auch wie man den PIC dann programmiert? Weil darin sehe ich auch noch ein problem, das ich nicht so ganz genau weiß wie ich dies umsetzen soll!

    gruß marc

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    34
    Beiträge
    506
    Aufbau des Programms:
    - Auf Interrupt warten
    - Schauen, ob es auch der richtige Interrupt ist (die PIC's haben nur einen Interruptvektor)
    - Auslesen des Wertes an PortD (als Byte)
    - Select Case-Schleife:
    -- wenn Wert = 00011000, dann springe zu Funktion a()
    -- wenn Wert = 00001100, dann springe zu Funktion b()
    -- wenn Wert = 00001110, dann springe zu Funktion c()
    -- usw.
    - Die einzelnen Funktionen, z.B. zum Ansteuern des Schrittmotors...

    Das ist eigentlich das ganze Programm...

    MfG
    Stefan

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Magge2k
    Registriert seit
    27.10.2004
    Beiträge
    163
    Danke Stefan,

    nur noch eine frage wie genau funktioniert daß auslesen des PortD's?
    Das ist eigentlich mein hauptproblem!

    gruß Marc

  6. #6
    Gast
    Du bindest die zum Pic gehörende include Datei in Deinen Assembler-Code ein und dann:

    movf portd, w

    und schon steht der Wert von PortD im W-Register und kann weiter verarbeitet werden.

    GRUSS
    INGO

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Magge2k
    Registriert seit
    27.10.2004
    Beiträge
    163
    hey cool, danke!

    ihr habt mir wirklich weitergeholfen.
    ich wünsche euch noch ein schönes Jahr 2005!

    gruß Marc

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    34
    Beiträge
    506
    Da du mit C programmierst, sollte es auch eine entsprechende Routine geben, die das über eine C-Funktion erledigt.

    Assembler sollte man nur dann in C-Programme einbinden, wenn es gar nicht anders geht, d.h. es auf die Geschwindigkeit ankommt.

    Im CC5X (hab ich zwar nie benutzt, aber die haben auch Beispiele) gibt es dazu die Präprozessoranweisung #pragma. Diese weist einem Symbol (Namen) einen Pin bzw. Port zu. Wie das geht, siehst du am besten in Beispiel 1 auf der Homepage von CC5X.
    Anscheinend kannst du wohl aber auch direkt unter dem Symbol PORTD auf den Port zugreifen und musst davor nur das TRISD-Register entsprechend setzen.

    Ansonsten wünsch ich dir auch ein gutes Neues...

    MfG
    Stefan

  9. #9
    ingo_01
    Gast
    UUPPSS

    das mit dem CC5x Compiler hatte ich völlig übersehen!! SORRY

    GRUSS
    INGO

Berechtigungen

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