ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
fw_tim.h
Go to the documentation of this file.
1// Copyright 2021 IOsetting <iosetting(at)outlook.com>
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef ___FW_TIM_H___
16#define ___FW_TIM_H___
17
18#include "fw_conf.h"
19#include "fw_types.h"
20#include "fw_exti.h"
21
22typedef enum
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
29
31
32/***************************** /
33 * Timer 0
34*/
35#define TIM_Timer0_SetRunState(__STATE__) SBIT_ASSIGN(TR0, __STATE__)
36#define TIM_Timer0_SetGateState(__STATE__) SFR_ASSIGN(TMOD, 3, __STATE__)
37#define TIM_Timer0_SetFuncCounter SFR_SET(TMOD, 2)
38#define TIM_Timer0_SetFuncTimer SFR_RESET(TMOD, 2)
39// ON:FOSC, OFF:FOSC/12
40#define TIM_Timer0_Set1TMode(__STATE__) SFR_ASSIGN(AUXR, 7, __STATE__)
41// Enable output on P3.5, when counter overflow, P3.5 switch voltage level
42#define TIM_Timer0_SetOutput(__STATE__) SFR_ASSIGN(INTCLKO, 0, __STATE__)
43#define TIM_Timer0_SetMode(__TIM_TIMER_MODE__) (TMOD = TMOD & ~(0x03 << 0) | ((__TIM_TIMER_MODE__) << 0))
44#define TIM_Timer0_SetInitValue(__TH__, __TL__) do{ TH0 = (__TH__); TL0 = (__TL__); }while(0)
45
46void TIM_Timer0_Config(HAL_State_t freq1t, TIM_TimerMode_t mode, uint16_t frequency);
47
48
49/***************************** /
50 * Timer 1
51*/
52#define TIM_Timer1_SetRunState(__STATE__) SBIT_ASSIGN(TR1, __STATE__)
53#define TIM_Timer1_SetGateState(__STATE__) SFR_ASSIGN(TMOD, 7, __STATE__)
54#define TIM_Timer1_FuncCounter SFR_SET(TMOD, 6)
55#define TIM_Timer1_FuncTimer SFR_RESET(TMOD, 6)
56// ON:FOSC, OFF:FOSC/12
57#define TIM_Timer1_Set1TMode(__STATE__) SFR_ASSIGN(AUXR, 6, __STATE__)
58// Enable output on P3.4, when counter overflow, P3.4 switch voltage level
59#define TIM_Timer1_SetOutput(__STATE__) SFR_ASSIGN(INTCLKO, 1, __STATE__)
60#define TIM_Timer1_SetMode(__TIM_TIMER_MODE__) (TMOD = TMOD & ~(0x03 << 4) | ((__TIM_TIMER_MODE__) << 4))
61#define TIM_Timer1_SetInitValue(__TH__, __TL__) do{ TH1 = (__TH__); TL1 = (__TL__); }while(0)
62
63void TIM_Timer1_Config(HAL_State_t freq1t, TIM_TimerMode_t mode, uint16_t frequency);
64
65
66/***************************** /
67 * Timer 2,3,4 (STC8H3K only)
68 *
69 * ||=> 12T Mode => |
70 * | | |Counter| |=> TxIF Interrupt
71 * SYSCLK => TMxPS => | |=> |Timer | => TxR => TxH|TxL =>|
72 * | | |=> TxCLKO => Output
73 * ||=> 1T Mode => |
74*/
75#define TIM_Timer2_SetRunState(__STATE__) SFR_ASSIGN(AUXR, 4, __STATE__)
76#define TIM_Timer2_FuncCounter SFR_SET(AUXR, 3)
77#define TIM_Timer2_FuncTimer SFR_RESET(AUXR, 3)
78// ON:FOSC, OFF:FOSC/12
79#define TIM_Timer2_Set1TMode(__STATE__) SFR_ASSIGN(AUXR, 2, __STATE__)
80// Enable output on P1.3, when counter overflow, P1.3 switch voltage level
81#define TIM_Timer2_SetOutput(__STATE__) SFR_ASSIGN(INTCLKO, 2, __STATE__)
82#define TIM_Timer2_SetInitValue(__TH__, __TL__) do{ T2H = (__TH__); T2L = (__TL__); }while(0)
83// Timer2 Prescaler: [0, 255]
84#define TIM_Timer2_SetPreScaler(__PRE__) do{SFRX_ON(); TM2PS = (__PRE__); SFRX_OFF();}while(0)
85
86void TIM_Timer2_Config(HAL_State_t freq1t, uint8_t prescaler, uint16_t frequency);
87
88
89/***************************** /
90 * Timer 3
91*/
92#define TIM_Timer3_SetRunState(__STATE__) SFR_ASSIGN(T4T3M, 3, __STATE__)
93#define TIM_Timer3_FuncCounter SFR_SET(T4T3M, 2)
94#define TIM_Timer3_FuncTimer SFR_RESET(T4T3M, 2)
95// ON:FOSC, OFF:FOSC/12
96#define TIM_Timer3_Set1TMode(__STATE__) SFR_ASSIGN(T4T3M, 1, __STATE__)
97// Enable output on P0.4
98#define TIM_Timer3_SetOutput(__STATE__) SFR_ASSIGN(T4T3M, 0, __STATE__)
99#define TIM_Timer3_SetInitValue(__TH__, __TL__) do{ T3H = (__TH__); T3L = (__TL__); }while(0)
100// Timer3 Prescaler: [0, 255]
101#define TIM_Timer3_SetPreScaler(__PRE__) do{SFRX_ON(); TM3PS = (__PRE__); SFRX_OFF();}while(0)
102
103void TIM_Timer3_Config(HAL_State_t freq1t, uint8_t prescaler, uint16_t frequency, HAL_State_t intState);
104
105
106/***************************** /
107 * Timer 4
108*/
109#define TIM_Timer4_SetRunState(__STATE__) SFR_ASSIGN(T4T3M, 7, __STATE__)
110#define TIM_Timer4_FuncCounter SFR_SET(T4T3M, 6)
111#define TIM_Timer4_FuncTimer SFR_RESET(T4T3M, 6)
112// ON:FOSC, OFF:FOSC/12
113#define TIM_Timer4_Set1TMode(__STATE__) SFR_ASSIGN(T4T3M, 5, __STATE__)
114// Enable output on P0.7
115#define TIM_Timer4_SetOutput(__STATE__) SFR_ASSIGN(T4T3M, 4, __STATE__)
116#define TIM_Timer4_SetInitValue(__TH__, __TL__) do{ T4H = (__TH__); T4L = (__TL__); }while(0)
117// Timer4 Prescaler: [0, 255]
118#define TIM_Timer4_SetPreScaler(__PRE__) do{SFRX_ON(); TM4PS = (__PRE__); SFRX_OFF();}while(0)
119
120void TIM_Timer4_Config(HAL_State_t freq1t, uint8_t prescaler, uint16_t frequency, HAL_State_t intState);
121
122
123#endif
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
int16_t TIM_Timer0n1_CalculateInitValue(uint16_t frequency, HAL_State_t freq1t, uint16_t limit)
Definition: fw_tim.c:26
void TIM_Timer4_Config(HAL_State_t freq1t, uint8_t prescaler, uint16_t frequency, HAL_State_t intState)
Definition: fw_tim.c:111
void TIM_Timer3_Config(HAL_State_t freq1t, uint8_t prescaler, uint16_t frequency, HAL_State_t intState)
Definition: fw_tim.c:101
void TIM_Timer1_Config(HAL_State_t freq1t, TIM_TimerMode_t mode, uint16_t frequency)
Definition: fw_tim.c:55
void TIM_Timer0_Config(HAL_State_t freq1t, TIM_TimerMode_t mode, uint16_t frequency)
Definition: fw_tim.c:38
void TIM_Timer2_Config(HAL_State_t freq1t, uint8_t prescaler, uint16_t frequency)
Definition: fw_tim.c:93
unsigned short uint16_t
Definition: fw_types.h:19
HAL_State_t
Definition: fw_types.h:69
short int16_t
Definition: fw_types.h:24
unsigned char uint8_t
Definition: fw_types.h:18