; 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 );
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"); };
Hallo Peter ! Das LED Constant-Strom als Open Drain. Z8 Encore! XP F082A Das macht der Port von sich aus. http://www.youtube.com/watch?v=syPEBnK7ugk
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.