summaryrefslogtreecommitdiff
path: root/bsp/rx/RPDL/r_pdl_tmr.h
blob: 0c903b9817ab22c4a5db9cb43b4417b693a2f363 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
/*""FILE COMMENT""*******************************************************
* System Name	: Timer TMR API for RX62Nxx
* File Name		: r_pdl_tmr.h
* Version		: 1.02
* Contents		: Timer TMR API header
* Customer		: 
* Model			: 
* Order			: 
* CPU			: RX
* Compiler		: RXC
* OS			: Nothing
* Programmer	: 
* Note			: 
************************************************************************
* Copyright, 2011. Renesas Electronics Corporation
* and Renesas Solutions Corporation
************************************************************************
* History		: 2011.04.08
*				: Ver 1.02
*				: CS-5 release.
*""FILE COMMENT END""**************************************************/

#ifndef R_PDL_TMR_H
#define R_PDL_TMR_H

#include "r_pdl_common_defs_RX62Nxx.h"

/* Function prototypes */
bool R_TMR_Set(
	uint8_t
);
bool R_TMR_CreateChannel(
	uint8_t,
	uint32_t,
	uint8_t,
	uint8_t,
	uint8_t,
	uint8_t,
	void *,
	void *,
	void *,
	uint8_t
);
bool R_TMR_CreateUnit(
	uint8_t,
	uint32_t,
	uint8_t,
	uint16_t,
	uint16_t,
	uint16_t,
	void *,
	void *,
	void *,
	uint8_t
);
bool R_TMR_CreatePeriodic(
	uint8_t,
	uint32_t,
	float,
	float,
	void *,
	void *,
	uint8_t
);
bool R_TMR_CreateOneShot(
	uint8_t,
	uint32_t,
	float,
	void *,
	uint8_t
);
bool R_TMR_Destroy(
	uint8_t
); 
bool R_TMR_ControlChannel(
	uint8_t,
	uint32_t,
	uint8_t,
	uint8_t,
	uint8_t
);
bool R_TMR_ControlUnit(
	uint8_t,
	uint32_t,
	uint16_t,
	uint16_t,
	uint16_t
);
bool R_TMR_ControlPeriodic(
	uint8_t,
	uint32_t,
	float,
	float
);
bool R_TMR_ReadChannel(
	uint8_t,
	uint8_t *,
	uint8_t *,
	uint8_t *,
	uint8_t *
);
bool R_TMR_ReadUnit(
	uint8_t,
	uint8_t *,
	uint16_t *,
	uint16_t *,
	uint16_t *
);

/* Pin selection */
#define PDL_TMR_PIN_TMR0_A	0x01u
#define PDL_TMR_PIN_TMR0_B	0x02u
#define PDL_TMR_PIN_TMR1_A	0x04u
#define PDL_TMR_PIN_TMR1_B	0x08u
#define PDL_TMR_PIN_TMR2_A	0x10u
#define PDL_TMR_PIN_TMR2_B	0x20u
#define PDL_TMR_PIN_TMR3_A	0x40u
#define PDL_TMR_PIN_TMR3_B	0x80u

/* Counter clock sources */
#define PDL_TMR_CLK_OFF						0x00000001ul
#define PDL_TMR_CLK_EXT_RISING				0x00000002ul
#define PDL_TMR_CLK_EXT_FALLING				0x00000004ul
#define PDL_TMR_CLK_EXT_BOTH				0x00000008ul
#define PDL_TMR_CLK_PCLK_DIV_1				0x00000010ul
#define PDL_TMR_CLK_PCLK_DIV_2				0x00000020ul
#define PDL_TMR_CLK_PCLK_DIV_8				0x00000040ul
#define PDL_TMR_CLK_PCLK_DIV_32				0x00000080ul
#define PDL_TMR_CLK_PCLK_DIV_64				0x00000100ul
#define PDL_TMR_CLK_PCLK_DIV_1024			0x00000200ul
#define PDL_TMR_CLK_PCLK_DIV_8192			0x00000400ul
#define PDL_TMR_CLK_TMR1_OVERFLOW			0x00000800ul
#define PDL_TMR_CLK_TMR3_OVERFLOW			0x00001000ul
#define PDL_TMR_CLK_TMR0_CM_A				0x00002000ul
#define PDL_TMR_CLK_TMR2_CM_A				0x00004000ul

/* A/D trigger control */
#define PDL_TMR_ADC_TRIGGER_DISABLE			0x00008000ul
#define PDL_TMR_ADC_TRIGGER_ENABLE			0x00010000ul

/* Counter clearing options */
#define PDL_TMR_CLEAR_DISABLE				0x00020000ul
#define PDL_TMR_CLEAR_CM_A					0x00040000ul
#define PDL_TMR_CLEAR_CM_B					0x00080000ul
#define PDL_TMR_CLEAR_RESET_RISING			0x00100000ul
#define PDL_TMR_CLEAR_RESET_HIGH			0x00200000ul

/* DTC CMA trigger control */
#define PDL_TMR_CM_A_DTC_TRIGGER_DISABLE	0x00400000ul
#define PDL_TMR_CM_A_DTC_TRIGGER_ENABLE		0x00800000ul

/* DTC CMB trigger control */
#define PDL_TMR_CM_B_DTC_TRIGGER_DISABLE	0x01000000ul
#define PDL_TMR_CM_B_DTC_TRIGGER_ENABLE		0x02000000ul

/* Output control options */
#define PDL_TMR_OUTPUT_IGNORE_CM_A	0x01u
#define PDL_TMR_OUTPUT_LOW_CM_A		0x02u
#define PDL_TMR_OUTPUT_HIGH_CM_A	0x04u
#define PDL_TMR_OUTPUT_INV_CM_A		0x08u
#define PDL_TMR_OUTPUT_IGNORE_CM_B	0x10u
#define PDL_TMR_OUTPUT_LOW_CM_B		0x20u
#define PDL_TMR_OUTPUT_HIGH_CM_B	0x40u
#define PDL_TMR_OUTPUT_INV_CM_B		0x80u

/* Channels and units */
#define PDL_TMR_TMR0	0
#define PDL_TMR_TMR1	1
#define PDL_TMR_TMR2	2
#define PDL_TMR_TMR3	3
#define PDL_TMR_UNIT0	4
#define PDL_TMR_UNIT1	5

/* Period or frequency selection */
#define PDL_TMR_PERIOD						0x00000001ul
#define PDL_TMR_FREQUENCY					0x00000002ul

/* Output pin control */
#define PDL_TMR_OUTPUT_HIGH					0x00000004ul
#define PDL_TMR_OUTPUT_LOW					0x00000008ul
#define PDL_TMR_OUTPUT_OFF					0x00000010ul
#define PDL_TMR_OUTPUT_ENABLE				0x00000020ul
#define PDL_TMR_OUTPUT_DISABLE				0x00000040ul

/* ADC trigger control */
#define PDL_TMR_ADC_TRIGGER_ON				0x00000080ul
#define PDL_TMR_ADC_TRIGGER_OFF				0x00000100ul

/* Pulse DTC trigger control */
#define PDL_TMR_PULSE_DTC_TRIGGER_DISABLE	0x00000200ul
#define PDL_TMR_PULSE_DTC_TRIGGER_ENABLE	0x00000400ul

/* Period DTC trigger control */
#define PDL_TMR_PERIOD_DTC_TRIGGER_DISABLE	0x00000800ul
#define PDL_TMR_PERIOD_DTC_TRIGGER_ENABLE	0x00001000ul

/* CPU control */
#define PDL_TMR_CPU_ON						0x00002000ul
#define PDL_TMR_CPU_OFF						0x00004000ul

/* Timer counter control */
#define PDL_TMR_STOP						0x00008000ul
#define PDL_TMR_START						0x00010000ul

/* Register selections */
#define PDL_TMR_COUNTER						0x00020000ul
#define PDL_TMR_TIME_CONSTANT_A				0x00040000ul
#define PDL_TMR_TIME_CONSTANT_B				0x00080000ul

#endif
/* End of file */