-
-
Erfahrener Benutzer
Roboter Genie
Hallo zusammen,
zum Thema mit der Warteschleife: Ich habe sie weggelassen und habe keinen Datenverlust beim Senden.
Die Funktion überprüft ja nach dem letzten gesendenen Byte, ob es gesendet wurde und damit der Buffer wieder frei ist. --> while (!(UCSRA & 0x40)); <---
INTERRUPT-BETRIEB
Ich bin gerade dabei die Schnittstelle, und alle anderen Sensoren, auf Interrupt-Betrieb umzustellen.
Ist aber noch nicht spruchreif, so dass ich noch keinen Code posten kann.
Eins vorweg:
Ich werden wohl nur das Senden über Interrupt gesteuert ausführen. Das Empfangen werde ich im Moment erst mal im pollenden Betrieb lassen.
Begriffe:
-> Senden: Asuro sendet.
-> Empfangen: Asuro empfängt
Grund:
Wenn beides per Interrupt läuft, dann hat das aufrufende Programm nicht mehr die Kontrolle in Bezug auf gleichzeitiges Senden und Empfangen. (Sendepuffer noch gefüllt [Interrupt sendet auch lustig weiter], aber es soll auch gleich noch der Empfänger aktiv sein) Hier tritt bei mir grundsätzlich das Problem auf, dass ich meine eigenen gesendeten Zeichen als Echo selbst empfange. Dies macht 'leichte' Probleme, bzw. macht es auch für einen echten Sender (PC) unmöglich, in den geechoten Datentransfer vom Asuro zum PC korrekte Infos vom PC zum Asuro zu bringen.
Weiteres Problem:
Wenn die zu sendenen Daten vom Hauptprogramm nur 'abggegeben' werden, um sie per Interrupt auf die Reise zu bringen, dann muss das Interruptsystem dafür einen Puffer bereitstellen.
Genau hier haben wir etwas zu wenig Speicher im Asuro um großzügig damit umzugehen.
Als Anzatz habe ich eine feste Pufferlägne gewählt, damit man nicht noch mit malloc hantieren muss. (Die Funktion ist OK, aber viel zu groß)
Wenn jetzt also dieser statischte Puffer voll ist, soll meine Funktion, wie gehabt, in den pollenden Betrieb wechseln. Genau hier bin ich jetzt bei der Software.
Viele Grüße vom Sternthaler.
P.S.: Ich wünsche allen einen guten Rutsch ins Neue Jahr.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen