22.3.2.5 Dithering
If it is not possible to achieve the desired frequency because of pre-scaler/period selection limitations, Dithering can be used to approximate the desired frequency and reduce waveform drift.
Dither accumulates the fractional error of the counter clock for each cycle. When the fractional error overflows, an additional cycle is added to the selected part of the cycle.
Example
If the timer clock frequency is 10MHz, it will give the timer a resolution of 100ns. Then, the output frequency should be 75 kHz. Here 75 kHz means a period of 13333ns, and that is not possible to achieve with a constant period with a 100ns resolution because it equals 133.33 cycles. The output period can be set to either 133 cycles (75.188kHz) or 134 cycles (74.626 kHz).
It is possible to change the period between the two frequencies manually in the firmware to get an average output frequency of 75 kHz. (change the every 3rd period to 134 cycles) The dither can do this automatically by accumulating the error (0.33 cycles). The accumulator calculate when the accumulated error is larger than one clock cycle and when that happens it adds an additional cycle to the timer period.
- On-time B
- On-time A and B
- Dead-time B
- Dead-time A and B
How much the dithering will affect the TCD cycle time depends on what Waveform Generation Mode is used, see table below.
Dithering is not supported in Dual Slope Mode.
WAVEGEN | DITHERSEL in TCD.DITCTRL | Additional TCD clock cycles to TCD cycle |
---|---|---|
One Ramp Mode | On-time B | 1 |
On-time A and B | 1 | |
Dead-time B | 0 | |
Dead-time A and B | 0 | |
Two Ramp Mode | On-time B | 1 |
On-time A and B | 2 | |
Dead-time B | 0 | |
Dead-time A and B | 0 | |
Four Ramp Mode | On-time B | 1 |
On-time A and B | 2 | |
Dead-time B | 1 | |
Dead-time A and B | 2 | |
Dual Slope Mode | On-time B | 0 (not supported) |
On-time A and B | 0 (not supported) | |
Dead-time B | 0 (not supported) | |
Dead-time A and B | 0 (not supported) |
The differences in the number of TCD clock cycles added to the TCD cycle is caused by the different number of compare values used by the TCD cycle. For example in One Ramp Mode, only CMPBCLR affects the TCD cycle time.
For DITHERSEL configurations where no extra cycles are added to the TCD cycles, compensation is reached by shortening the following output state.