In this use case, the TC will be used to generate a match frequency.
The TC module will be set up as follows:
- GCLK generator 0 (GCLK main) clock source
- 16-bit resolution on the counter
- No prescaler
- Match frequency wave generation
- GCLK reload action
- Don't run in standby
- No inversion of waveform output
- No capture enabled
- Count upward
- Don't perform one-shot operations
- No event input enabled
- No event action
- No event generation enabled
- Counter starts on 0
- Capture compare channel 0 set to 4000
When system clock is 8MHz, and the compare channel 0 is 4000, the output frequency will be about 1KHz ( 8000000/4000/2 ).
Quick Start
Prerequisites
There are no prerequisites for this use case.
Code
Add to the main application source file, before any functions:
- SAM D21 Xplained Pro.
#define PWM_MODULE EXT1_PWM_MODULE
#define PWM_OUT_PIN EXT1_PWM_0_PIN
#define PWM_OUT_MUX EXT1_PWM_0_MUX
- SAM D20 Xplained Pro.
#define PWM_MODULE EXT1_PWM_MODULE
#define PWM_OUT_PIN EXT1_PWM_0_PIN
#define PWM_OUT_MUX EXT1_PWM_0_MUX
Add to the main application source file, outside of any functions: Copy-paste the following setup code to your user application:
{
config_tc.counter_16_bit.compare_capture_channel[0] = 4000;
config_tc.pwm_channel[0].enabled = true;
config_tc.pwm_channel[0].pin_out = PWM_OUT_PIN;
config_tc.pwm_channel[0].pin_mux = PWM_OUT_MUX;
}
Add to user application initialization (typically the start of main()
):
Workflow
- Create a module software instance structure for the TC module to store the TC driver state while it is in use.
- Note
- This should never go out of scope as long as the module is in use. In most cases, this should be global.
- Configure the TC module.
- Create a TC module configuration struct, which can be filled out to adjust the configuration of a physical TC peripheral.
- Initialize the TC configuration struct with the module's default values.
- Note
- This should always be performed before using the configuration struct to ensure that all values are initialized to known default settings.
- Alter the TC settings to configure the counter width, wave generation mode, and the compare channel 0 value.
config_tc.counter_16_bit.compare_capture_channel[0] = 4000;
- Alter the TC settings to configure the match frequency output on a physical device pin.
config_tc.pwm_channel[0].enabled = true;
config_tc.pwm_channel[0].pin_out = PWM_OUT_PIN;
config_tc.pwm_channel[0].pin_mux = PWM_OUT_MUX;
- Configure the TC module with the desired settings.
- Enable the TC module to start the timer and begin match frequency wave generation.
Use Case
Code
Copy-paste the following code to your user application:
Workflow
- Enter an infinite loop while the match frequency wave is generated via the TC module.