PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Uhr über Rs232 stellen



Snecx
01.11.2007, 22:42
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.


'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


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.
Gibt es eine ähnliche einfache Methode nur das die Schnittstelle nicht alles blockiert? Wie würdet Ihr sowas machen??
Danke.

for_ro
02.11.2007, 07:42
Hi,
ich habe das etwa so gemacht (aus dem Kopf, ohne Gewähr):



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



Gruß

Rolf