Hallo Blamaster,
von Bascom habe ich keine Ahnung, da ich nur Assembler und C verwende. Ich wage trotzdem eine Antwort: Wenn die Software-UART-Implementierung von Bascom etwa der Atmel-Note AVR305 ( http://www.atmel.com/dyn/resources/p...ts/doc0952.pdf ) entspricht, wird das gar nicht möglich sein, da die UART-Zeitabläufe durch Warteschleifen bestimmt sind. Falls doch ein Timer (mit Timer-Interrupt) benutzt würde, wäre das anders! Sieh mal in der entsprechenden Bascom-Dokumentation nach.Zitat von Blamaster
Normalerweise ist es nicht sinnvoll, bei Nutzung eines Software-UARTs (ohne Timer-Interrupts) andere längere Funktionen aufzurufen -- allerhöchstens z.B. sehr kurze ISRs; sonst kann die Software-UART-Routine nicht richtig funktionieren.
Wie könnte man es anders machen? Dazu müsste die Software UART-Routine mindest einen Timer-Interrupt nutzen. Dann ließe sich dort entscheiden, was zu tun ist, wenn ein Zeichen komplett empfangen wurde. Man könnte das Zeichen dann (falls das sehr schnell geht) innerhalb der ISR weiterverarbeiten oder einen "Software-Interrupt" (über einen der externen Interrupt-Pins per Software einen Interrupt auslösen!) auslösen. Aber da sind wir schon wieder bei Interrupts, die ja meist nicht nicht zu einem Software-UART gehören.
Bist Du Dir sicher, dass bei Deinem Bascom Program "sub Schleifen" (wie Du sie nennst) überhaupt parallel zur Software-UART-Routine laufen können?
Gruß
Fred
Lesezeichen