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!
Kleine Korrektur. Habe gerade gesehen, dass ich zwei Defines und die Includes noch aus meinem Projekt stammen. Habs jetzt angepasst.
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.