-
-
Erfahrener Benutzer
Fleißiges Mitglied
Serielle Schnittstelle im Hintergrund?
Ich möchte gern über die serielle Schnittstelle Steuerdaten für meinen ATMEGA empfangen. Gibt es ne möglichkeit das die Daten im Hintergrund in eine Variable geschoben werden, ohne das ich das Hauptprogramm extra unterbrechen muss?
Gruss
Jan
-
Erfahrener Benutzer
Fleißiges Mitglied
hi,
du kannst die daten in einem puffer empfangen (config serialin).
dabei werden interne variablen gebildet auf die dein hauptprogramm zugreifen muss. aber irgendwann muss der puffer halt auch geleert werden.
gruss, harry
-
Erfahrener Benutzer
Fleißiges Mitglied
ah gut, werd ich mir mal anschauen Vielen Dank!
Gruss
Jan
-
Erfahrener Benutzer
Roboter-Spezialist
Hallo Gemeinde,
ich habe mich mal an den bereits bestehenden Thread drangehängt, er behandelt wohl auch mein Problem.
Ich habe einen Mega16 und sende über eine Softwaregenerierte RS232 einen String an einen AT90S2313 an dem ich den RxD Pin der Hardware RS232 verwende. Ich habe nun schon am 2313er einen seriellen Puffer eingerichtet mit "Config Serialin = Buffered , Size = 20" nun will ich einen String des Mega16 empfangen indem ich den USART Interrupt abfrage und einen String erzeuge "S=S+chr(urxc)"
wenn der String vollständig ist wird er an einem LCD angezeigt. Allerdings schleichen sich immer wieder Fehlzeichen bei der Ausgabe auf dem LCD ein. Hat jemand eine Lösung hierzu.
Gruss Clemens
P.S.: Wenn ich wieder zuhause bin poste ich mal den Basic Code.
-
Erfahrener Benutzer
Fleißiges Mitglied
irgendwo hab ich das schonmal gelesen...such mal im Forum......
das passiert, wenn der Takt vom µC nich so 100% genau ist und dann das ganze leicht asynchron wird....aber du hast ja n buffer.....hmmmm.....
irgednwo stands
-
Neuer Benutzer
Öfters hier
ich habe die ganze Sache mal auf Basis des S.N.A.P. Protokolls angefangen zu testen. Dabei viel auf, das in dem Beispielen von C. Kuehnel mit "Waikey()" gearbeitet wurde und dabei das Hauptprogramm solange unterbrochen war bis tatsächlich was reinkam.
Ich hab das ganze etwas umgestrickt und arbeite jetzt mit Buffer und nutze "Inkey()", da wird der Buffer gelesen(wartet nicht auf Eingang) und wenn nix drinsteht geht das Programm einfach weiter, ansonsten wird überprüft ob das Synchronisationsbyte kam, wenn ja: weiter einlesen wenn nein: zurück zum Hauptprogramm.
Im Simulator läuft die Sache mit einem M8 sehr gut.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen