Skip to content

Commit 6b4a042

Browse files
committed
Added some utility functions in libsam for TC. (Neil H.)
1 parent e4cb57d commit 6b4a042

File tree

4 files changed

+82
-27
lines changed

4 files changed

+82
-27
lines changed

system/libsam/include/tc.h

+4
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ extern void TC_Stop( Tc *pTc, uint32_t dwChannel ) ;
6868

6969
extern uint32_t TC_FindMckDivisor( uint32_t dwFreq, uint32_t dwMCk, uint32_t *dwDiv, uint32_t *dwTcClks, uint32_t dwBoardMCK ) ;
7070

71+
extern uint32_t TC_ReadCV(Tc *p_tc, uint32_t ul_channel);
72+
73+
extern uint32_t TC_GetStatus(Tc *p_tc, uint32_t ul_channel);
74+
7175
extern void TC_SetRA(Tc *tc, uint32_t chan, uint32_t v) ;
7276

7377
extern void TC_SetRB(Tc *tc, uint32_t chan, uint32_t v) ;

system/libsam/source/tc.c

+49
Original file line numberDiff line numberDiff line change
@@ -173,14 +173,63 @@ extern uint32_t TC_FindMckDivisor( uint32_t dwFreq, uint32_t dwMCk, uint32_t *dw
173173
return 1 ;
174174
}
175175

176+
/**
177+
* \brief Read Timer Counter Counter Value on the selected TC & channel.
178+
*
179+
* \param p_tc Pointer to a TC instance.
180+
* \param ul_channel Channel to configure.
181+
*
182+
* \return RC value.
183+
*/
184+
uint32_t TC_ReadCV(Tc *p_tc, uint32_t ul_channel){
185+
return p_tc->TC_CHANNEL[ul_channel].TC_CV;
186+
}
187+
188+
/**
189+
* \brief Get current status on the selected channel.
190+
*
191+
* \param p_tc Pointer to a TC instance.
192+
* \param ul_channel Channel to configure.
193+
*
194+
* \return The current TC status.
195+
*/
196+
uint32_t TC_GetStatus(Tc *p_tc, uint32_t ul_channel)
197+
{
198+
TcChannel *tc_channel;
199+
200+
tc_channel = p_tc->TC_CHANNEL + ul_channel;
201+
return tc_channel->TC_SR;
202+
}
203+
204+
/**
205+
* \brief Set RA on the selected channel.
206+
*
207+
* \param tc Pointer to a TC instance.
208+
* \param chan Channel to configure.
209+
* \param v New value for RA.
210+
*/
176211
void TC_SetRA(Tc *tc, uint32_t chan, uint32_t v) {
177212
tc->TC_CHANNEL[chan].TC_RA = v;
178213
}
179214

215+
/**
216+
* \brief Set RB on the selected channel.
217+
*
218+
* \param tc Pointer to a TC instance.
219+
* \param chan Channel to configure.
220+
* \param v New value for RB.
221+
*/
180222
void TC_SetRB(Tc *tc, uint32_t chan, uint32_t v) {
181223
tc->TC_CHANNEL[chan].TC_RB = v;
182224
}
183225

226+
/**
227+
* \brief Set RC on the selected channel.
228+
*
229+
* \param tc Pointer to a TC instance.
230+
* \param chan Channel to configure.
231+
* \param v New value for RC.
232+
*/
184233
void TC_SetRC(Tc *tc, uint32_t chan, uint32_t v) {
185234
tc->TC_CHANNEL[chan].TC_RC = v;
186235
}
282 Bytes
Binary file not shown.

variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt

+29-27
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ pmc.o:
7272
00000000 T pmc_switch_udpck_to_upllck
7373

7474
pwmc.o:
75-
00000000 r C.9.7272
75+
00000000 r C.9.7280
7676
00000000 t FindClockConfiguration
7777
00000000 T PWMC_ConfigureChannel
7878
00000000 T PWMC_ConfigureChannelExt
@@ -100,14 +100,14 @@ pwmc.o:
100100
00000000 T PWMC_SetSyncChannelUpdateUnlock
101101
00000000 T PWMC_WriteBuffer
102102
U __assert_func
103-
00000000 r __func__.5968
104-
00000000 r __func__.5979
105-
00000000 r __func__.5994
106-
00000000 r __func__.6005
107-
00000000 r __func__.6016
108-
00000000 r __func__.6023
109-
00000000 r __func__.6107
103+
00000000 r __func__.5974
104+
00000000 r __func__.5985
105+
00000000 r __func__.6000
106+
00000000 r __func__.6011
107+
00000000 r __func__.6022
108+
00000000 r __func__.6029
110109
00000000 r __func__.6113
110+
00000000 r __func__.6119
111111

112112
rtc.o:
113113
00000000 T RTC_ClearSCCR
@@ -123,9 +123,9 @@ rtc.o:
123123
00000000 T RTC_SetTime
124124
00000000 T RTC_SetTimeAlarm
125125
U __assert_func
126-
00000000 r __func__.5965
127-
00000000 r __func__.5974
128-
00000000 r __func__.5979
126+
00000000 r __func__.5971
127+
00000000 r __func__.5980
128+
00000000 r __func__.5985
129129

130130
rtt.o:
131131
00000000 T RTT_EnableIT
@@ -134,8 +134,8 @@ rtt.o:
134134
00000000 T RTT_SetAlarm
135135
00000000 T RTT_SetPrescaler
136136
U __assert_func
137-
00000000 r __func__.5972
138-
00000000 r __func__.5980
137+
00000000 r __func__.5978
138+
00000000 r __func__.5986
139139

140140
spi.o:
141141
00000000 T SPI_Configure
@@ -153,15 +153,17 @@ spi.o:
153153
tc.o:
154154
00000000 T TC_Configure
155155
00000000 T TC_FindMckDivisor
156+
00000000 T TC_GetStatus
157+
00000000 T TC_ReadCV
156158
00000000 T TC_SetRA
157159
00000000 T TC_SetRB
158160
00000000 T TC_SetRC
159161
00000000 T TC_Start
160162
00000000 T TC_Stop
161163
U __assert_func
162-
00000000 r __func__.5967
163164
00000000 r __func__.5973
164165
00000000 r __func__.5979
166+
00000000 r __func__.5985
165167

166168
timetick.o:
167169
00000000 T GetTickCount
@@ -188,18 +190,18 @@ twi.o:
188190
00000000 T TWI_TransferComplete
189191
00000000 T TWI_WriteByte
190192
U __assert_func
191-
00000000 r __func__.6340
192-
00000000 r __func__.6355
193-
00000000 r __func__.6359
194-
00000000 r __func__.6366
195-
00000000 r __func__.6370
196-
00000000 r __func__.6375
197-
00000000 r __func__.6383
198-
00000000 r __func__.6397
199-
00000000 r __func__.6402
200-
00000000 r __func__.6406
201-
00000000 r __func__.6411
202-
00000000 r __func__.6415
193+
00000000 r __func__.6346
194+
00000000 r __func__.6361
195+
00000000 r __func__.6365
196+
00000000 r __func__.6372
197+
00000000 r __func__.6376
198+
00000000 r __func__.6381
199+
00000000 r __func__.6389
200+
00000000 r __func__.6403
201+
00000000 r __func__.6408
202+
00000000 r __func__.6412
203+
00000000 r __func__.6417
204+
00000000 r __func__.6421
203205

204206
usart.o:
205207
00000000 T USART_Configure
@@ -218,7 +220,7 @@ usart.o:
218220
00000000 T USART_Write
219221
00000000 T USART_WriteBuffer
220222
U __assert_func
221-
00000000 r __func__.6261
223+
00000000 r __func__.6267
222224

223225
wdt.o:
224226
00000000 T WDT_Disable

0 commit comments

Comments
 (0)