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
*staticvoidtc_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);* }
