ADC Result Handling on XC2000/XE166 family of Microcontrollers - description

Application Note, V1.0, November. 2008
AP16155
XC2000/XE166 family
ADC Result Handling on XC2000/XE166
family of Microcontrollers
Microcontrollers
Edition 2008-11-11
Published by
Infineon Technologies AG
81726 München, Germany
© Infineon Technologies AG 2008.
All Rights Reserved.
LEGAL DISCLAIMER
THE INFORMATION GIVEN IN THIS APPLICATION NOTE IS GIVEN AS A HINT FOR THE
IMPLEMENTATION OF THE INFINEON TECHNOLOGIES COMPONENT ONLY AND SHALL NOT BE
REGARDED AS ANY DESCRIPTION OR WARRANTY OF A CERTAIN FUNCTIONALITY, CONDITION OR
QUALITY OF THE INFINEON TECHNOLOGIES COMPONENT. THE RECIPIENT OF THIS APPLICATION
NOTE MUST VERIFY ANY FUNCTION DESCRIBED HEREIN IN THE REAL APPLICATION. INFINEON
TECHNOLOGIES HEREBY DISCLAIMS ANY AND ALL WARRANTIES AND LIABILITIES OF ANY KIND
(INCLUDING WITHOUT LIMITATION WARRANTIES OF NON-INFRINGEMENT OF INTELLECTUAL
PROPERTY RIGHTS OF ANY THIRD PARTY) WITH RESPECT TO ANY AND ALL INFORMATION GIVEN
IN THIS APPLICATION NOTE.
Information
For further information on technology, delivery terms and conditions and prices please contact your nearest
Infineon Technologies Office (www.infineon.com).
Warnings
Due to technical requirements components may contain dangerous substances. For information on the types
in question please contact your nearest Infineon Technologies Office.
Infineon Technologies Components may only be used in life-support devices or systems with the express
written approval of Infineon Technologies, if a failure of such components can reasonably be expected to
cause the failure of that life-support device or system, or to affect the safety or effectiveness of that device or
system. Life support devices or systems are intended to be implanted in the human body, or to support
and/or maintain and sustain and/or protect human life. If they fail, it is reasonable to assume that the health
of the user or other persons may be endangered.
AP16155
ADC Result Handling - XC2000/XE166
AP16155
Revision History:
Previous Version:
Page
2008-11
none
Subjects (major changes since last revision)
V1.0
We Listen to Your Comments
Any information within this document that you feel is wrong, unclear or missing at all?
Your feedback will help us to continuously improve the quality of this document.
Please send your proposal (including a reference to this document) to:
[email protected]
Application Note
3
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Table of Contents
Page
1
1.1
1.2
1.3
1.4
Introduction ...................................................................................................................................5
Overview .........................................................................................................................................5
Hardware arrangement ...................................................................................................................5
Software requirements ....................................................................................................................6
Conversion result handling..............................................................................................................6
2
2.1
2.1.1.1
2.1.1.2
2.1.1.3
2.1.1.4
2.1.2
2.1.3
Storage of the conversion results...............................................................................................7
Representation of conversion data .................................................................................................8
Standard read view RESRx (x = 0-7)..............................................................................................8
Read view RESRAx (x = 0-7)..........................................................................................................9
Read view RESRVx (x = 0-7) for debugger ....................................................................................9
Read view RESRAVx (x = 0-7) for debugger..................................................................................9
Data reduction filter disabled...........................................................................................................9
Data reduction filter enabled ...........................................................................................................9
3
3.1
3.2
3.3
3.4
Wait-for-read mode .....................................................................................................................10
WFR test scenario 1......................................................................................................................11
WFR test scenario 2......................................................................................................................12
WFR test scenario 3......................................................................................................................12
Important things to remember for wait-for-read mode ..................................................................12
4
4.1
4.1.1
4.1.2
4.1.3
4.1.3.1
4.2
Result FIFO buffer.......................................................................................................................13
Single FIFO structure ....................................................................................................................13
FIFO buffer test scenario 1 ...........................................................................................................14
FIFO buffer test scenario 2 ...........................................................................................................15
FIFO buffer test scenario 3 ...........................................................................................................15
FIFO buffer test scenario 4 ...........................................................................................................15
Multiple FIFO structure..................................................................................................................16
5
5.1
5.2
Data reduction filter ....................................................................................................................19
Data reduction test scenario 1 ......................................................................................................20
Data reduction test scenario 2 ......................................................................................................21
6
6.1
6.2
6.3
Data reduction filter with result FIFO........................................................................................22
Data reduction filter with result FIFO test scenario 1 ....................................................................22
Data reduction filter with result FIFO test scenario 2 ....................................................................23
Data reduction filter with result FIFO test scenario 3 ....................................................................24
7
Result event interrupt .................................................................................................................25
Application Note
4
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Introduction
1
Introduction
1.1
Overview
This application note provides some detailed information on the result handling mechanism of the ADC
module and the programming aspects of it for XC2000/XE166 family of 16-bit Microcontrollers. The
configuration options for the result handling of ADC module are discussed with examples.
The example programs and the detailed description on the same will help the users to program the ADC for
their application needs. The following key result handling operations of the ADC are explained in detail.
•
Storage of the conversion results
•
Wait-for-read mode
•
Result Event Interrupts
•
Result FIFO buffer
•
Data reduction or anti-aliasing Filter
1.2
Hardware arrangement
The application examples use the XC2267 starter kit and an optional potentiometer circuit for analog input
voltage tuning. For all examples the potentiometer available with the start kit is used whereas for the
Multiple FIFO structure example external potentiometer circuit is used.
A typical arrangement of the hardware is shown in Figure 1.
Figure 1
An example hardware setup
Application Note
5
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Introduction
1.3
Software requirements
DAvE 2.1 r24 (Digital Application virtual Engineer) is used for the peripheral driver configuration settings.
Keil uVision 3 C166 V6.1 is used for source code addition, compilation and hex file generation.
Memtool V4.01.01 used for downloading the hex file to target.
Docklight V1.6 is used for target communication.
1.4
Conversion result handling
The ADC module contains two ADC kernels that can operate autonomously or can be synchronized to each
other. An ADC kernel is a unit used to convert an analog input signal into a digital value and provides means
for triggering, data handling and storage.
The conversion result handling is shown in Figure 2.
Figure 2
Conversion result handling
The result handling unit of each ADC kernel has 8 independent result registers. The conversion result of
each analog input channel can be directed to one of the result registers to be stored there. The result
handling block also supports data reduction (e.g. for digital anti-aliasing filtering) by automatically adding up
to 4 conversion results before informing the CPU that new data is available.
Additionally, the results registers can be concatenated to FIFO structures to provide storage capability for
more than one conversion result without overwriting previous data. This feature also helps to handle CPU
latency effects.
Application Note
6
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Storage of the conversion results
2
Storage of the conversion results
Each analog input channel has an associated channel control register CHCTRx (x = 0 -15) contains a pointer
bitfield RESRSEL defining the result register to store the conversion result of this channel.
For example to map the result register 7 for channel 0, the RESRSEL bitfield of CHCTR0 register should be
set with “111” and is shown in Figure 3.
Figure 3
Result register selection for channel 0
Once the conversion is completed and result is stored in the result register, an individual data valid flag VF7
will be set in the VFR register. This indicates that a new data is stored in the result register and can be read
out.
Figure 4
Data valid flag of result register 7
Another view of the valid flag bit in VFR register is from VF bit in RCR7 register. Only read operation is
possible in RCR7 register whereas in VFR register both read and write is possible.
In VF7bit of VFR register, writing a 0 has no effect, whereas writing a 1 clears the written bit position. If a
hardware event triggers the setting of a bit VF7 and SW writes 1 to the same bit position, the bit VF7 is
cleared (software overrules hardware).
Application Note
7
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Storage of the conversion results
An example program ADC_Storage_result0 is given with the application note. On UART receive interrupt
the ADC conversion is requested and the result is read.
Figure 5
Result data valid flag checking
In the above example, channel 0 conversion is requested first. Then polling requested until the result valid
flag is set (bitfield VF) in the result register. Finally the result (8bit) is read from the result register and then
transmitted using U0C0_ASC_vSendData function.
Few things should be taken care with respect to the conversion start and result reading.
Check the data valid flag of the result register before reading the result. Also make sure whether correct
data has been read for the conversion requested through a particular channel (incase same result register
shared by two channels). The channel number corresponding to the latest result data update can be read
from the result register and is shown in Figure 6.
Result Register RESR7
Figure 6
Channel number bitfield of result register for the latest data
2.1
Representation of conversion data
The application requirements for results with enabled or disabled data reduction filter being different and
debugger accesses can occur, four different scenarios with different result register read views are supported.
The four read views refer to the same result register contents, but show a different behavior according to the
address that has been read.
2.1.1.1
Standard read view RESRx (x = 0-7)
The data reduction filter has to be disabled, the channel number is included to identify which channel has
been converted, and a read action clears the corresponding valid bit. This representation is compatible to the
ADC result register in XC16x devices.
Application Note
8
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Storage of the conversion results
2.1.1.2
Read view RESRAx (x = 0-7)
The data reduction filter can be enabled, the channel number is not included, and a read action clears the
corresponding valid bit.
2.1.1.3
Read view RESRVx (x = 0-7) for debugger
The data reduction filter has to be disabled, the channel number is included, but a read action does not clear
the corresponding valid bit.
2.1.1.4
Read view RESRAVx (x = 0-7) for debugger
The data reduction filter can be enabled, the channel number is not included, but a read action does not
clear the corresponding valid bit.
Due to different result handling mechanisms, the conversion data can be represented in different ways:
2.1.2
Data reduction filter disabled
The conversion result is maximum 10 bits wide with the MSB of the conversion result being always at bit
position 11 and the remaining LSBs filled with 0. For a 10bit conversion the valid data is available at bit field
11:2 and for an 8bit conversion the valid data is available at bitfield 11:4. This is shown in Figure 7. The
result data can be read from the RESR7 register or from the RESRA7 register.
2.1.3
Data reduction filter enabled
The conversion result is maximum 10 bits wide with the MSB of the conversion result being always at bit
position 11 and the remaining LSBs filled with 0. The additional bits [13:12] show the MSBs of the data
accumulation. If the data reduction filter is enabled then the result should be read from the RESRA7 register
and is shown in Figure 7.
Figure 7
Result bit field for 8 and 10 bit result data
Application Note
9
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Wait-for-read mode
3
Wait-for-read mode
The wait-for-read mode is a feature of a result register allowing the CPU (or PEC) to treat each conversion
result independently without the risk of data loss. Data loss could occur if the CPU does not read a
conversion result from a result register before a new result overwrites the previous one.
If wait-for-read mode is enabled for a result register by setting bit WFR in register RCRx (x = 0 - 7), a request
source does not generate a conversion request while the targeted result register contains valid data
(indicated by the valid flag VFx = 1) or if a currently running conversion targets the same result register.
Refer the example program ADC_result0_WFR given with this application note.
Figure 8
Conversion start and result read example
The conversion start and read operations can be performed by sending the commands ‘s’ and ‘a’ through
UART. When you send ‘s’ through Docklight, a conversion start of channel 0 will be initiated through request
source 0. When you send ‘a’ through Docklight the result data will be transmitted back to Docklight using
result0 variable.
Also see the result register 0 WFR (wait for read) bit enable option in the Figure 9.
Figure 9
Result register 0 wait-for-read mode enable setting
Application Note
10
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Wait-for-read mode
For this example, two send sequences are configured in Docklight. A start sequence which will send ‘s’ to
the target controller and a read sequence which will send ‘a’ to the target controller. Refer Figure 8 for start
conversion and read result mechanism in the UART interrupt service routine.
Refer Figure 10 for the detailed configuration in Docklight for communication.
Start command
Read command
Result
Figure 10
Docklight communication with start conversion and read result commands
3.1
WFR test scenario 1
Step 1: Keep the potentiometer in the maximum analog input voltage position.
Step 2: Start a conversion by sending the start sequence from Docklight.
Step 3: Read the result.
Step 4: Tune the potentiometer to change the analog input voltage.
Step 5: Start a conversion by sending the start sequence from Docklight.
Step 6: Read the result.
You will get the exact result for the analog input given at the channel 0. As the result of the conversion
requested in Step 1 is read in Step 3, the conversion request in Step 5 will be handled and the result will be
stored in the result register.
Application Note
11
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Wait-for-read mode
3.2
WFR test scenario 2
Step 1: Keep the potentiometer in the maximum analog input voltage position.
Step 2: Start a conversion by sending the start sequence from Docklight.
Step 3: Tune the potentiometer to change the analog input voltage.
Step 4: Start a conversion by sending the start sequence from Docklight.
Step 5: Read the result.
Step 6: Read the result.
Though the conversion is requested in Step 4, this conversion request will be pending as the result for the
Step 2 conversion request was not read. When you request the result in Step 5, you will get the result of the
Step 2 conversion request (which is the maximum 10bit value). And now the pending conversion request of
Step 4 will be handled and result will be stored in result register. In Step 6, the result for the Step 4
conversion request will be read from the result register.
The triggering mechanism and result reading should be handled carefully. Say if there is a Step 4a (between
Step 4 and 5), in which the potentiometer is kept at its minimum analog input position. For the conversion
requested in Step 4, we will be getting the result as 0x0000 (result of Step 6 and potentiometer position as in
Step4a instead of the desired data as in Step 3). This is because the conversion request was pending and
handled after the result was read. This is explained in Test scenario 3.
3.3
WFR test scenario 3
Step 1: Keep the potentiometer in the maximum analog input voltage position.
Step 2: Start a conversion by sending the start sequence from Docklight.
Step 3: Tune the potentiometer to the minimum analog input voltage position.
Step 4: Start a conversion by sending the start sequence from Docklight.
Step 5: Tune the potentiometer in between the min and max position.
Step 6: Read the result.
Step 7: Read the result.
In Step 1, the potentiometer is kept in its maximum analog input position and a conversion is requested in
Step2. Now this conversion request will be handled and the result of this conversion will be stored in result
register 0. In Step 3, the potentiometer is kept in its minimum analog input position and a conversion is
requested in Step 4. Now as the result of the previous conversion is not read from the result register, the
conversion will be pending until the result was read. Now remember, the conversion is requested in Step 4,
when the input analog voltage is in minimum (zero position). In Step 5, the analog input is changed to a
value in between the minimum and maximum position. In Step 6, the result was read from the result register.
The result for the Step 2 conversion and for the maximum analog input voltage will be displayed. At this time
the pending conversion request of Step 4 will be handled and now the analog input voltage is between the
minimum and maximum. The result of this conversion will be stored in the result register and this result was
read in Step 6. But the conversion is requested when the analog input voltage value is zero.
3.4
Important things to remember for wait-for-read mode
When writing complex algorithms the programmer should be careful when to start a conversion and read the
conversion result.
If two request sources target the same result register with wait-for-read selected, a lower priority request
started before the higher priority source has requested its conversion can not be interrupted by the higher
priority request. If a higher priority request targets a different result register, the lower priority conversion can
be cancelled and repeated afterwards.
Application Note
12
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Result FIFO buffer
4
Result FIFO buffer
The result FIFO buffer mechanism allows to store measurement results and to read them out later with a
“relaxed” CPU access timing. It is possible to set up more than one FIFO buffer structure with the available
result registers.
A FIFO structure can be built by at least two “neighbor” result registers with the indices x and z = x+1, where
result register z represents the input and result register x represents the output of the FIFO buffer. If more
than two result neighbor registers are concatenated to a FIFO buffer (from result register z to result register
x, with z > x), the one with the highest index (z) is always the input and the one with the lowest index (x) is
always the output. All intermediate result registers y (x < y < z) are used as intermediate FIFO stages without
data input or data output functionality.
Features of the FIFO buffer
1. Wait-for-read mode and Data reduction is allowed and can be enabled only for input stage.
2. Result event interrupt generation is allowed and can be enabled only for the output stage.
3. Both the input and intermediate buffer stage must not be read at a read view modifying the valid bit.
The FIFO buffer function is enabled by setting bit FEN in result control registers RCRx (x=0-7).
Point to remember:
The FEN bitfield of the input stage of the result register should be set with ‘0’. The functionality remains the
same for a single FIFO buffer configuration even if the FEN bitfield of the input stage of the result register is
set with ‘1’. But with multiple FIFO configurations this may cause problems. Hence it is always
recommended to set the FEN bitfield of the input stage with ‘0’. This is explained in section 4.2.
4.1
Single FIFO structure
In the example provided with this application note (ADC0_Result_FIFO), result registers 3…0 are
concatenated to form a FIFO buffer. Here the result register 3 is the input stage and the result register 0 is
the output stage of the FIFO buffer. Result registers 1 and 2 will be treated as the intermediate stages.
Figure 11
FIFO buffer formation with result registers
Application Note
13
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Result FIFO buffer
The FIFO buffer function is enabled by setting bit FEN in result control registers RCRx (x=0-2). The software
settings are shown in Figure 12. In the DAvE setting the FIFO functionality is not enabled whereas the
registers ADC0_RCRx (x=0, 2) is configured manually as shown in Figure 12.
ADC0_RCR0
ADC0_RCR1
ADC0_RCR2
ADC0_RCR3
Figure 12
=
=
=
=
0x0020;
0x0020;
0x0020;
0x0000;
// (FEN bitfield is set with ‘0’ for the input stage)
FIFO enable configuration in result control registers RCR3…RCR0
In this example, two send sequences (start conversion ‘s’ and read result ‘a’) are configured in Docklight.
Refer Figure 13 for start conversion and read result mechanism in the UART interrupt service routine.
Figure 13
FIFO buffer example (start conversion and read result functionality in ISR)
4.1.1
FIFO buffer test scenario 1
Step 1: Keep the potentiometer in the maximum analog input voltage position.
Step 2: Start a conversion by sending the start sequence from Docklight.
Step 3: Keep the potentiometer within min and max analog input voltage position (close to maximum).
Step 4: Start a conversion by sending the start sequence from Docklight.
Step 5: Keep the potentiometer within min and max analog input voltage position (close to minimum).
Step 6: Start a conversion by sending the start sequence from Docklight.
Step 7: Keep the potentiometer in the minimum analog input voltage position.
Step 8: Start a conversion by sending the start sequence from Docklight.
Step 9: Read the result.
Step 10: Read the result.
Step 11: Read the result.
Step 12: Read the result.
You will get the result in sequence for the conversions requested in Step2, Step 4, Step 6 and Step 8.
Application Note
14
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Result FIFO buffer
4.1.2
FIFO buffer test scenario 2
Execute the Steps upto 8 as in FIFO buffer Test Scenario 1.
Step 9: Keep the potentiometer in maximum analog input voltage position.
Step 10: Start a conversion by sending the start sequence from Docklight.
Step 11: Read the result.
Step 12: Read the result.
Step 13: Read the result.
Step 14: Read the result.
You will get the results for Step 11, 12 and 13 for the conversions requested in Step 2, 4 and 6. But for the
Step 14 the result of conversion requested in Step 10 will be shown. The result of the conversion requested
in Step 8 is overwritten by the conversion requested in Step 10. Hence if the FIFO buffer is full and the input
result register is not configured for wait-for-read mode then any further conversions will overwrite the input
register again and again. The contents of result register in intermediate and output stage will not be
affected.
4.1.3
FIFO buffer test scenario 3
In the above example, only the result register 3 (input register) configurations are changed for wait-for-read
result. Refer ADC0_Result_FIFO_WFR example. In the DAvE setting the FIFO functionality is not enabled
whereas the registers ADC0_RCRx (x=0, 2) is configured manually as shown in Figure 14.
ADC0_RCR0
ADC0_RCR1
ADC0_RCR2
ADC0_RCR3
Figure 14
=
=
=
=
0x0020;
0x0020;
0x0020;
0x0040;
// (FEN bitfield is set with ‘0’ for the input stage)
FIFO buffer input register configuration for wait-for-read mode
Execute the FIFO buffer test scenario 2.
You will get the results for Step 11, 12, 13 and 14 for the conversions requested in Step 2, 4, 6 and 8. But
the conversion requested in Step 10 will be pending as the FIFO is full and the result is not read. The
pending conversion will be started again after the result is read in Step 11.
As wait-for-read mode is selected, refer section 3.4 for the important points to be taken into account.
4.1.3.1
FIFO buffer test scenario 4
Now execute all the previous three test scenarios after setting the FEN bitfield of the input stage of the result
register (RCR3 register) with ‘1’. The results remain the same. But this will cause problem with multiple
FIFO structure and is explained in section 4.2.
Application Note
15
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Result FIFO buffer
4.2
Multiple FIFO structure
Here three FIFO structures, FIFO1 [Result registers 1 to 0], FIFO2 [Result registers 3 to 2] and FIFO3 [result
registers 7 to 4 are formed. The FIFO structure and the stages are shown in Figure 15.
ADC0_RCR0
ADC0_RCR1
ADC0_RCR2
ADC0_RCR3
ADC0_RCR4
ADC0_RCR5
ADC0_RCR6
ADC0_RCR7
Figure 15
=
=
=
=
=
=
=
=
0x0020;
0x0000;
0x0020;
0x0000;
0x0020;
0x0020;
0x0020;
0x0000;
// (FEN bitfield is set with ‘0’ for the input stage of FIFO1)
// (FEN bitfield is set with ‘0’ for the input stage of FIFO2)
// (FEN bitfield is set with ‘0’ for the input stage of FIFO3)
Multiple FIFO structure
The FEN bitfield of output and intermediate stages are set with ‘1’ whereas for the input stage FEN bitfield is
set with ‘0’. For example if the FEN bitfield of RCR3 and RCR1 is set with ‘1’ and the FIFO3 structure will be
formed with result registers 7 to 0 and the result data will be stored from result register 0. But the user will be
expecting data from the result register 4. Similarly for the FIFO2 the FIFO structure will be formed with result
registers 3 to 0. By setting the FEN bitfield with ‘0’ for the input stage, FIFO buffer becomes well defined in
case of multiple FIFO structure.
Application Note
16
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Result FIFO buffer
Refer the application example ADC0_Result_Multiple_FIFO.
Channel 0, Channel 8 and Channel 9 are configured with output register 7, 3 and 1 respectively.
In the DAvE setting the FIFO functionality is not enabled whereas the registers ADC0_RCRx (x=0, 7) is
configured manually as shown in Figure 15.
Refer Figure 16 for implementation of conversion start of channels 0, 8 and 9 and result reading mechanism
from output stages of FIFO structures in the UART interrupt service routine.
Figure 16
Multiple FIFO channel conversion and result reading
In this example, three conversion request sequences and three result reading sequences are configured in
Docklight.
Conversion requests:
‘s’ for channel 0, ‘t’ for channel 8 and ‘u’ for channel 9
Results reading:
‘a’ for FIFO3 (result register 4), ‘b’ for FIFO2 (result register 2) and ‘c’ for FIFO1 (result register 0).
Application Note
17
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Result FIFO buffer
Figure 17
Conversion start and result read with multiple FIFO mechanism in Docklight
The user can set the FEN bitfield of input stages of FIFO1, FIFO2 and FIFO3 with ‘1’ and test the same. The
user will see things happening as explained in this section earlier.
Application Note
18
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Data reduction filter
5
Data reduction filter
The data reduction filter can be used as digital filter for anti-aliasing or decimation purposes. It can
accumulate a maximum of 4 conversion results to generate a final result. Each result register can be
individually enabled for data reduction.
The feature is controlled by bit field DRCTR in registers RCRx (x = 0 - 7). The actual status is given by bit
field DRC (data reduction counter) in the same register.
Figure 18
Data reduction enable setting of a result register in DRCTR bifield of RCRx register
In the example provided with this application note (ADC0_Data_Reduction_Filter), data reduction filter is
enabled for result register 0. Also the reload value for DRC is selected as 3.
The result control register 0 is configured as
ADC0_RCR0
= 0x0003;
In this example, two send sequences (start conversion ‘s’ and read result ‘a’) are configured in Docklight.
Refer Figure 19 for start conversion and read result mechanism in the UART interrupt service routine. The
result is read from the data reduction read view register RESRA0.
Figure 19
Data reduction filter example (Conversion start and result read functionality in UART ISR)
Application Note
19
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Data reduction filter
5.1
Data reduction test scenario 1
Step 1: Keep the potentiometer in the maximum analog input voltage position.
Step 2: Start a conversion by sending the start sequence from Docklight.
Step 3: Start a conversion by sending the start sequence from Docklight.
Step 4: Start a conversion by sending the start sequence from Docklight.
Step 5: Start a conversion by sending the start sequence from Docklight.
Step 6: Read the result.
The accumulated result will be displayed in the Docklight. As the potentiometer is adjusted to give the
maximum input voltage, the 10 bit result will be maximum (1023). The conversion is requested four times
and the accumulated value should be 4092 (4*1023). The hexadecimal equivalent of this is 0x0FFC. This is
shown in Figure 20.
Actual result is 0x0FFC
Figure 20
0xFC (bits 8:0)
0x0F (bits 13:9)
Data reduction accumulated result in Docklight
Without reading the result if the conversion requested more than the reload value count (here accumulation
of 4), then the counter will reset and the data accumulation will start again overwriting the previous
accumulated result (data loss).
Application Note
20
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Data reduction filter
5.2
Data reduction test scenario 2
All the configurations remain same except the wait-for-read mode is enabled for the result register 0. Refer
ADC0_Data_Reduction_Filter_WFR example.
Step 1: Keep the potentiometer in the maximum analog input voltage position.
Step 2: Start a conversion by sending the start sequence from Docklight.
Step 3: Start a conversion by sending the start sequence from Docklight.
Step 4: Start a conversion by sending the start sequence from Docklight.
Step 5: Start a conversion by sending the start sequence from Docklight.
Step 6: Start a conversion by sending the start sequence from Docklight.
Step 7: Read the result.
Upto Step 5 the conversion will happen and the result will be accumulated in result register 0. The
conversion requested by Step 6 will be pending as the result is not read. In Step 7, the result will be read
from the result register and pending conversion requested by Step 5 will be handled. This is shown in
Figure 21.
Figure 21
Data reduction with wait-for-read mode enabled for result register 0
As wait-for-read mode is selected, refer section 3.4 for the important points to be taken into account.
Application Note
21
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Data reduction filter with result FIFO
6
Data reduction filter with result FIFO
The final result of the data reduction sequence has to be read out from result register x (where x is the
register configured for data reduction, x = 0-7) before the next data sequence starts. If the interval is too
short for result reading and the start of the next sequence, then the FIFO mechanism can be used.
In the example given with this application note (ADC0_DRF_FIFO), the FIFO buffer is formed using result
register RCR3…RCR0. Here result register 3 acts as the input register, result registers 2 to 1 acts as the
intermediate registers and result register 0 acts as the output register.
Also result register 3 (only input
register is allowed for data reduction mechanism) is enabled for data reduction filter.
In the DAvE, the FIFO functionality is not enabled whereas the registers ADC0_RCRx (x=0, 2) is configured
manually as shown in Figure 22.
ADC0_RCR0
ADC0_RCR1
ADC0_RCR2
ADC0_RCR3
Figure 22
=
=
=
=
0x0020;
0x0020;
0x0020;
0x0003;
// (FEN bitfield is set with ‘0’ for the input stage)
Result control register RCR3…RCR0 configuration for data reduction with result FIFO
In this example, two send sequences (start conversion ‘s’ and read result ‘a’) are configured in Docklight.
Refer Figure 23 for start conversion and read result mechanism in the UART interrupt service routine. The
result is read from the data reduction read view register RESRA0.
Figure 23
Data reduction filter with result FIFO conversion start and result read in UART ISR
6.1
Data reduction filter with result FIFO test scenario 1
Step 1: Keep the potentiometer in the maximum analog input voltage position.
Step 2: Start the conversion four times by sending the start sequence from Docklight.
Step 3: Keep the potentiometer in the maximum analog input voltage position.
Step 4: Start the conversion four times by sending the start sequence from Docklight.
Step 5: Keep the potentiometer in the minimum analog input voltage position.
Step 6: Start the conversion four times by sending the start sequence from Docklight.
Step 7: Keep the potentiometer in the maximum analog input voltage position.
Step 8: Start the conversion four times by sending the start sequence from Docklight.
Step 9: Read the result.
Step 10: Read the result.
Step 11: Read the result.
Step 12: Read the result.
Application Note
22
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Data reduction filter with result FIFO
During Step 2, after each conversion completion, the converted result will be accumulated in RESRA3
register and will be moved to RESRA0 at the end of last conversion (at the end of fourth conversion).
During Step 4, after each conversion completion, the converted result will be accumulated in RESRA3
register and will be moved to RESRA1 at the end of last conversion (at the end of fourth conversion).
During Step 6, after each conversion completion, the converted result will be accumulated in RESRA3
register and will be moved to RESRA2 at the end of last conversion (at the end of fourth conversion).
During Step 8, after each conversion completion, the converted result will be accumulated in RESRA3
register and will be moved to RESRA3 at the end of last conversion (at the end of fourth conversion).
Now the FIFO buffer is full.
When we read the results four times we will get the results as 0x0FFC, 0x0FFC, 0x0000 and 0x0FFC.
6.2
Data reduction filter with result FIFO test scenario 2
Execute the steps upto 8 as described in data reduction filter with result FIFO test scenario 1.
Then execute the following.
Step 9: Keep the potentiometer in the minimum analog input voltage position.
Step 10: Start the conversion four times by sending the start sequence from Docklight.
Step 11: Read the result.
Step 12: Read the result.
Step 13: Read the result.
Step 14: Read the result.
Upto step 8, the functionality remains the same as in the previous test scenario. Now the FIFO is full. But
because of the Step 9 and Step 10 actions, the contents of RESRA3 register will be modified (accumulated)
for each converted result (accumulation of four result data).
If the user read the result at any stage, the accumulated result data of that instant will be available.
As RESRA3 (input stage) is not configured for wait-for-read mode, the data will be overwritten if the FIFO
result data was not read.
When we read the results four times we will get the results as 0x0FFC, 0x0FFC, 0x0000 and 0x0000.
Points to remember:
1. Each converted result will be accumulated (upto four) in RESRA3 register and after accumulation the
final result will be moved to lowest empty register.
2. A result read operation will shift the contents of the FIFO in the order RESRA3…RESRA1 to
RESRA2…RESRA0.
3. When the FIFO buffer is full and wait-for-read mode is not selected then after each conversion the
new result data will be overwritten (accumulated) in the RESRA3 register.
4. When the FIFO buffer is full and wait-for-read mode is selected then the new conversion requests
will be pending and will be handled later after a read operation from the FIFO. This is explained in
the next section 6.3
Application Note
23
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Data reduction filter with result FIFO
6.3
Data reduction filter with result FIFO test scenario 3
Refer ADC0_DRF_FIFO_WFR example.
Now the result register 3 is enabled for wait-for-read mode option. Also in DAvE, the FIFO functionality is not
enabled whereas the registers ADC0_RCRx (x=0, 2) is configured manually as shown in Figure 24.
ADC0_RCR0
ADC0_RCR1
ADC0_RCR2
ADC0_RCR3
Figure 24
=
=
=
=
0x0020;
0x0020;
0x0020;
0x0043;
Data reduction filter with result FIFO wait-for-read mode
Now execute the same steps as described in data reduction filter with result FIFO test scenario 1.
Then execute the following.
Step 9: Keep the potentiometer in the minimum analog input voltage position.
Step 10: Start the conversion four times by sending the start sequence from Docklight.
Step 11: Read the result.
Step 12: Start the conversion three times by sending the start sequence from Docklight.
Step 13: Read the result.
Step 14: Read the result.
Step 15: Read the result.
Step 16: Read the result.
In Step 10 - as only one queue stage is available with request source 0, one conversion will be pending (as
the result is not read) and other conversion requests will be ignored.
In Step 11- the content of RESRA0 is read hence the contents from RESRA3…RESRA1 will be moved to
RESRA2…RESRA0. The user will get the result of 0x0FFC for this read operation.
Now the pending conversion request will be handled. For the completion of data accumulation three more
completed conversion result is required.
In Step 12 - three more conversions requested and this will be handled and the data will be accumulated in
RESRA3 register. Now the FIFO buffer is full.
In Step 13…16 - the user will be getting the following results in sequence 0x0FFC, 0x0000, 0x0FFC and
0x0000.
As wait-for-read mode is selected, refer section 3.4 for the important points to be taken into account.
Application Note
24
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
Result event interrupt
7
Result event interrupt
The bitfield IEN in RCRx enables the result event interrupt if a result event is detected for result register x
where x = 0-7. Any of the service request output line SRx (x=0 - 3) can be selected for the result register
event.
In the example ADC0_Result_Event, given with this application note, the channel 0 and channel 8 are
selected with the result registers 0 and 1 respectively. The result event of channel 0 and channel 8 use the
service request output lines SR0 and SR1 respectively.
In the result event interrupt service routines of result register 0 and result register 1 event the variable
result0count and result1count incremented by 1 respectively. This is shown in Figure 25.
Figure 25
Result event interrupt service routine
In UART interrupt service routine, the conversion start request of channel 0 and 8 will take place respectively
when the UART communication command of ‘s’ and ‘r’ is received. Also the result0count and result1count
value will be transmitted when the UART communication command of ‘a’ and ‘b’ is received. This is shown
in Figure 26.
Figure 26
UART interrupt service routing for result event interrupt example
Application Note
25
V1.0, 2008-11
AP16155
ADC Result Handling - XC2000/XE166
The docklight command sequences for conversion start and to read the result event count are shown in
Figure 27.
Figure 27
Docklight command for conversion start and read the result event count
Application Note
26
V1.0, 2008-11
http://www.infineon.com
Published by Infineon Technologies AG