I had a similiar problem - I tried to convert the AppNote about using the Mux Sequencer with the SAR ADC into using the Delta-Sigma-ADC. The result was that thet mux didn't seem to switch between the channels - I always got the same data for all of them. The reason semed to be that the EOC signal from the ADC didn't got routed to the Mux input (but I know it worked because I used EOC to trigger the DMA requests).
I solved it by doing everything in software (reading the result and switching the channel).
Hi Tom/ hli,
The EOC signal of ADC in PSoC5 cannot be connected to interrupt component. This errata has been documented for PSoC5 ES1.
It states as follows:
Delta Sigma ADC End-of-Conversion
■ PROBLEM DEFINITION
End-of-conversion (EOC) is signaled by a status register bit, decimator interrupt, decimator DMA, and DSI
routable signal. The DSI routable signal does not work. The CPU can poll the status register bit or use the
decimator interrupt or decimator DMA.
■ PARAMETERS AFFECTED
■ TRIGGER CONDITION(S)
■ SCOPE OF IMPACT
The ADC end-of-conversion (EOC) output of the PSoC Creator component can only be used to route to one
DMA channel. The EOC output cannot be used to route through the DSI routing to any other digital resources.
The decimator DMA route bypasses the DSI routing avoiding this issue. The decimator interrupt integrated
into the PSoC Creator component also bypasses the DSI routing. All other possible EOC connections require
The CPU can poll the EOC bit in the status register or use the decimator interrupt to signal the digital system
using firmware and a control register.
■ FIX STATUS
Silicon revision fix available in ES2.
It can be found here: http://www.cypress.com/?docID=27094
When 2 or more channels are used for ADC, then the ADC should be configured for multichannel mode. The StartConvert() and StopConvert() APIs can be used to start and stop the conversion, respectively, after every channel change.
Hli, dasg - thank you for your answers.
In my design I'm not using the EOC signal. AMux switching and sample restart code resides in the ADC Interrupt file. I have discovered that the AMux starts to behave oddly when I connect it with two pins sharing the same Analog Global bus (P6 and P6 in my case). When I am using other pins, the AMux seems to work correctly.
I looked at the PSoC errata, but I couldn't find any item related to this issue.
I have attached a simple project showing my problem. Channels 0, 2 and 3 of the AMux should all ouptut the same value. Channel 1 inputs are reversed so it should output similiar value, but with changed sign. But, output values look like this (channel 0 to 3; input voltages are about 1.2V with a few mV difference):
20795 -260 6190 12573
So only channel 1 shows correct value. When I use pins P6 and P6 I get the correct results:
208 -224 207 220
Do I have an error in my design? Or maybe there is some bug in the PSoC Creator AMux routing?
In your last sentence you wrote about "multichannel mode". Did you mean "Multi Sample" conversion mode in ADC configuration screen, or some other setting?
AMuxTest.zip 1.1 MB