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