-
        

Ergebnis 1 bis 6 von 6

Thema: Mega168 hängt nach Watchdog im Zusammenspiel mit LCD

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.05.2007
    Beiträge
    9

    Mega168 hängt nach Watchdog im Zusammenspiel mit LCD

    Anzeige

    Nachfolgender Code läuft auf einem m8 perfekt. Der Watchdog kommt nach 2 Sekunden und das Programm startet von vorne.

    Auf einem m168 jedoch hängt sich der Chip komplett auf. Nicht einmal ein HW Reset mit dem Reset PIN ist möglich! Für mich ist das der Super GAU und ich habe es nur durch Zufall bemerkt, weil ich in einigen Funktionen gezielt den WD durch lange Pause auslöse, um das Programm neu zu starten - z.B. nach Konfigurationsänderung.

    Das Problem hängt mit dem LCD Befehl zusammen. Lasse ich ihn weg und mache statt dessen PRINT Ausgaben, läuft es.
    Könnte das mal jemand von euch mit Bascom 1.11.9.0 nachvollziehen?

    Code:
    $regfile = "m168def.dat"
    $crystal = 3686400
    
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    Config Watchdog = 2048
    
    '### LCD
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 16 * 2
    
       Start Watchdog
    
       Cls
    
       Lcd "Start"
       WaitMs 1000
       Cls
       Lcd "1000ms elapsed"
       WaitMs 5000
       Cls
       Lcd "5000ms elapsed"
    
    End

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Ich hatte bei meinem m644 ähnliche Probs bis ich darauf gekommen war, dass man den Watchdog als erstes deaktivieren sollte. Jedoch hat man dafür nur 4 Takte Zeit, sodass ich das gleich am Anfang des Programmes machen musste, seitdem läuft es super.

    Mein Programm fängt also so an:
    Code:
    $asm
    
    Wdt_off:
    ; Turn off global interrupt
    cli
    ; Reset Watchdog Timer
    wdr
    ; Clear WDRF in MCUSR
    in r16, MCUSR
    andi r16, wdrf;(0xff & (WDRF))
    Out Mcusr , R16
    ; Write logical one to WDCE and WDE
    ; Keep old prescaler setting to prevent unintentional time-out
    in r16, WDTCSR
    ori r16,wdce; (1<<WDCE) | (1<<WDE)
    Out Wdtcsr , R16
    ; Turn off WDT
    ldi r16,wde; (0<<WDE)
    Out Wdtcsr , R16
    
    $end Asm
    
    
    $regfile = "m644def.dat"
    
    $crystal = 16000000
    $loadersize = 2048
    Stop Watchdog
    Config Watchdog = 2048
    
    
    
    Config Graphlcd = 240 * 64 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Mode = 6  
    
    ...
    Die Assembler Routine habe ich direkt aus dem Datenblatt des Atmegas übernommen.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    26.05.2007
    Beiträge
    9
    Leider löst es das Problem nicht...

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Hast du die Adressen evtl an den m168 angepasst?
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    26.05.2007
    Beiträge
    9
    welche Adressen konkret meinst du?

    Was mich extrem wundert, ist die Abhängigkeit zum LCD Befehl. Wenn es ein Timingproblem in der Konfiguration des WDs ist, warum tritt das Problem dann beim Verzicht auf LCD Befehle nicht auf?

    QM

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Ich habe das Datenblatt des M168 jetzt nicht studiert, aber ich würde da als erstes mal nachschauen, was da über den Watchdog steht. Evtl ist da ein ähnliches Beispiel bei. Wäre möglich, dass Bascom einige Pausen einbringt, wenn man LCD nutzt, damit das LCD Zeit für die Befehlsausführung hat
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

Berechtigungen

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