Forum: Mikrocontroller und Digitale Elektronik Software UART mit PIC


von excelsior (Gast)


Angehängte Dateien:

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!

von excelsior (Gast)


Lesenswert?

ERGÄNZUNG:

..Läuft mit 20 Mhz..

von Mario (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.