-
        
+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Gibt es einen Watchdog der Keinen Reset auslöst ?

  1. #1
    Gast HansHans
    Gast

    Gibt es einen Watchdog der Keinen Reset auslöst ?

    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.04.2004
    Ort
    Nähe Köln
    Alter
    50
    Beiträge
    247
    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

  3. #3
    Gast HansHans
    Gast
    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

  4. #4
    Gast
    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

  5. #5
    Gast HansHans
    Gast
    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

  6. #6
    Gast
    Habe gefunden ....
    Bascom ASM mix ....

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

    Gruß HansHans

+ Antworten

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •