-         

Ergebnis 1 bis 5 von 5

Thema: pic <=> uart <=> pic

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53

    pic <=> uart <=> pic

    Anzeige

    Hallo an alle,

    ist es möglich zwei Pic's (16f884) über die EUART(UART)-Schnittstelle kommunizieren zu lassen?

    Hat vielleicht schon jemand Erfahrung damit?

    Bin für jeden Rat dankbar.

    michael

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    08.04.2004
    Ort
    Regensburg
    Alter
    38
    Beiträge
    55
    Hio,

    habe zwar noch nie einen 16f884 programmiert aber warum sollte das nicht funktionieren?
    Datenblatt Kapitel 12
    Du hast ein Rx- und ein Tx-Register in beiden Controllern.
    (Nun kenn ich deine Vorkenntnisse nicht. Also fang ich einfach bei 0 an. )
    HW-technisch verbindest du Rx1 mit Tx2 und Rx2 mit Tx1 das wars dann (Masse sollte auch verbunden sein).
    SW-technisch:
    Full-duplex asynchronous transmit and receive.
    Bei mir heißt das so viel wie: Du kannst senden und empfangen gleichzeitig.
    Wenn du mit C1 was sendest bekommst du einen Interrupt bei C2 das etwas empfangen wurde. Bei C1 bekommst du auch einen Interrupt das etwas gesendet wurde. Somit kannst du dir entweder eine Bestätigung von C2 schicken lassen oder du befüllst das TXREG von C1 wieder neu und es werden die nächsten 8 Bit gesendet.
    Wenn ich das richtig gelesen habe, kannst du auf das TRMT Flag pollen, falls du keinen Interrupt nutzen willst. Beim Empfangen musst du wohl auf den Interrupt zuück greifen.

    Bessere Vorschläge?

    LG
    Martin

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    Danke Martin,

    genau das habe ich versucht, die zwei Controller gekreuzt miteinander zu verbinden, jedoch bekomme ich auf der einen Seite keinen Interrupt wenn ich von der anderen Seite eine Hex Zahl sende...
    Aber wenn ich den FTDI Chip die UART-Schnittstell mit der USB- Schnittstelle verbinde, kann ich ohne Probleme senden und empfangen....

    Ich werde mit morgen einmal die Datenübertragung mittels Oszi anschauen und dann mich auf die Software stürzen...

    Danke nochmal, jetzt weiß ich, dass es prinzipiell funktionieren muss, denn ich hab schon daran gezweifelt.

    Michael

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Alter
    29
    Beiträge
    122
    hiho

    Ich hab das mal mit 2 16F628a probiert. Hat zuerst nie funktionniert, bis ich gemerkt habe, dass kein Interrupt ausgelöst wurde, bim Datenempfang.
    Als ich dann das Ganze mit polling gemacht habe, ist es prima gegangen.
    (wie du beschrieben hast, hab ich auch einfach die beiden uC gekreuzt miteinander verbunden.)

    An dem Interrupt-Problem hab ich dann aber nicht weitergearbeitet.

    greez
    Anything that can go wrong, will go wrong. Kabel sind entweder zu lang oder zu kurz...

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    08.04.2004
    Ort
    Regensburg
    Alter
    38
    Beiträge
    55
    Normalerweise muss man die Interrupts einzeln freigeben und dann auch alle Interrupts. Am besten lässt du in einem Interrupt einen Pin toggeln. Dann kannst du das am Oszi sehen, wenn ein Int ausgelöst wird. Alternativ kannst du auch ein Mulitmeter an den Pin hängen und wenn du die ganze Zeit was von einem PIC sendest solltest du an dem Pin eine Spannung >0V und < Vcc messen. (würde nun behaupten so 2,5V, bei 5V Versorgung)
    Datenblatt ab Seite 33 (Global Interrupt Enable bit) und Seite 34 (EUSART Receive Interrupt Enable bit) (EUSART Transmit Interrupt Enable bit)
    (Seiten beziehen sich auf den AcrobatReader)

    LG
    Martin

Berechtigungen

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