PDA

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

07.11.2004, 20:51
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

09.11.2004, 17:30
Habe gefunden ....
Bascom ASM mix ....

Var = Peek(0)
pop R0
pop R0
Poke 0 , Var

Gruß HansHans