ZILOG ENCORE WATCH DOG -MODUL ASM mit C.

OP Persönliche Seite #1483789
; ZILOG ENCORE WATCH DOG -MODUL ASM mit C.
; Ich möchte den Watchdog bei einer ez8 ZF8.6422 parametrieren,
; kennt sich einer damit aus ???

; ob das auf dem neuen
;  C Compiler Version 3.60 (08031703)
; so gemacht werden darf ???
; Zilog IDE version 4.11 (08050501)

; Die WD-Param.-Sequenz muss in einem jusch abgehen, da sonst
; der 24 Bit Parameter nicht übernommen wird.
; -------------------------------------------------------------
; Mit Immediate Adressierung , also festen Werten
; geht das im C Modul

;void Wdog_Set_Timer_Regs( void  )
;{
;  asm("LDX %0FF0, #%55");  // first  Unlock
;  asm("LDX %0FF0, #%AA");  // second Unlock

;  asm("LDX %0FF1, #%00");
;  asm("LDX %0FF2, #%7F");
;  asm("LDX %0FF3, #%FF");

;}

; Ich finde leider keine Beispiele für den WDog.
; Die IDE und MCU ist weiterenwickelt worden.


; .include "ez8.inc"
; Hier nur das was ich hier brauche an  SFR Register



WDTCTL  .equ  %FF0               ; Reset =   %80 Watchdog Timer Control
WDTU    .equ  %FF1               ; Reset =   %FF Watchdog Timer Reload 
Upper
WDTH    .equ  %FF2               ; Reset =   %FF Watchdog Timer Reload 
High
WDTL    .equ  %FF3               ; Reset =   %FF Watchdog Timer Reload 
Low

XSPH    .equ  %FFE               ; Reset =   %XX Stack Pointer High
XSPL    .equ  %FFF               ; Reset =   %XX  Stack Pointer Low


; ****************************************
.DEF _set_watch_dog_timer_regs ;  Make a <prototype>
 segment CODE
; *************************

_set_watch_dog_timer_regs: ; cF1,cF2,cF3
 ; DI ; No IRQs
 PUSH R15 ; push save working reg
 PUSH R14 ; push save working reg
    LDX  R14,XSPH ; save Stack-PointerH to R14
    LDX  R15,XSPL ; save Stack-PointerL to R15
    SUBX XSPL,#%03
    SBCX XSPH,#%00
     ; first load all R0,R1,R2 Registers from C-Stack
     LDX  R0,4(RR14) ; Register Relativ from R14 to R0 Grab F1 passed 
8-Bit parameter
     LDX  R1,5(RR14) ;Grab F2 passed parameter
     LDX  R2,6(RR14) ;Grab F3 passed parameter
      ; unlock
     LDX  WDTCTL, #%55   ; first  Unlock
     LDX  WDTCTL, #%AA   ; second Unlock
     ; Coseqently store registers
     LDX WDTU,R0  ; load in WDT-Upper Reg.
     LDX WDTH,R1  ; load in WDT-Higer Reg.
     LDX WDTL,R2  ; load in WDT-Lower Reg.
    ;
   LDX  XSPL,R15 ; Restore Stack-PointerL from R15
   LDX  XSPH,R14 ; Restore Stack-PointerH from R14
 POP  R14
 POP  R15
 ; EI
 RET
; ***********************
; Hier Funktion im C-Modul anmelden.
; void set_watch_dog_timer_regs( char, char, char );

; Beispiel für die Funktion set_watch_dog_timer_regs

; set_watch_dog_timer_regs( 0x00, 0x7F, 0xFF );
Gast
Hallo Peter !
 Z8 Encore! XP F082A WDOG is jetz ok.
0x20 = Bit 7 Watchdog Timer oscillator is enabled.
Ich hatte den Ozilator nicht mit an.
Der Anhang ASM geht auf dem F082A, mal sehen was der
Z86422 so noch für Zicken bits hat.

Nur der WDOG-Code mit ASM geht ??????
Das is ja so verrammelt das ein Zeit-Fenster da genau am Takt hängt,
um den WDog zu schreiben.
0x20 = Bit 7 Watchdog Timer oscillator is enabled

 #define OSC_UNLOCK_SEQ1 0xE7
 #define OSC_UNLOCK_SEQ2 0x18
void Init_Oszi (void)
{
 OSCCTL = OSC_UNLOCK_SEQ1; // Unlock sequence for OSCTL write
 OSCCTL = OSC_UNLOCK_SEQ2; //
//  0x80 = Bit 5 INTEN Internal Precision Oscillator Enable
//  0x20 = Bit 7 Watchdog Timer oscillator is enabled

 OSCCTL  = (0x80 | 0x20 );
// make a short delay ::::: then call
}
----------------------------------------------
Das geht "nicht" in C Hochsprache.
void param_WDOG_reg (void)
{
// unlock
asm("LDX %FF0,#%55");// first  Unlock
asm("LDX %FF0,#%AA");// second Unlock

 // Coseqently store registers
asm("LDX %FF3,#%00");
asm("LDX %FF2,#%FF");
asm("LDX %FF1,#%10");
};
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.