⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tvptimer.h

📁 ti的数字电视芯片 tvp9000的源码
💻 H
字号:
#ifndef TVP_TIMER_DOT_H_IS_DEFINED
#define TVP_TIMER_DOT_H_IS_DEFINED

/*****************************************************************************
*    Property of Texas Instruments Incorporated, Copyright 2004
*    All rights reserved
******************************************************************************/
/*********************************************************************
*
* Description:
*  TvpTimer.h contains all TVP9000 timer related defines
*
*
**********************************************************************/
/*********************************************************************
*
* $Revision: $
*
* $History: TvpTimer.h $
*
*********************************************************************/

#define TVP_TIMER0         0              // timer 0
#define TVP_TIMER1         1              // timer 1
#define TVP_TIMER2         2              // timer 2

#define TVP_MAX_TIMER      2              // max number of timers

// 54Mhz Timer run constants
// periods = 1/CLK * prescale * divisor


#define TVP_TM_500NS_PS   2          // 500 nsec prescale
#define TVP_TM_500NS_DV   9          // 500 nsec divisor

#define TVP_TM_1US_PS     2          // 1 usec prescale
#define TVP_TM_1US_DV     18         // 1 usec divisor

#define TVP_TM_10US_PS    3          // 10 usec prescale
#define TVP_TM_10US_DV    135        // 10 usec divisor

#define TVP_TM_50US_PS    3          // 50 usec prescale
#define TVP_TM_50US_DV    675        // 50 usec divisor

#define TVP_TM_100US_PS   7          // 100 usec prescale
#define TVP_TM_100US_DV   675        // 100 usec divisor

#define TVP_TM_200US_PS   7          // 200 usec prescale
#define TVP_TM_200US_DV   1350       // 200 usec divisor

#define TVP_TM_500US_PS   7          // 500 usec prescale
#define TVP_TM_500US_DV   3375       // 500 usec divisor

#define TVP_TM_1MS_PS     15         // 1 ms prescale
#define TVP_TM_1MS_DV     3375       // 1 ms divisor

#define TVP_TM_2MS_PS     15         // 2 ms prescale
#define TVP_TM_2MS_DV     6750       // 2 ms divisor

#define TVP_TM_5MS_PS     15         // 5 ms prescale
#define TVP_TM_5MS_DV     16875      // 5 ms divisor

#define TVP_TM_10MS_PS    15         // 10 ms prescale
#define TVP_TM_10MS_DV    33750      // 10 ms divisor

#define TVP_TM_20MS_PS    30         // 20 ms prescale
#define TVP_TM_20MS_DV    33750      // 20 ms divisor

#define TVP_TM_100MS_PS   159        // 100 ms prescale
#define TVP_TM_100MS_DV   33750      // 100 ms divisor

#define TVP_TM_200MS_PS   318        // 200 ms prescale
#define TVP_TM_200MS_DV   33750      // 200 ms divisor

#define TVP_TM_1000MS_PS  1599       // 1S prescale
#define TVP_TM_1000MS_DV  33750      // 1S divisor

#define TVP_TIMER_500NS     (TVP_TM_500NS_PS  << 16) | (TVP_TM_500NS_DV)    // timer at 500nsec

#define TVP_TIMER_1US       (TVP_TM_1US_PS    << 16) | (TVP_TM_1US_DV)    // timer at 1usec
#define TVP_TIMER_10US      (TVP_TM_10US_PS   << 16) | (TVP_TM_10US_DV)   // timer at 10usec
#define TVP_TIMER_100US     (TVP_TM_100US_PS  << 16) | (TVP_TM_100US_DV)  // timer at 100usec
#define TVP_TIMER_200US     (TVP_TM_200US_PS  << 16) | (TVP_TM_200US_DV)  // timer at 100usec
#define TVP_TIMER_500US     (TVP_TM_500US_PS  << 16) | (TVP_TM_500US_DV)  // timer at 500usec

#define TVP_TIMER_1MS       (TVP_TM_1MS_PS    << 16) | (TVP_TM_1MS_DV)    // timer at 1ms
#define TVP_TIMER_2MS       (TVP_TM_2MS_PS    << 16) | (TVP_TM_2MS_DV)    // timer at 2ms
#define TVP_TIMER_10MS      (TVP_TM_10MS_PS   << 16) | (TVP_TM_10MS_DV)   // timer at 10ms
#define TVP_TIMER_20MS      (TVP_TM_20MS_PS   << 16) | (TVP_TM_20MS_DV)   // timer at 20ms
#define TVP_TIMER_100MS     (TVP_TM_100MS_PS  << 16) | (TVP_TM_100MS_DV)  // timer at 100ms
#define TVP_TIMER_200MS     (TVP_TM_200MS_PS  << 16) | (TVP_TM_200MS_DV)  // timer at 200ms

#define TVP_TIMER_1S        (TVP_TM_1000MS_PS << 16) | (TVP_TM_1000MS_DV) // timer at 1 sec

// TCR register - timer constants bit positions (n) default

#define TVP_TRB   0x01     // (0) timer reload
                           // 0 = timer no load
                           // 1 = timer reload

#define TVP_TSS   0x02     // (0) timer stop
                           // 0 = timer run
                           // 1 = timer stop

#define TVP_SOFTN 0x04     // (0) timer auto reload
                           // 0 = reload and run again
                           // 1 = 1 shot and stop

#define TVP_SOFTE 0x08     // (0) emulation mode soft bit
                           // 0 = ??
                           // 1 = ??

#define TVP_FREE  0x10     // (0) emulation mode free bit
                           // 0 = ??
                           // 1 = ??

#define TVP_TINTM 0x20     // (0) timer interrupt mask
                           // 0 = no mask tint
                           // 1 = mask tint

#define TVP_TIMER_AUTO_RELOAD TVP_TRB                 // auto load and run
#define TVP_TIMER_STOP        TVP_TSS                 // Timer Stop
#define TVP_TIMER_ONE_SHOT    (TVP_SOFTN | TVP_TRB)   // Run One Shot and stop
#define TVP_TIMER_MASK_INT    TVP_TINTM               // Mask Interrupt (or this value in with previous commands)

typedef struct
{
  unsigned long  timer;               // TVP_TIMER0
                                      // TVP_TIMER1
                                      // TVP_TIMER2
  unsigned long  ctrl;                // TVP_TIMER_AUTO_RELOAD | TVP_TIMER_MASK_INT
                                      // TVP_TIMER_ONE_SHOT    | TVP_TIMER_MASK_INT
                                      // TVP_TIMER_STOP        | TVP_TIMER_MASK_INT

  TvpIntExec     func;                // *ptr to Timer handler
  unsigned long  tic;                 // timer load value or read vlaue on timerRead()
                                      // TVP_TIMER_1MS  1 msec
                                      // TVP_TIMER_10MS 10 msec
                                      // TVP_TIMER_100MS 100 msec
                                      // TVP_TIMER_1S     1 Second
} TvpHWTimer;

/*----------------------**
** Watchdog time values **
**----------------------*/
#define TVP_KICK_LOCK_0       0x5555
#define TVP_KICK_LOCK_1       0xaaaa

#define TVP_CHANGE_LOCK_0     0x6666
#define TVP_CHANGE_LOCK_1     0xbbbb

#define TVP_DISABLE_LOCK_0    0x7777
#define TVP_DISABLE_LOCK_1    0xcccc
#define TVP_DISABLE_LOCK_2    0xdddd

#define TVP_PRESCALE_LOCK_0   0x5a5a
#define TVP_PRESCALE_LOCK_1   0xa5a5

#define TVP_WD_KICK_LOCK_REG        (TVP_WD_TIMER_BASE+0x0)
#define TVP_WD_KICK_REG             (TVP_WD_TIMER_BASE+0x1)
#define TVP_WD_CHANGE_LOCK_REG      (TVP_WD_TIMER_BASE+0x2)
#define TVP_WD_CHANGE_REG           (TVP_WD_TIMER_BASE+0x3)
#define TVP_WD_ENABLE_LOCK_REG      (TVP_WD_TIMER_BASE+0x4)
#define TVP_WD_ENABLE_REG           (TVP_WD_TIMER_BASE+0x5)
#define TVP_WD_PRESCALE_LOCK_REG    (TVP_WD_TIMER_BASE+0x6)
#define TVP_WD_PRESCALE_REG         (TVP_WD_TIMER_BASE+0x7)

#define TVP_WD_PRESCALE_HALF_MS     0xd2f0    // Prescale for 0.5ms
#define TVP_WD_MAX_TIMER_VALUE      0x7fff

typedef unsigned short TvpWDTime;

#ifdef __cplusplus
extern "C" {
#endif

TVP_FERROR tvpTimerInit(TvpHWTimer *);           // init timer
TVP_FERROR tvpTimerRead(TvpHWTimer *);           // read timer
TVP_FERROR tvpTimerSet (TvpHWTimer *);           // set timer wo interrupt hooks

TVP_FERROR tvpWatchDogTimerEnable(TvpWDTime msecs);
void tvpWatchDogTimerDisable (void);
void tvpWatchDogTimerKick (void);


#ifdef __cplusplus
};
#endif


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -