PIC USART allgemeine Frage

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 03 1 2026  10:50:32      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
PIC USART allgemeine Frage
Suche nach: pic (2060)

    







BID = 135641

Nuke77

Neu hier



Beiträge: 32
Wohnort: köln
 

  


Hallo zusammen,
ich beschäftige mich mit einem PIC16F627.
Ich benutze übrigens den CC5X Compiler.

Leider habe ich keine Erfahrungen mit der USART Schnittstelle.

Bevor kommt, guck bei Sprut, hab ich schon relativ genau.
(Die Erklärung ist super, lässt aber noch ein paar NOOB Fragen offen)

Mir gehts eher um die Funktionsweise, wie kann ich mir das vorstellen? Läuft die Schnittstelle quasi neben dem Programm her und wenn ein Byte fertig ist wird ein Flag gesetzt?

Und angenommen, das Byte kommt nicht komplett an, setzt die sich dann nach einer gewissen Zeit zurück oder krieg ich dann beim nächsten Empfang Probleme, weil noch ein halbes drin steckt?

Und zu guter letzt was allgemeines zur Programmierung, wenn Ihr eine Zahl, die größer als ein Byte ist, übertragen wollt, wie macht Ihr das?
Irgendwie müsste ich das ja in 2 Byte aufteilen oder gibts da was, was ich nicht kenne?

(Das wär alles kein Problem würd ich die Softwarelösung nutzen, nur will ich mit Interrupts arbeiten)


danke schonmal
im Vorraus
Nuke


BID = 135645

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

 

  

Du wirst dich wohl zu erst einmal entscheiden müssen, ob du die Schnittstelle asynchron oder synchron betreiben möchtest.

Asynchron ist viel einfacher, da kann zwischen den zu sendenden Bytes beliebig viel Zeit verstreichen, während im synchronen Betrieb stets ein kompletter Rahmen gesendet werden muß.

Wenn nichts zu senden ist, ruht im asynchronen Betrieb die Leitung auf einem bestimmten Pegel (Mark), während im synchronen Betrieb Idle-Sequenzen gesendet werden.

Der PC hat standardmäßig übrigens nur UART-Schnittstellen, kann also ohnehin nicht synchron arbeiten.


_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 135652

Nuke77

Neu hier



Beiträge: 32
Wohnort: köln

Oh sorry,
hatte ich vergessen dran zu schreiben,
ich wollte die auf jeden Fall asynchron
betreiben.

Daher auch die Frage mit dem Steckenbleiben,
wenn also zum Zeitpunkt x nur 5 Bit gesendet werden, der Rest kommt aus irgendeinem Grund nicht an.

Bleiben diese 5 Bit dann unbegrenzt im Buffer und ich krieg zum Zeitpunkt y, sagen wir 5 Minuten später Probleme wenn ich ein anderes Byte empfangen möchte?

Und dann eben noch die Frage, ob das "unabhängig" vom Hauptprogramm passiert?

[ Diese Nachricht wurde geändert von: Nuke77 am  4 Dez 2004  3:03 ]

BID = 135655

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Im asynchronen Betrieb wird das Timing von der Hardware gemacht.
Jedes zu sendende Byte (bei gebräuchlichen UARTs auf 5 bis 8 Bit mit oder ohne Parity einstellbar) wird von einem Startbit (Space) eingeleitet, dann kommen die Datenbits, dann evtl. Parity und am Schluß auf jeden Fall mindestens ein Stopbit (Mark), welches aber beliebig lange dauern kann.

Auf der Senderseite gibts Flags, die der Software anzeigen, ab wann das Aufangregister nachgeladen werden darf, und wann das letzte Byte komplett aus dem Schieberegister gesendet ist.

Auf der Empfängerseite wartet die Mechanik (wars in den Fernschreibern wirklich !) bis sie die Startpolarität sieht, wartet etwa bis zur Mitte des ersten Datenbits und taktet dann mit der Baudrate die Bits in das Schieberegister.
Wenn die eingestellte Bitzahl im Kasten ist, wartet die Mechanik noch auf das Stopbit, bevor sie zusammen mit den Statusflags den Inhalt des Schieberegisters ins Auffangregister überträgt.
Die Flags für den Empfang bedeuten: Byte kann abgeholt werden, Parityfehler oder OK, Framing Error (=Stopbit fehlt) oder OK.

Der Fall daß ein Byte nicht komplett gesendet wird, kann also nur passieren, wenn die Software ohne Rücksicht auf eine evtl. laufende Übertragung den UART neu initialisiert.

Empfangsseitig kann natürlich während der Übertragung jemand die Leitung herausreißen, aber die Statemachine des Empfängers läuft trotzdem ab und setzt nach der letzten Bitzeit die entsprechenden Flags.

Die sende- und empfangsseitig vorhandenen Auffangregister sorgen für einen flüssigen Ablauf und erleichtern der Software die Arbeit, weil sie jetzt nicht bitgenau Daten liefern und holen muß, sondern dafür soviel Zeit hat, wie es braucht das ganze Datenwort zu übertragen.
Bei den schnellen "richtigen" UARTs, wie sie z.B. im PC verwendet werden, sind zusätzlich noch 15 Byte tiefe FIFOs vorhanden, um der Software genügend Reaktionszeit zu lassen.


_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 135736

Nuke77

Neu hier



Beiträge: 32
Wohnort: köln

Danke,
das war ziehmlich genau, was ich wissen wollte.

Wie ich mir selbst schon dachte, hatte ich eine falsche
Vorstelleung der Übertragung.

Da ich bis jetzt nur mit IIC was gemacht hab, dachte ich, dass da noch ein Takt im Spiel ist.

Hätte mir eigentlich klar sein müssen, dass dem nicht so ist, sonst bräuchte ich ja keine Baud-Rate einstellen.


danke nochmal
Nuke


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 1 Beiträge verfasst
© x sparkkelsputz        Besucher : 188032167   Heute : 2580    Gestern : 6521    Online : 246        3.1.2026    10:50
6 Besucher in den letzten 60 Sekunden        alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0266449451447