English
Language : 

XC2700 Datasheet, PDF (47/62 Pages) Infineon Technologies AG – 16/32-Bit Single-Chip Microcontroller
XC2700 Derivatives
XC2000 Family / Alpha Line
Detailed Errata Description
GPT12_AI.H001 Modification of Block Prescalers BPS1 and BPS2
The block prescalers BPS1 and BPS2, controlled via bit fields T3CON.BSP1 and
T6CON.BPS2, determine the basic clock for the GPT1 and GPT2 block, respectively.
After reset, when initializing a block prescaler BPSx to a value different from its default
value (00B), it must be initialized first before any mode involving external trigger signals
is configured for the associated GPTx block. These modes include counter, incremental
interface, capture, and reload mode. Otherwise, unintended count/capture/reload events
may occur.
In case a block prescaler BPSx needs to be modified during operation of the GPTx block,
disable related interrupts before modification of BPSx, and afterwards clear the
corresponding service request flags and re-initialize those registers (T2, T3, T4 in block
GPT1, and T5, T6, CAPREL in block GPT2) that might be affected by an unintended
count/capture/reload event.
GPT12E_X.H002 Reading of Concatenated Timers
For measuring longer time periods, a core timer (T3 or T6) may be concatenated with an
auxiliary timer (T2/T4 or T5) of the same timer block. In this case, the core timer contains
the low part, and the auxiliary timer contains the high part of the extended timer value.
When reading the low and high parts of concatenated timers, care must be taken to
obtain consistent values in particular after a timer overflow/underflow (e.g. one part may
already have considered an overflow, while the other has not). This is a general issue
when reading multi-word results with consecutive instructions, and not necessarily
unique to the GPT module microarchitecture.
The following algorithm may be used to read concatenated GPT timers, represented by
Timer_high (for auxiliary timer, here: T2) and Timer_low (for core timer, here: T3). In this
example, the high part is read twice, and reading of the low part is repeated if two
different values were read for the high part.
• read Timer_high_temp = T2
• read Timer_low = T3
• wait two basic clock cycles (to allow increment/decrement of auxiliary timer in case
of core timer overflow/underflow) - see Table 7 below
• read Timer_high = T2
– if Timer_high is not equal to Timer_high_temp: read Timer_low = T3
Errata Sheet
47
V1.7, 2014-10