ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
fw_tim.c File Reference
#include "fw_tim.h"
#include "fw_sys.h"
#include "fw_util.h"

Go to the source code of this file.

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)
 
int16_t _TIM_Timer234_InitValueCalculate (uint16_t frequency, uint8_t prescaler, HAL_State_t freq1t)
 
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)
 

Function Documentation

◆ _TIM_Timer234_InitValueCalculate()

int16_t _TIM_Timer234_InitValueCalculate ( uint16_t  frequency,
uint8_t  prescaler,
HAL_State_t  freq1t 
)

Definition at line 72 of file fw_tim.c.

74{
76 if (!freq1t)
77 value = value / 12;
78 value = value / ((prescaler + 1) * frequency);
79
80 if (value > 0xFFFF)
81 return 0;
82 else
83 return 0xFFFF - value;
84}
value
Definition: DS18B20_ATY.c:216
#define __SYSCLOCK
Definition: fw_sys.h:45
unsigned long uint32_t
Definition: fw_types.h:20

◆ 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
@ TIM_TimerMode_8BitAuto
Definition: fw_tim.h:26
#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}

◆ 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