Forum: Projekte & Code Software UART


von Hannes E. (k1ngarthur) Benutzerseite


Lesenswert?

Hallo,

ich brauchte letztens einen Software UART. Für die Bibliotheken, welche 
man online findet, benötigt man jedoch einen ICP-Eingang und einen 
Output-Compare-Ausgang.

Das steht mir aber leider nicht zur Verfügung, also habe ich mit Hilfe 
eines Timer einen eigenen Software UART geschrieben, welchen ich gerne 
mit euch teilen möchte. Über Kritiken freue ich mich selbstverständlich 
sehr!

Die Lib ist für einen Atmega168 und den Timer1. Es geht aber prinzipiell 
mit jedem Timer. Der Timer misst mit einem einstellbaren Oversampling 
einen beliebigen RX Eingang. Der Schwellwert, wann ein Wert als High 
erkannt wird, ist einstellbar (ich empfehle hierbei min. 50%). Das 
Senden verläuft ähnlich.

Zu beachten ist, dass eine hohe Baudrate zu einer kurzen zeit zwischen 
den Timer-Interrupts führt, da das nicht wie beim Hardware UART eine 
eigene Einheit macht.

Für eine kleine zusätzliche Debugging-Schnittstelle o.ä. reicht es aber 
auch eine geringe Baudrate.

Ich wünsche viel Spaß damit!

: Verschoben durch Moderator
von Hannes E. (k1ngarthur) Benutzerseite


Angehängte Dateien:

Lesenswert?

Kleine Korrektur.
Habe gerade gesehen, dass ich zwei Defines und die Includes noch aus 
meinem Projekt stammen.

Habs jetzt angepasst.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Hannes E. schrieb:
>...
> ich brauchte letztens einen Software UART. Für die Bibliotheken, welche
> man online findet, benötigt man jedoch einen ICP-Eingang und einen
> Output-Compare-Ausgang.
>...

Nicht bei allen...
http://www.siwawi.arubi.uni-kl.de/avr_projects/#softuart
ist aber gleiches Prinzip

Als Mod.: Anhang im ersten Beitrag gelöscht, da im zweiten Beitrag 
korrigiert. Thread in Unterforum Codesammlung verschoben.

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.