Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: interner Watchdog Kategorie: Sonstige Hardware (von Martin Benninger - 1.01.2009 12:39)
Als Antwort auf Re: interner Watchdog von PeterS - 1.01.2009 12:25
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
Hier die Routinen für den Watchdog:
zuerst das File Watchdog.h welches im C-Program mit #include eingefügt wird:

/*******************************************************************************
 * File: Watchdog.h
 * Author : M. Benninger
 * Ident : Rev 1 30-DEC-2008
 * Function: Definitionen for Watchdog System for ATmega128
 * History : Rev 1 30-DEC-2008 M. Benninger
 * - first implementation
 ******************************************************************************/
#ifndef _WATCHDOG_H_
#define _WATCHDOG_H_

/******************************************************************************
 * Prescalar Values
 */

#define WDT_15MS    0
#define WDT_30MS    1
#define WDT_60MS    2
#define WDT_120MS   3
#define WDT_240MS   4
#define WDT_500MS   5
#define WDT_1SEC    6
#define WDT_2SEC    7

/******************************************************************************
 * Function Prototypes
 */

void WDT_reset $asm("WDT_reset")(void);
void WDT_off $asm("WDT_off")(void);
void WDT_on $asm("WDT_on")(byte prescalar);

#endif // _DCF_H_

/* End of Watchdog.h -- Definitionen for Watchdog System for ATmega128
 ******************************************************************************/

und nun das File Watchdog.asm
;*******************************************************************************
;* File: Watchdog.asm
;* Author  : M. Benninger
;* Ident   : Rev 1 30-DEC-2008
;* Function: Watchdog Timer Functions
;*           This module implements three functions:
;*           WDT_on (prescalar), WDT_off () and WDT_reset ()
;*           The parameter prescalar determine the Watchdog Timer prescaling
;*           when the Watchdog Timer is enabled. The different prescaling values
;*           and their corresponding Timeout Periods are shown below:
;*              Prescalar        Typical Timeout Value
;*                  0                   15 ms
;*                  1                   30 ms
;*                  2                   60 ms
;*                  3                  120 ms
;*                  4                  240 ms
;*                  5                  0.5 sec
;*                  6                  1.0 sec
;*                  7                  2.0 sec
;*
;* Library:  none
;*
;* History : Rev 1 30-DEC-2008 M. Benninger
;*                 - first implementation
;*******************************************************************************

;**** Watchdog Timer Definitions ****

.equ WDTCR = $21               ; Watchdog Timer Control Register
.equ    WDCE    = 4                 ; WDT Change Enable bit
.equ    WDE     = 3                 ; WDT Enable bit
.equ WDPM = 7                 ; WDT Prescalar mask

WDT_reset:                          ; Reset Watchdog Timer
    wdr
    ret

WDT_on:                             ; Enable Watchdog Timer
    movw    r26, r6                 ; r7:r6 points to ret_addr
    adiw    r26, 4                  ; X now points to prescalar parameter
    ld      r16, x                  ; get prescalar parameter
    andi    r16, WDPM               ; and mask lower 3 bits
    ori     r16, (1<     ldi     r17, (1<     out     WDTCR, r17              ; enable write to WDT control register
    out     WDTCR, r16              ; write WDT control register
    ret

WDT_off:                            ; Disable Watchdog Timer
    in      r16, WDTCR              ; get WDT control register
    ori     r16, (1<     out     WDTCR, r16              ; enable write to WDT control register
    ldi     r16, (0<     out     WDTCR, r16              ; write WDT control register
    ret

;* End of Watchdog.asm -- Watchdog Timer Functions für ATmega128
;******************************************************************************/

Ich wünsche allen eine gutes, erfolgreiches neues Jahr.

Martin Benninger


    Antwort schreiben


Antworten:

Re: interner Watchdog (von Martin Benninger - 1.01.2009 12:52)
    Re: interner Watchdog (von Joerg - 23.09.2010 10:17)
        Re: interner Watchdog (von PeterS - 23.09.2010 11:05)
            Re: interner Watchdog (von Joerg - 23.09.2010 13:22)
                Re: interner Watchdog (von Ernst H. - 8.11.2010 22:49)
                    Re: interner Watchdog (von Joerg - 9.11.2010 7:18)
                       Re: interner Watchdog (von PeterS - 9.11.2010 16:16)
    Re: interner Watchdog (von Manfred - 2.01.2009 15:16)
    Re: interner Watchdog (von Rainer - 2.01.2009 10:41)
        Re: interner Watchdog (von Rainer - 9.01.2009 12:26)
            Re: interner Watchdog (von PeterS - 9.01.2009 13:48)
                Re: interner Watchdog (von Rainer - 9.01.2009 15:16)
        Re: interner Watchdog (von Martin Benninger - 2.01.2009 11:11)