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