-
        

+ Antworten
Seite 1 von 6 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 54

Thema: pic an pc über serielle schnittstelle

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253

    pic an pc über serielle schnittstelle

    Anzeige

    moin!

    ich würde gerne den pic16f84 über die serielle schnittstelle mit meinem pc labern lassen (erstmal hyperterminal). ich hab das schonmal gemacht, allerdings nicht privat... und nicht selber gebastelt.. also, hat jemand nen link zu nem schaltplan, bzw kann mir jemand sagen, wie das genau geht (pin-belegung am serial-port, usw..). ich denke ich brauche dann noch diesen ominösen max-sonstwie-ic.

    ach, und als ich das damals schonmal gemacht hatte, hatte ich zahlen an den rechner gesendet und der hat die als ascii-code genommen und mir den entsprechenden buchstaben angezeigt.. kann man das irgendwie umgehen? also dass der direkt die zahl anzeigt? oder muss ich die variable erst in ne ascii-nr umwandeln (per software im pic), die die zahl darstellt?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    33
    Beiträge
    506
    1.) Der 16F84 hat keinen Hardware-UART, das bedeutet keine Hardwareunterstützung für deine serielle Schnittstelle und somit musst du das Verhalten der seriellen Schnittstelle in Software nachbilden (oder einen anderen PIC mit Hardware-UART nehmen) - das ist aber nicht weiter schwer: Du musst an einem Pin in genau dem richtigen Takt deine Daten absenden und an einem anderen Pin auf deine Daten warten. Wenn du nur senden willst, ist das einfacher, aber wenn du auch empfangen willst, wird das ein klein wenig aufwendiger.

    Das ganze sieht folgendermaßen aus:

    PIC mit Hardware-UART (z.B. 16F870):
    - du initialisierst den UART
    - du schreibst das zu sendende Byte in ein spezielles Register
    - fertig

    PIC ohne Hardware-UART (z.B. 16F84):
    - Timer einrichten
    - Startbit am Pin anlegen
    - Erstes Datenbit extrahieren (Bitmaske auf das Byte legen und verUNDen)
    - Auf Timer-Interrupt warten
    - den Ausgangspin entsprechend dem Datenbit setzen
    - nächstes Bit extrahieren (rechtsverschieben, Bitmaske, verUNDen)
    - auf Timer-Interrupt warten
    - ...
    - Stoppbit anlegen
    - fertig

    Also, wie du siehst ist beides nicht so aufwändig. Wenn du allerdings auch Daten mit dem PIC empfangen willst, so musst du bei Hardware-UART nur ein Register auslesen und fertig. Ohne Hardware-UART musst du nach dem Timer-Interrupt immer dein Empfangsbit prüfen, ob da ein Startbit dran liegt. Wenn ja, dann Merker setzen und weiter wie ghabt. Beim nächsten Timer-Interrupt das Bit am PIN auslesen und in ein Byte schieben (also verODERn, dann nach links verschieben). und immer so weiter, bis das 10. Bit da ist. Das muss dann HIGH sein.

    Zur Hardware: MAX muss bei reinem senden nicht sein, da reichen Transistoren, die das Ausgangssignal invertieren. Wenn du den UART in Software nachbildest, kannst du auch auf die verzichten. Natürlich kannst du auch nen MAX nehmen, aber die 80 Cent kannst du dir auch sparen...

    Zur PC-Software: Dein Programm liest von der seriellen Schnittstelle immer ein Byte. Wie du das interpretierst - ob als Zahl oder als ASCII-Zeichen - das ist egal. Du kannst natürlich auch immer die Zahl anzeigen lassen... oder die Zahl umrechnen... alles prblemlos möglich.

    MfG
    Stefan

  3. #3
    Gast
    ich benutze ne basic-aehnliche hochsprache zum pic proggen. da gibt es die befehle serin und serout. denen gibt man nen pin, ne baudrate und variablen. ich denke das duerfte schon reichen. ich brauch dann halt nur die schaltung....

  4. #4
    Gast
    der beitrag ueber diesem war auch von mir

    nicht eingeloggt

    goblin

  5. #5
    ingo_01
    Gast
    Hallo goblin,

    brauchst Du nur Schaltung!!
    Guckst Du hier: http://home.earthlink.net/~david.ek/...s/dscschem.gif

    GRUSS
    INGO

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    33
    Beiträge
    506
    @ingo: also die Schaltung ist nicht grade die beste dafür... da ist ein bissle zuviel drauf und die Bauteile sind teilweise falsch dimensioniert...

    Ich habs grade mal kurz neu gezeichnet (siehe Anhang)...
    Das ist vom Prinzip her die minimale Beschaltung eines PICs mit einem MAX232. Mit etwas weniger Bauteilen ginge es auch nur mit Transistoren, aber dann ist das ganze auch störanfälliger und etwas komplizierter zu verstehen.

    Der MAX ist nur ein Pegelwandler von TTL auf +-15V (mehr oder weniger).
    Es gibt verschiedene Varianten davon:
    -die günstigste: MAX232 (ohne irgendwas) braucht 1uF bis 4.7uF Elkos (die 10uF Elkos sind eigentlich genaugenommen schon ausserhalb der Specs, aber gehen auch notfalls. Nur der IC zieht dann im Einschaltmoment kurzzeitig mehr Strom, als er dürfte.)
    - die teuren: MAX232E (Enhanced) braucht 100nF bis 1uF-Kondensatoren (müssen keine Elkos sein, können aber). Diese sind besonders gut für kompakte Layouts geeignet, da die Kondensatoren kleiner sind.
    - die sehr teuren: MAX232AXTC brauchen gar keine externen Bauteile, kosten aber auch über 10 EUR das Stück bei 1000er-Abnahme und gibt es nicht einzeln zu kaufen.
    - von diversen anderen Herstellern, z.B. ST232 von STMicroelectronics oder auch von TI. Funktionieren genauso, PIN-kompatibel, aber manchmal andere Kondensatorwerte... also immer im Datenblatt nachschaun.
    - sehr viele sehr ähnliche (gleiche Funktion) von diversen Herstellern (auch von Maxim) mit ähnlichem Namen (z.B. MAX202). Also auch hier im Datenblatt schaun.

    MfG
    Stefan
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken pic_max232.jpg  

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    warum sind denn da pinne mit kondensatoren verbunden? und ist pin 5 der seriellen schnittstelle masse oder muss der auf masse gelegt werden?

    ach, und ist das : link der richtige ic?

    edit by stegr: Bitte keine so langen Links posten... das Layout wird sonst verzerrt...

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    33
    Beiträge
    506
    1.) Die Kondensatoren werden für die Ladungspumpe, die in dem IC drinnen ist, benötigt. Und um dabei die richtigen Werte zu erhalten, müssen die auch in der richtigen Größenordnung liegen.
    2.) Pin 5 der Seriellen muss auf Masse gelegt werden. [ist aber genau das gleiche, wie "ist Masse". Gleich bezeichnete Netze müssen immer verbunden werden. Wenn du dir die Belegung angeschaut hättest, würdest du feststellen, dass auf Pin 5 GND liegt.]
    3.) Ja, der IC ist der richtige.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    ok, danke!

    dann werd ich das mal basteln und hoffen, dass es funzt. sonst sehen wir uns in diesme thread wieder

    überigens, sorry wegen dem link!
    ich werds jetzt so machen: Link .. sieht auch besser aus

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    ich hab jetzt nen max232N , muss also die elkos nehmen. nun hab ich hier noch aus meinem dvd-player (schrott) welche mit 3,3 µf und 50V rumliegen. kann ich die nehmen?

+ Antworten
Seite 1 von 6 123 ... LetzteLetzte

Berechtigungen

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