Hello,

Could you update CVS / GIT / BZR, thank you

PS : Don't hesitate to correct the document if you found some mistakes
#ifndef __MSP430_HEADERS_WDT_A_H
#define __MSP430_HEADERS_WDT_A_H

/* wdt_a.h
 *
 * mspgcc project: MSP430 device headers
 * watchdog timer module
 *
 * (c) 2008 by Sergey A. Borshch <sb...@users.sf.net>
 * Originally based in MSP430F543x datasheet (slas609)
 *    and MSP430x5xx Family User's Guide (slau208).
 *
 * $Id: wdt_a.h,v 1.6 2009/02/28 12:14:53 sb-sf Exp $
 *
 *  2009-09-08 - THLN
 * - definition updated with flexible base address
 * based on Texas Instruments document : "MSP430x5xx Family User's Guide - 
SLAU208 Revised July 2010"
 *
 */

/* Switches:

__MSP430_WDT_A_BASE__ - base address of WDT_A module (default is 0x15c).

*/

/* Watchdog timer base address */
#if !defined(__MSP430_WDT_A_BASE__)
#define __MSP430_WDT_A_BASE__ 0x15c
#endif

#define WDTCTL_             __MSP430_WDT_A_BASE__ + 0x0   /* Watchdog timer 
control Register */
sfrw(WDTCTL, WDTCTL_);
#define WDTCTL_L_           __MSP430_WDT_A_BASE__ + 0x0   /* Watchdog timer 
control Register Lo */
sfrb(WDTCTL_L, WDTCTL_L_);
#define WDTCTL_H_           __MSP430_WDT_A_BASE__ + 0x1   /* Watchdog timer 
control Register Hi */
sfrb(WDTCTL_H, WDTCTL_H_);


/* WDTCTL */
#define WDTPW               (0x5A<<8)   /* Watchdog timer password. Always read 
as 069h. Must be written as 05Ah, or a PUC will be generated */
#define WDTHOLD             (1<<7)      /* Watchdog timer hold */
#define WDTSSEL1            (1<<6)      /* Watchdog timer clock source select */
#define WDTSSEL0            (1<<5)      /* Watchdog timer clock source select */
#define WDTTMSEL            (1<<4)      /* Watchdog timer mode select */
#define WDTCNTCL            (1<<3)      /* Watchdog timer counter clear */
#define WDTIS2              (1<<2)      /* Watchdog timer interval select */
#define WDTIS1              (1<<1)      /* Watchdog timer interval select */
#define WDTIS0              (1<<0)      /* Watchdog timer interval select */

/* Aliases by mspgcc */
#define WDTIS_0             (0<<0)      /* Watchdog timer /2G */
#define WDTIS_1             (1<<0)      /* Watchdog timer /128M */
#define WDTIS_2             (2<<0)      /* Watchdog timer /8192K */
#define WDTIS_3             (3<<0)      /* Watchdog timer /512K */
#define WDTIS_4             (4<<0)      /* Watchdog timer /32K */
#define WDTIS_5             (5<<0)      /* Watchdog timer /8192 */
#define WDTIS_6             (6<<0)      /* Watchdog timer /512 */
#define WDTIS_7             (7<<0)      /* Watchdog timer /64 */

#define WDTSSEL_0           (0<<5)      /* Watchdog clock SMCLK */
#define WDTSSEL_1           (1<<5)      /* Watchdog clock ACLK */
#define WDTSSEL_2           (2<<5)      /* Watchdog clock VLOCLK */
#define WDTSSEL_3           (3<<5)      /* Watchdog clock X_CLK */

/* WDT-interval times [1ms] coded with Bits 0-2 */
/* WDT is clocked by fMCLK (assumed 1MHz) */
#define WDT_SMDLY_2147S     (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_0|WDTIS_0)         
/* 2147s   */
#define WDT_SMDLY_134S      (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_0|WDTIS_1)         
/* 134s    */
#define WDT_SMDLY_8S        (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_0|WDTIS_2)         
/* 8.38s   */
#define WDT_SMDLY_500MS     (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_0|WDTIS_3)         
/* 524ms   */
#define WDT_SMDLY_32        (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_0|WDTIS_4)         
/* 32ms interval (default) */
#define WDT_SMDLY_8         (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_0|WDTIS_5)         
/* 8ms     */
#define WDT_SMDLY_0_5       (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_0|WDTIS_6)         
/* 0.5ms   */
#define WDT_SMDLY_0_064     (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_0|WDTIS_7)         
/* 0.064ms */
/* WDT is clocked by fACLK (assumed 32KHz) */
#define WDT_ADLY_65536S     (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_1|WDTIS_0)         
/* 65536s  */
#define WDT_ADLY_4096S      (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_1|WDTIS_1)         
/* 4096s   */
#define WDT_ADLY_256S       (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_1|WDTIS_2)         
/* 256s    */
#define WDT_ADLY_16S        (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_1|WDTIS_3)         
/* 16s     */
#define WDT_ADLY_1000       (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_1|WDTIS_4)         
/* 1000ms  */
#define WDT_ADLY_250        (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_1|WDTIS_5)         
/* 250ms   */
#define WDT_ADLY_16         (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_1|WDTIS_6)         
/* 16ms    */
#define WDT_ADLY_1_9        (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL_1|WDTIS_7)         
/* 1.9ms   */
/* Watchdog mode -> reset after expired time */
/* WDT is clocked by fSMCLK (assumed 1MHz) */
#define WDT_SMRST_2147S     (WDTPW|WDTCNTCL|WDTSSEL_0|WDTIS_0)                  
/* 2147s   */
#define WDT_SMRST_134S      (WDTPW|WDTCNTCL|WDTSSEL_0|WDTIS_1)                  
/* 134s    */
#define WDT_SMRST_8S        (WDTPW|WDTCNTCL|WDTSSEL_0|WDTIS_2)                  
/* 8.38s   */
#define WDT_SMRST_500MS     (WDTPW|WDTCNTCL|WDTSSEL_0|WDTIS_3)                  
/* 524ms   */
#define WDT_SMRST_32        (WDTPW|WDTCNTCL|WDTSSEL_0|WDTIS_4)                  
/* 32ms interval (default) */
#define WDT_SMRST_8         (WDTPW|WDTCNTCL|WDTSSEL_0|WDTIS_5)                  
/* 8ms     */
#define WDT_SMRST_0_5       (WDTPW|WDTCNTCL|WDTSSEL_0|WDTIS_6)                  
/* 0.5ms   */
#define WDT_SMRST_0_064     (WDTPW|WDTCNTCL|WDTSSEL_0|WDTIS_7)                  
/* 0.064ms */
/* WDT is clocked by fACLK (assumed 32KHz) */
#define WDT_ARST_65536S     (WDTPW|WDTCNTCL|WDTSSEL_1|WDTIS_0)                  
/* 65536s  */
#define WDT_ARST_4096S      (WDTPW|WDTCNTCL|WDTSSEL_1|WDTIS_1)                  
/* 4096s   */
#define WDT_ARST_256S       (WDTPW|WDTCNTCL|WDTSSEL_1|WDTIS_2)                  
/* 256s    */
#define WDT_ARST_16S        (WDTPW|WDTCNTCL|WDTSSEL_1|WDTIS_3)                  
/* 16s     */
#define WDT_ARST_1000       (WDTPW|WDTCNTCL|WDTSSEL_1|WDTIS_4)                  
/* 1s      */
#define WDT_ARST_250        (WDTPW|WDTCNTCL|WDTSSEL_1|WDTIS_5)                  
/* 250ms   */
#define WDT_ARST_16         (WDTPW|WDTCNTCL|WDTSSEL_1|WDTIS_6)                  
/* 16ms    */
#define WDT_ARST_1_9        (WDTPW|WDTCNTCL|WDTSSEL_1|WDTIS_7)                  
/* 1.9ms   */

#ifndef __ASSEMBLER__
/* Structured declaration */

#undef  __xstr
#undef  __str
#define __xstr(x)     __str(x)
#define __str(x)      #x
struct
{
    volatile unsigned
    IS0:3,
    CNTCL:1,
    TMSEL:1,
    SSEL:2,
    HOLD:1,
    PW:8
} const WDTCTL_bits asm(__xstr(__MSP430_WDT_A_BASE__ + 0x0C));  /* Watchdog 
timer control register */

#endif  /* __ASSEMBLER__ */

#endif /* __MSP430_HEADERS_SYS_H */

Reply via email to