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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.