|
Hmmm, actually there might be a documentation bug here.
The TRM (in section 27.3.4.3, subsection "On The Fly Duty Cycle Update", page 308 of revision E) says:
Support for multiple comparisons depends on the bit
CMP_BUFF in Configuration register CFG0. The following
describes the process:
■ When the CMP_BUFF is set to ‘1’; the updated comparator
value takes effect only after completion of the currently
running period. After the terminal count, the new
compare value is taken for further comparison. When
this mode is used, the PWM block detects only one compare
during a period.
■ When the CMP_BUFF is set to ‘0’; the updated comparator
value takes effect immediately even before the completion
of the current running period. This may result in
another toggling of the pin even before the completion of
current period, thus supporting multiple comparisons.
Of course, it's talking about the fixed function block. As nearly as I can tell by reading the generated C for my 16-bit fixed-function counter, this bit is set to 0? (It's certainly possible I misread it.)
It seems to me that the data sheet for the PWM component, quoted in my previous post, states that this bit is enabled. (You could argue it should be configurable.)
That still leaves open the question of whether the UDB implementation also supports this feature, and if so whether it is enabled by the component or not. Since the component datasheet seems to say that double-buffering is supported (without qualifying as to implementation) it seems that it should be?
There's more going on here than I first thought, it seems.
See also section 1.3.186, "TMR[0..3].CFG0 Configuration Register CFG0", page 297 of revision A in the PSoC 5 registers TRM.
|