ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
fw_tim.h File Reference
#include "fw_conf.h"
#include "fw_types.h"
#include "fw_exti.h"

Go to the source code of this file.

Macros

#define TIM_Timer0_SetRunState(__STATE__)   SBIT_ASSIGN(TR0, __STATE__)
 
#define TIM_Timer0_SetGateState(__STATE__)   SFR_ASSIGN(TMOD, 3, __STATE__)
 
#define TIM_Timer0_SetFuncCounter   SFR_SET(TMOD, 2)
 
#define TIM_Timer0_SetFuncTimer   SFR_RESET(TMOD, 2)
 
#define TIM_Timer0_Set1TMode(__STATE__)   SFR_ASSIGN(AUXR, 7, __STATE__)
 
#define TIM_Timer0_SetOutput(__STATE__)   SFR_ASSIGN(INTCLKO, 0, __STATE__)
 
#define TIM_Timer0_SetMode(__TIM_TIMER_MODE__)   (TMOD = TMOD & ~(0x03 << 0) | ((__TIM_TIMER_MODE__) << 0))
 
#define TIM_Timer0_SetInitValue(__TH__, __TL__)   do{ TH0 = (__TH__); TL0 = (__TL__); }while(0)
 
#define TIM_Timer1_SetRunState(__STATE__)   SBIT_ASSIGN(TR1, __STATE__)
 
#define TIM_Timer1_SetGateState(__STATE__)   SFR_ASSIGN(TMOD, 7, __STATE__)
 
#define TIM_Timer1_FuncCounter   SFR_SET(TMOD, 6)
 
#define TIM_Timer1_FuncTimer   SFR_RESET(TMOD, 6)
 
#define TIM_Timer1_Set1TMode(__STATE__)   SFR_ASSIGN(AUXR, 6, __STATE__)
 
#define TIM_Timer1_SetOutput(__STATE__)   SFR_ASSIGN(INTCLKO, 1, __STATE__)
 
#define TIM_Timer1_SetMode(__TIM_TIMER_MODE__)   (TMOD = TMOD & ~(0x03 << 4) | ((__TIM_TIMER_MODE__) << 4))
 
#define TIM_Timer1_SetInitValue(__TH__, __TL__)   do{ TH1 = (__TH__); TL1 = (__TL__); }while(0)
 
#define TIM_Timer2_SetRunState(__STATE__)   SFR_ASSIGN(AUXR, 4, __STATE__)
 
#define TIM_Timer2_FuncCounter   SFR_SET(AUXR, 3)
 
#define TIM_Timer2_FuncTimer   SFR_RESET(AUXR, 3)
 
#define TIM_Timer2_Set1TMode(__STATE__)   SFR_ASSIGN(AUXR, 2, __STATE__)
 
#define TIM_Timer2_SetOutput(__STATE__)   SFR_ASSIGN(INTCLKO, 2, __STATE__)
 
#define TIM_Timer2_SetInitValue(__TH__, __TL__)   do{ T2H = (__TH__); T2L = (__TL__); }while(0)
 
#define TIM_Timer2_SetPreScaler(__PRE__)   do{SFRX_ON(); TM2PS = (__PRE__); SFRX_OFF();}while(0)
 
#define TIM_Timer3_SetRunState(__STATE__)   SFR_ASSIGN(T4T3M, 3, __STATE__)
 
#define TIM_Timer3_FuncCounter   SFR_SET(T4T3M, 2)
 
#define TIM_Timer3_FuncTimer   SFR_RESET(T4T3M, 2)
 
#define TIM_Timer3_Set1TMode(__STATE__)   SFR_ASSIGN(T4T3M, 1, __STATE__)
 
#define TIM_Timer3_SetOutput(__STATE__)   SFR_ASSIGN(T4T3M, 0, __STATE__)
 
#define TIM_Timer3_SetInitValue(__TH__, __TL__)   do{ T3H = (__TH__); T3L = (__TL__); }while(0)
 
#define TIM_Timer3_SetPreScaler(__PRE__)   do{SFRX_ON(); TM3PS = (__PRE__); SFRX_OFF();}while(0)
 
#define TIM_Timer4_SetRunState(__STATE__)   SFR_ASSIGN(T4T3M, 7, __STATE__)
 
#define TIM_Timer4_FuncCounter   SFR_SET(T4T3M, 6)
 
#define TIM_Timer4_FuncTimer   SFR_RESET(T4T3M, 6)
 
#define TIM_Timer4_Set1TMode(__STATE__)   SFR_ASSIGN(T4T3M, 5, __STATE__)
 
#define TIM_Timer4_SetOutput(__STATE__)   SFR_ASSIGN(T4T3M, 4, __STATE__)
 
#define TIM_Timer4_SetInitValue(__TH__, __TL__)   do{ T4H = (__TH__); T4L = (__TL__); }while(0)
 
#define TIM_Timer4_SetPreScaler(__PRE__)   do{SFRX_ON(); TM4PS = (__PRE__); SFRX_OFF();}while(0)
 

Enumerations

enum  TIM_TimerMode_t { TIM_TimerMode_16BitAuto = 0x00 , TIM_TimerMode_16Bit = 0x01 , TIM_TimerMode_8BitAuto = 0x02 , TIM_TimerMode_16BitAutoNoInt = 0x03 }
 

Functions

int16_t TIM_Timer0n1_CalculateInitValue (uint16_t frequency, HAL_State_t freq1t, uint16_t limit)
 
void TIM_Timer0_Config (HAL_State_t freq1t, TIM_TimerMode_t mode, uint16_t frequency)
 
void TIM_Timer1_Config (HAL_State_t freq1t, TIM_TimerMode_t mode, uint16_t frequency)
 
void TIM_Timer2_Config (HAL_State_t freq1t, uint8_t prescaler, uint16_t frequency)
 
void TIM_Timer3_Config (HAL_State_t freq1t, uint8_t prescaler, uint16_t frequency, HAL_State_t intState)
 
void TIM_Timer4_Config (HAL_State_t freq1t, uint8_t prescaler, uint16_t frequency, HAL_State_t intState)
 

Macro Definition Documentation

◆ TIM_Timer0_Set1TMode

#define TIM_Timer0_Set1TMode (   __STATE__)    SFR_ASSIGN(AUXR, 7, __STATE__)

Definition at line 40 of file fw_tim.h.

◆ TIM_Timer0_SetFuncCounter

#define TIM_Timer0_SetFuncCounter   SFR_SET(TMOD, 2)

Definition at line 37 of file fw_tim.h.

◆ TIM_Timer0_SetFuncTimer

#define TIM_Timer0_SetFuncTimer   SFR_RESET(TMOD, 2)

Definition at line 38 of file fw_tim.h.

◆ TIM_Timer0_SetGateState

#define TIM_Timer0_SetGateState (   __STATE__)    SFR_ASSIGN(TMOD, 3, __STATE__)

Definition at line 36 of file fw_tim.h.

◆ TIM_Timer0_SetInitValue

#define TIM_Timer0_SetInitValue (   __TH__,
  __TL__ 
)    do{ TH0 = (__TH__); TL0 = (__TL__); }while(0)

Definition at line 44 of file fw_tim.h.

◆ TIM_Timer0_SetMode

#define TIM_Timer0_SetMode (   __TIM_TIMER_MODE__)    (TMOD = TMOD & ~(0x03 << 0) | ((__TIM_TIMER_MODE__) << 0))

Definition at line 43 of file fw_tim.h.

◆ TIM_Timer0_SetOutput

#define TIM_Timer0_SetOutput (   __STATE__)    SFR_ASSIGN(INTCLKO, 0, __STATE__)

Definition at line 42 of file fw_tim.h.

◆ TIM_Timer0_SetRunState

#define TIM_Timer0_SetRunState (   __STATE__)    SBIT_ASSIGN(TR0, __STATE__)

Definition at line 35 of file fw_tim.h.

◆ TIM_Timer1_FuncCounter

#define TIM_Timer1_FuncCounter   SFR_SET(TMOD, 6)

Definition at line 54 of file fw_tim.h.

◆ TIM_Timer1_FuncTimer

#define TIM_Timer1_FuncTimer   SFR_RESET(TMOD, 6)

Definition at line 55 of file fw_tim.h.

◆ TIM_Timer1_Set1TMode

#define TIM_Timer1_Set1TMode (   __STATE__)    SFR_ASSIGN(AUXR, 6, __STATE__)

Definition at line 57 of file fw_tim.h.

◆ TIM_Timer1_SetGateState

#define TIM_Timer1_SetGateState (   __STATE__)    SFR_ASSIGN(TMOD, 7, __STATE__)

Definition at line 53 of file fw_tim.h.

◆ TIM_Timer1_SetInitValue

#define TIM_Timer1_SetInitValue (   __TH__,
  __TL__ 
)    do{ TH1 = (__TH__); TL1 = (__TL__); }while(0)

Definition at line 61 of file fw_tim.h.

◆ TIM_Timer1_SetMode

#define TIM_Timer1_SetMode (   __TIM_TIMER_MODE__)    (TMOD = TMOD & ~(0x03 << 4) | ((__TIM_TIMER_MODE__) << 4))

Definition at line 60 of file fw_tim.h.

◆ TIM_Timer1_SetOutput

#define TIM_Timer1_SetOutput (   __STATE__)    SFR_ASSIGN(INTCLKO, 1, __STATE__)

Definition at line 59 of file fw_tim.h.

◆ TIM_Timer1_SetRunState

#define TIM_Timer1_SetRunState (   __STATE__)    SBIT_ASSIGN(TR1, __STATE__)

Definition at line 52 of file fw_tim.h.

◆ TIM_Timer2_FuncCounter

#define TIM_Timer2_FuncCounter   SFR_SET(AUXR, 3)

Definition at line 76 of file fw_tim.h.

◆ TIM_Timer2_FuncTimer

#define TIM_Timer2_FuncTimer   SFR_RESET(AUXR, 3)

Definition at line 77 of file fw_tim.h.

◆ TIM_Timer2_Set1TMode

#define TIM_Timer2_Set1TMode (   __STATE__)    SFR_ASSIGN(AUXR, 2, __STATE__)

Definition at line 79 of file fw_tim.h.

◆ TIM_Timer2_SetInitValue

#define TIM_Timer2_SetInitValue (   __TH__,
  __TL__ 
)    do{ T2H = (__TH__); T2L = (__TL__); }while(0)

Definition at line 82 of file fw_tim.h.

◆ TIM_Timer2_SetOutput

#define TIM_Timer2_SetOutput (   __STATE__)    SFR_ASSIGN(INTCLKO, 2, __STATE__)

Definition at line 81 of file fw_tim.h.

◆ TIM_Timer2_SetPreScaler

#define TIM_Timer2_SetPreScaler (   __PRE__)    do{SFRX_ON(); TM2PS = (__PRE__); SFRX_OFF();}while(0)

Definition at line 84 of file fw_tim.h.

◆ TIM_Timer2_SetRunState

#define TIM_Timer2_SetRunState (   __STATE__)    SFR_ASSIGN(AUXR, 4, __STATE__)

Definition at line 75 of file fw_tim.h.

◆ TIM_Timer3_FuncCounter

#define TIM_Timer3_FuncCounter   SFR_SET(T4T3M, 2)

Definition at line 93 of file fw_tim.h.

◆ TIM_Timer3_FuncTimer

#define TIM_Timer3_FuncTimer   SFR_RESET(T4T3M, 2)

Definition at line 94 of file fw_tim.h.

◆ TIM_Timer3_Set1TMode

#define TIM_Timer3_Set1TMode (   __STATE__)    SFR_ASSIGN(T4T3M, 1, __STATE__)

Definition at line 96 of file fw_tim.h.

◆ TIM_Timer3_SetInitValue

#define TIM_Timer3_SetInitValue (   __TH__,
  __TL__ 
)    do{ T3H = (__TH__); T3L = (__TL__); }while(0)

Definition at line 99 of file fw_tim.h.

◆ TIM_Timer3_SetOutput

#define TIM_Timer3_SetOutput (   __STATE__)    SFR_ASSIGN(T4T3M, 0, __STATE__)

Definition at line 98 of file fw_tim.h.

◆ TIM_Timer3_SetPreScaler

#define TIM_Timer3_SetPreScaler (   __PRE__)    do{SFRX_ON(); TM3PS = (__PRE__); SFRX_OFF();}while(0)

Definition at line 101 of file fw_tim.h.

◆ TIM_Timer3_SetRunState

#define TIM_Timer3_SetRunState (   __STATE__)    SFR_ASSIGN(T4T3M, 3, __STATE__)

Definition at line 92 of file fw_tim.h.

◆ TIM_Timer4_FuncCounter

#define TIM_Timer4_FuncCounter   SFR_SET(T4T3M, 6)

Definition at line 110 of file fw_tim.h.

◆ TIM_Timer4_FuncTimer

#define TIM_Timer4_FuncTimer   SFR_RESET(T4T3M, 6)

Definition at line 111 of file fw_tim.h.

◆ TIM_Timer4_Set1TMode

#define TIM_Timer4_Set1TMode (   __STATE__)    SFR_ASSIGN(T4T3M, 5, __STATE__)

Definition at line 113 of file fw_tim.h.

◆ TIM_Timer4_SetInitValue

#define TIM_Timer4_SetInitValue (   __TH__,
  __TL__ 
)    do{ T4H = (__TH__); T4L = (__TL__); }while(0)

Definition at line 116 of file fw_tim.h.

◆ TIM_Timer4_SetOutput

#define TIM_Timer4_SetOutput (   __STATE__)    SFR_ASSIGN(T4T3M, 4, __STATE__)

Definition at line 115 of file fw_tim.h.

◆ TIM_Timer4_SetPreScaler

#define TIM_Timer4_SetPreScaler (   __PRE__)    do{SFRX_ON(); TM4PS = (__PRE__); SFRX_OFF();}while(0)

Definition at line 118 of file fw_tim.h.

◆ TIM_Timer4_SetRunState

#define TIM_Timer4_SetRunState (   __STATE__)    SFR_ASSIGN(T4T3M, 7, __STATE__)

Definition at line 109 of file fw_tim.h.

Enumeration Type Documentation

◆ TIM_TimerMode_t

Enumerator
TIM_TimerMode_16BitAuto 
TIM_TimerMode_16Bit 
TIM_TimerMode_8BitAuto 
TIM_TimerMode_16BitAutoNoInt 

Definition at line 22 of file fw_tim.h.

23{
24 TIM_TimerMode_16BitAuto = 0x00, // 16-bit auto-reload from [TH0,TL0](Timer0), [TH1,TL1](Timer1)
25 TIM_TimerMode_16Bit = 0x01, // 16-bit no-auto-reload
26 TIM_TimerMode_8BitAuto = 0x02, // 8-bit auto-reload from TH0(Timer0), TH1(Timer1)
27 TIM_TimerMode_16BitAutoNoInt = 0x03 // Uninterruptable 16-bit auto-reload, Timer0 only
TIM_TimerMode_t
Definition: fw_tim.h:23
@ TIM_TimerMode_16BitAutoNoInt
Definition: fw_tim.h:27
@ TIM_TimerMode_16Bit
Definition: fw_tim.h:25
@ TIM_TimerMode_16BitAuto
Definition: fw_tim.h:24
@ TIM_TimerMode_8BitAuto
Definition: fw_tim.h:26

Function Documentation

◆ TIM_Timer0_Config()

void TIM_Timer0_Config ( HAL_State_t  freq1t,
TIM_TimerMode_t  mode,
uint16_t  frequency 
)

Definition at line 38 of file fw_tim.c.

39{
40 uint16_t init;
43 if (mode == TIM_TimerMode_8BitAuto)
44 {
45 init = TIM_Timer0n1_CalculateInitValue(frequency, freq1t, 0xFF);
46 TIM_Timer0_SetInitValue(init & 0xFF, init & 0xFF);
47 }
48 else
49 {
50 init = TIM_Timer0n1_CalculateInitValue(frequency, freq1t, 0xFFFF);
51 TIM_Timer0_SetInitValue(init >> 8, init & 0xFF);
52 }
53}
int16_t TIM_Timer0n1_CalculateInitValue(uint16_t frequency, HAL_State_t freq1t, uint16_t limit)
Definition: fw_tim.c:26
#define TIM_Timer0_Set1TMode(__STATE__)
Definition: fw_tim.h:40
#define TIM_Timer0_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:44
#define TIM_Timer0_SetMode(__TIM_TIMER_MODE__)
Definition: fw_tim.h:43
unsigned short uint16_t
Definition: fw_types.h:19

◆ TIM_Timer0n1_CalculateInitValue()

int16_t TIM_Timer0n1_CalculateInitValue ( uint16_t  frequency,
HAL_State_t  freq1t,
uint16_t  limit 
)

Calculate the initial value of Timer0 & Timer1 counter

  • If the frequency is too high, it will return the value of limit, so the timer will run in the highest frequency
  • If the frequency is too low, it will return 0, so the timer will run in the lowest possible frequency

Definition at line 26 of file fw_tim.c.

27{
29 if (!freq1t)
30 value = value / 12;
31 value = value / frequency;
32 if (value > limit)
33 return 0;
34 else
35 return limit - value;
36}
value
Definition: DS18B20_ATY.c:216
#define __SYSCLOCK
Definition: fw_sys.h:45
unsigned long uint32_t
Definition: fw_types.h:20

◆ TIM_Timer1_Config()

void TIM_Timer1_Config ( HAL_State_t  freq1t,
TIM_TimerMode_t  mode,
uint16_t  frequency 
)

Definition at line 55 of file fw_tim.c.

56{
57 uint16_t init;
60 if (mode == TIM_TimerMode_8BitAuto)
61 {
62 init = TIM_Timer0n1_CalculateInitValue(frequency, freq1t, 0xFF);
63 TIM_Timer1_SetInitValue(init & 0xFF, init & 0xFF);
64 }
65 else
66 {
67 init = TIM_Timer0n1_CalculateInitValue(frequency, freq1t, 0xFF);
68 TIM_Timer1_SetInitValue(init >> 8, init & 0xFF);
69 }
70}
#define TIM_Timer1_Set1TMode(__STATE__)
Definition: fw_tim.h:57
#define TIM_Timer1_SetMode(__TIM_TIMER_MODE__)
Definition: fw_tim.h:60
#define TIM_Timer1_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:61

◆ TIM_Timer2_Config()

void TIM_Timer2_Config ( HAL_State_t  freq1t,
uint8_t  prescaler,
uint16_t  frequency 
)

Timer2,3,4 Configuration

  1. no interrupt priority
  2. frequency = SYSCLK / (TMxPS + 1) / (0xFFFF - TxH,TxL) / (1T? 1 : 12)

Definition at line 93 of file fw_tim.c.

94{
95 uint16_t init = _TIM_Timer234_InitValueCalculate(frequency, prescaler, freq1t);
97 TIM_Timer2_SetPreScaler(prescaler);
98 TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
99}
int16_t _TIM_Timer234_InitValueCalculate(uint16_t frequency, uint8_t prescaler, HAL_State_t freq1t)
Definition: fw_tim.c:72
#define TIM_Timer2_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:82
#define TIM_Timer2_SetPreScaler(__PRE__)
Definition: fw_tim.h:84
#define TIM_Timer2_Set1TMode(__STATE__)
Definition: fw_tim.h:79

◆ TIM_Timer3_Config()

void TIM_Timer3_Config ( HAL_State_t  freq1t,
uint8_t  prescaler,
uint16_t  frequency,
HAL_State_t  intState 
)

Definition at line 101 of file fw_tim.c.

103{
104 uint16_t init = _TIM_Timer234_InitValueCalculate(frequency, prescaler, freq1t);
105 TIM_Timer3_Set1TMode(freq1t);
106 TIM_Timer3_SetPreScaler(prescaler);
107 TIM_Timer3_SetInitValue(init >> 8, init & 0xFF);
108 EXTI_Timer3_SetIntState(intState);
109}
#define EXTI_Timer3_SetIntState(__STATE__)
Definition: fw_exti.h:131
#define TIM_Timer3_Set1TMode(__STATE__)
Definition: fw_tim.h:96
#define TIM_Timer3_SetPreScaler(__PRE__)
Definition: fw_tim.h:101
#define TIM_Timer3_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:99

◆ TIM_Timer4_Config()

void TIM_Timer4_Config ( HAL_State_t  freq1t,
uint8_t  prescaler,
uint16_t  frequency,
HAL_State_t  intState 
)

Definition at line 111 of file fw_tim.c.

113{
114 uint16_t init = _TIM_Timer234_InitValueCalculate(frequency, prescaler, freq1t);
115 TIM_Timer4_Set1TMode(freq1t);
116 TIM_Timer4_SetPreScaler(prescaler);
117 TIM_Timer4_SetInitValue(init >> 8, init & 0xFF);
118 EXTI_Timer4_SetIntState(intState);
119}
#define EXTI_Timer4_SetIntState(__STATE__)
Definition: fw_exti.h:130
#define TIM_Timer4_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:116
#define TIM_Timer4_SetPreScaler(__PRE__)
Definition: fw_tim.h:118
#define TIM_Timer4_Set1TMode(__STATE__)
Definition: fw_tim.h:113