Forum: Projekte & Code PFS154: Timer 2 interrupt getriebener SoftwareUart


von Ralph S. (jjflash)



Lesenswert?

Nachdem ich lange nichts mehr mit PFS154 gemacht habe und dann für ein 
anderes Projekt dann doch den PFS154 einsetzen will (weil es dafür schon 
eine PCB gibt) war ich gezwungen, noch einmal über die Sache mit einem 
"SoftwareSerial" nachzudenken, vor allen Dingen deshalb, weil meine 
bisherigen seriellen Sachen (mit Zählschleifen) nicht mehr so sauber mit 
neuerem SDCC funktioniert hatten.

Außerdem war mir dann das Timing wieder auszumessen irgendwie zu 
kritisch und aus diesem Grund habe ich eine "bessere" Lösung für einen 
softwareimplantierten UART gemacht.

Grundsätzlich bestimmt der Timer 2 Interrupt mit Boundary (das ist in 
etwa ein "compare match") das Timing des UART. Hier wird für den 
Receive-Pin kontinuierlich getestet, ob ein Startbit eingegangen ist.

Damit dieses Startbit gut erkannt wird, wird der Receivepin 4-fach 
oversampled, so dass es eine stabile Übertragung etabliert ist.

:-) das hat sogar den "Eiswürfel-Fön-Test" überstanden (Minusgrad und 
Hitze), das sampling der Pins geschah immer im korrekten Zeitfenster des 
abgefragten Bits. Ein Versuchsprogramm sendete im 250 ms Abstand 
permanent ein zufälliges Zeichen und softwareuart sendete dieses als 
Echo zurück: es gab keine Abweichung.

softwareuart kann mit den Baudraten 1200, 2400 und 4800 betrieben 
werden.

Alle Dateien die zum Übersetzen eines Demoprogramms notwendig sind, sind 
im Archiv enthalten (Buildprozess ist nur für Linux erstellt).

Dokumentation hierzu gibt es im Anhang und im Archiv

Wer es brauchen kann: Viel Spaß damit
(ich hatte zum Schluß hin keinen mehr, weil sich das Debuging eines 
Fehlers mit Logicanalyzer als hartnäckig herausstellte... nur um dann 
festzustellen, dass ich eine ältere Methode von mir zum 
Initialisierender GPIO-Pins verwendet hatte: ich habe darin nicht 
berücksichtigt, dass PADIER und PBDIER nur beschrieben und nicht 
rückgelesen werden können, also eine typische Methode 
read-modify-write-back nicht funktioniert)

Und für die notorischen Nörgler: auch viel Spaß beim negativen 
Bewertungen und gemecker. Aber euch sei es gesagt: wenn es auch nur 
einer brauchen kann und einsetzt, dann war das gut, egal was ihr sagt!
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.