mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ZILOG ENCORE WATCH DOG -MODUL ASM mit C.


Autor: Holger Harten (holger-h-hennef) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
; 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 );

Autor: Holger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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");
};

Autor: Holger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter !
Das LED Constant-Strom als Open Drain.
Z8 Encore! XP F082A
Das macht der Port von sich aus.

Youtube-Video "Zilog Direct LED Drive"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.