Hallo
ich habe einen DS1307 an einem Mega16 hängen. Die Routinen zum schreiben und lesen der Uhrzeit/Datum funktionieren. Jetzt möchte ich gerne die Zeit über die RS232 stellen. Dazu möchte ich ein par Werte in die Schnittstelle schreiben und wenn alles angekommen ist die Uhr stellen.
zb 100ST234500. Die ertsen 3 Stellen ist die ID des Moduls dann der Befehl an das Modul (hier zB ST = set time) und dann die Uhrzeit.
In diesem Forum habe ich ein Codeschnippsel gefunden. Das habe ich ein wenig abgeändert.
Das Funktioniert auch. Allerdings wartet der Befehl ja solange bis 11 Zeichen empfangen worden sind. Das ist dumm. Wenn mal ein Zeichen verschlckt wird oder eins zuviel gesendet wird bleibt alles stehen.Code:'config UART Interrupt On Urxc Onrxd 'Interrupt-Routine setzen Enable URXC 'Interrupt URXC einschalten Enable Interrupts 'Interrupts global zulassen 'config VARIABLES Dim Id As String * 3 , Befehl As String * 2 , Wert As String * 6 ... auslesen des DS1307 ... 'UART interrupt routine Onrxd: Inputbin Id , Befehl , Wert Print Id Print Befehl Print Wert Return
Gibt es eine ähnliche einfache Methode nur das die Schnittstelle nicht alles blockiert? Wie würdet Ihr sowas machen??
Danke.
Hi,
ich habe das etwa so gemacht (aus dem Kopf, ohne Gewähr):
GrußCode:Config Serialin = Buffered , Size = 20 , Bytematch = 13 '(oder 10, weiss ich nicht mehr, jedenfalls return) ... Do 'main Loop ... If Befehl_gelesen = 1 Then ... 'befehle verarbeiten Befehl_gelesen = 0 Endif ... Loop Serialcharmatch: Zeichenkette = "" While Ischarwaiting() Zeichenkette = Zeichenkette + Inkey() Wend Befehl_gelesen = 1 Return
Rolf
Lesezeichen