Archiv verlassen und diese Seite im Standarddesign anzeigen : Gibt es einen Watchdog der Keinen Reset auslöst ?
Gast HansHans
07.11.2004, 17:59
Hallo,
habe ein Problem mit einem SW-Urat
(Forum http://www.mikrocontroller.net/forum/read-1-125699.html)
und such deshalb eine Möglichkeit
für einen Watchdog der keinen Reset
auslöst sondern zu einem Label springt
also eine Interruptroutine ohne Return
Habt Ihr eine Idee ?
Gruß HansHans
Dino Dieter
07.11.2004, 18:16
Hallo
poste doch mal dein Programm. So kann man schlecht sehen, wo es klemmpt.
Software UART haben doch die selben Funktion wie der Hardware UART.
Mit den Befehlen Inkey() , Waitkey() und IScharwaiting() sollte sich dein Problem lösen lassen, auch ohne WDT Reset.
MFG
Dieter
Gast HansHans
07.11.2004, 20:06
Hi,
-- >Software UART haben doch die selben Funktion wie der Hardware UART
eben nicht ganz der HW hat einen Puffer auf den Bascom zurückgreifen kann
das hat SW nicht ein Zeichen das nicht sofort verarbeitet wird ist verloren ...
im Moment lese ich mit Get #2 die Zeichen ein ....
Programmausschnitt reiche ich noch nach, muß erst etwas Kommentieren ..
- - > Inkey() =If there is no character waiting, a zero will be returned.
woher dann wissen ob das ein echt gesandte Null ist ?
- - >WAITKEY(#channel) Wait until a character is received in the serial buffer.
Wartet also auch ohne Zeitbegrenzung ....
- > ISCHARWAITING() Returns 1 when a character is waiting in the hardware UART buffer.
nur für HW .......
Aber Danke, mit dem HW-Uart geht das ohne Probleme aber SW ....
Gruß HansHans
Mein Programmauszug
Dim Gmh_3 As Byte
Dim Gmh_4 As Byte
Dim Gmh As Byte
'open channel for output
Open "comc.4:4800,8,n,1" For Output As #1
'Print #1 , "serial output"
'Now open a pin for input
Open "comc.5:4800,8,n,1" For Input As #2
Label:
.
.
.
Put #1 , 254_______'sende die drei werte zur
Put #1 , 0 _______ 'Meßwert abfrage an Gerät 1
Put #1 , 61
' Darauf Antwortet das Gerät mit 6 Byte
Reset Watchdog
Get #2 , Gmh_______ ' Byte 0 wird nicht gebraucht
Get #2 , Gmh_______' Byte 1 wird nicht gebraucht
Get #2 , Gmh_______' Byte 2 wird nicht gebraucht
Get #2 , Gmh_3 _______' Byte 3 wird gespeichert
Get #2 , Gmh_4 _______ ' Byte 4 wird gespeichert
Get #2 , Gmh _______' Byte 5 wird nicht immer gebraucht
'Jetzt erfolgt die Auswertung der Meßdaten wenn alle 6 Byte auch angekommen sind
'Kommen nur 5 oder keine hängt das ganze Programm
'bis dann der Watchdog einen Reset auslöst
'ich will aber keinen Gesamt reset sondern nur ein Sprung zu einem Label
.
.
.
Hauptprogramm
Goto Label
Gast HansHans
08.11.2004, 19:16
Hallo,
habe eine Lösung gefunden die geht,
aber es bleiben noch 2 Byte auf dem Stack liegen
die muss ich löschen ,sonst kriege ich nach 20 Fehler
einen Stapel überlauf .
Ich muss also zweimal POP machen ,
aber wohin ? wie lösche ich 2 Byte vom Stack
oder welches Register benutzt Bascom nicht ?
eine Hilfe wäre schön dann brauche ich nicht so lange zu
suchen .... Danke
habe noch keine Ahnung von ASM Code innerhalb von Bascom
Habe gefunden ....
Bascom ASM mix ....
Var = Peek(0)
pop R0
pop R0
Poke 0 , Var
Gruß HansHans
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.