Robobo
|
#include "chip.h"
#include <assert.h>
Functions | |
void | TC_Configure (Tc *pTc, uint32_t dwChannel, uint32_t dwMode) |
Configures a Timer Counter Channel. More... | |
void | TC_Start (Tc *pTc, uint32_t dwChannel) |
Reset and Start the TC Channel. More... | |
void | TC_Stop (Tc *pTc, uint32_t dwChannel) |
Stop TC Channel. More... | |
uint32_t | TC_FindMckDivisor (uint32_t dwFreq, uint32_t dwMCk, uint32_t *dwDiv, uint32_t *dwTcClks, uint32_t dwBoardMCK) |
Find best MCK divisor. More... | |
uint32_t | TC_ReadCV (Tc *p_tc, uint32_t ul_channel) |
Read Timer Counter Counter Value on the selected TC & channel. More... | |
uint32_t | TC_GetStatus (Tc *p_tc, uint32_t ul_channel) |
Get current status on the selected channel. More... | |
void | TC_SetRA (Tc *tc, uint32_t chan, uint32_t v) |
Set RA on the selected channel. More... | |
void | TC_SetRB (Tc *tc, uint32_t chan, uint32_t v) |
Set RB on the selected channel. More... | |
void | TC_SetRC (Tc *tc, uint32_t chan, uint32_t v) |
Set RC on the selected channel. More... | |
Implementation of Timer Counter (TC).
void TC_Configure | ( | Tc * | pTc, |
uint32_t | dwChannel, | ||
uint32_t | dwMode | ||
) |
Configures a Timer Counter Channel.
Configures a Timer Counter to operate in the given mode. Timer is stopped after configuration and must be restarted with TC_Start(). All the interrupts of the timer are also disabled.
pTc | Pointer to a Tc instance. |
channel | Channel number. |
mode | Operating mode (TC_CMR value). |
uint32_t TC_FindMckDivisor | ( | uint32_t | dwFreq, |
uint32_t | dwMCk, | ||
uint32_t * | dwDiv, | ||
uint32_t * | dwTcClks, | ||
uint32_t | dwBoardMCK | ||
) |
Find best MCK divisor.
Finds the best MCK divisor given the timer frequency and MCK. The result is guaranteed to satisfy the following equation:
with DIV being the highest possible value.
dwFreq | Desired timer frequency. |
dwMCk | Master clock frequency. |
dwDiv | Divisor value. |
dwTcClks | TCCLKS field value for divisor. |
dwBoardMCK | Board clock frequency. |
uint32_t TC_GetStatus | ( | Tc * | p_tc, |
uint32_t | ul_channel | ||
) |
Get current status on the selected channel.
p_tc | Pointer to a TC instance. |
ul_channel | Channel to configure. |
uint32_t TC_ReadCV | ( | Tc * | p_tc, |
uint32_t | ul_channel | ||
) |
Read Timer Counter Counter Value on the selected TC & channel.
p_tc | Pointer to a TC instance. |
ul_channel | Channel to configure. |
void TC_SetRA | ( | Tc * | tc, |
uint32_t | chan, | ||
uint32_t | v | ||
) |
Set RA on the selected channel.
tc | Pointer to a TC instance. |
chan | Channel to configure. |
v | New value for RA. |
void TC_SetRB | ( | Tc * | tc, |
uint32_t | chan, | ||
uint32_t | v | ||
) |
Set RB on the selected channel.
tc | Pointer to a TC instance. |
chan | Channel to configure. |
v | New value for RB. |
void TC_SetRC | ( | Tc * | tc, |
uint32_t | chan, | ||
uint32_t | v | ||
) |
Set RC on the selected channel.
tc | Pointer to a TC instance. |
chan | Channel to configure. |
v | New value for RC. |
void TC_Start | ( | Tc * | pTc, |
uint32_t | dwChannel | ||
) |
Reset and Start the TC Channel.
Enables the timer clock and performs a software reset to start the counting.
pTc | Pointer to a Tc instance. |
dwChannel | Channel number. |