Software UART mit PIC

Gast #272149
Lesenswert?
• ▲
▼
Hi Leute,

ich versuche eine UART per Software zu programmieren (CC5X Compiler)
aber irgentwie funktioniert das Ganze nicht. Nachdem ich nun 3 Tage an
dem Problem gewerkelt ahbe weiss ich nun wirklich nciht mehr weiter,
aber vielleicht kann mir jemand helfen.

Zum Ablauf:

RX-Pin ist PORTB.0

- Warte bis eine fallende Flanke am RX-Pin erkannt wird (= Startbit)
- Starte dann Timer0 mit der 1,5 fachen Zeit der BAUD-Rate
- Wenn Timer0 dann einen IRQ auslöst, müsste ich mitten im ersten Bit
sein
- Setze dann Timer0 auf die Zeit die ein Bit bei 19200 bps braucht
- Shifte dann jeweil beim Timer IRQ die Bits rein
- Überprüfe das 9.Bit auf Stopbit
- Schalte den Timer aus, und warte wieder auf eine fallende Flanke um
neu zu beginnen.


Wenn ich das ganze Teste bekomme ich auch "ähnliche" Werte
ausgegeben. Allerdings ist meist das Byte verschoben, so daß das MSB
fehlt.


Ich habe das Gefühl das meine errechneten Timer-Werte nicht passen und
das ganze unsynchron läuft. Vielleicht kann jemand mal nachschauen.
(Der Quelltext ist strukturiert und kommentiert!)

Danke im Voraus!
Angehängte Dateien:
Gast #272151
Lesenswert?
• ▲
▼
Hallo,

weiterhelfen kann ich Dir vermutlich nicht, da sich der Code nicht so
einfach analysieren läßt. Ich kann Dir nur ein paar Tipps geben:
* Das Timing ist extrem wichtig, daher wird eine Soft-SPI zumeist in
ASM programmiert, da weiß man wieviel Zeit wo verbraucht wird.
* Es könnte sein, dass die Leitung zunächst den falschen Pegel
aufweist, sodaß initial fälschlichwerweise ein Start-bit erkannt wurde
- das wiederum bringt alles aus dem Takt (Zähler).

Schau mal auf www.sprut.de, dort ist auch einen Source für die Software
emulation auf der Seite und erklärt auch den Rest sehr gut.

Gruß
Mario

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.