9.1.5.2 Setup Code
Add these macros to the top of your main application C-file:
/* Use TC Peripheral 0. */
#define TC TC0
#define TC_PERIPHERAL 0
Add these macros and function to your main application C-file:/* Configure TC0 channel 1 as waveform output. */
#define TC_CHANNEL_WAVEFORM 1
#define ID_TC_WAVEFORM ID_TC1
#define PIN_TC_WAVEFORM PIN_TC0_TIOA1
#define PIN_TC_WAVEFORM_MUX PIN_TC0_TIOA1_MUX
#define TC_WAVEFORM_TIMER_SELECTION TC_CMR_TCCLKS_TIMER_CLOCK4
#define TC_WAVEFORM_DIVISOR 128
#define TC_WAVEFORM_FREQUENCY 178
#define TC_WAVEFORM_DUTY_CYCLE 30
*
static
void
tc_waveform_initialize(
void
)
* {
* uint32_t ra, rc;
*
*
// Configure the PMC to enable the TC module.
* sysclk_enable_peripheral_clock(ID_TC_WAVEFORM);
*
*
// Init TC to waveform mode.
* tc_init(TC, TC_CHANNEL_WAVEFORM,
* TC_WAVEFORM_TIMER_SELECTION
// Waveform Clock Selection
* | TC_CMR_WAVE
// Waveform mode is enabled
* | TC_CMR_ACPA_SET
// RA Compare Effect: set
* | TC_CMR_ACPC_CLEAR
// RC Compare Effect: clear
* | TC_CMR_CPCTRG
// UP mode with automatic trigger on RC Compare
* );
*
*
// Configure waveform frequency and duty cycle.
* rc = (sysclk_get_peripheral_bus_hz(TC) /
* TC_WAVEFORM_DIVISOR /
* TC_WAVEFORM_FREQUENCY;
* tc_write_rc(TC, TC_CHANNEL_WAVEFORM, rc);
* ra = (100 - TC_WAVEFORM_FREQUENCY_DUTY_CYCLE * rc / 100;
* tc_write_ra(TC, TC_CHANNEL_WAVEFORM, ra);
*
*
// Enable TC TC_CHANNEL_WAVEFORM.
* tc_start(TC, TC_CHANNEL_WAVEFORM);
* }