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!