www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Software UART mit PIC


Autor: excelsior (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Autor: excelsior (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ERGÄNZUNG:

..Läuft mit 20 Mhz..

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.