PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Serielle Schnittstelle im Hintergrund?



boeseTURBO-CT
12.08.2004, 16:23
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

harryup
14.08.2004, 10:39
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

boeseTURBO-CT
16.08.2004, 09:37
ah gut, werd ich mir mal anschauen :) Vielen Dank!

Gruss

Jan

LuK-AS
08.09.2004, 16:19
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.

eFFex
08.09.2004, 19:34
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

focobot
10.09.2004, 02:48
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.