AnsweredAssumed Answered

ADuC706x using both primary and auxiliary ADC in continuous mode problem

Question asked by py12345 on Sep 4, 2014
Latest reply on Sep 8, 2014 by Alexsandr

My R&D group is working on a new thermocouple/RTD measurement device and we've chosen the ADuC7060 to experiment with. We encounter an issue when trying to use both the primary ADC and auxiliary ADC at the same time in continuous mode using interrupt. Here's what we do to initialize it step by step:


1) Configure primary ADC by writing to register ADC0CON.

2) Configure auxiliary ADC by writing to register ADC1CON.

3) Enable ADC interrupt in register IRQEN by setting bit 0x400.

4) Enable the following ADC interrupt sources by setting bit 0 and 1 in register ADCMSKI: ADC0RDY_INTEN, ADC1RDY_INTEN



After initializing both ADC, we are able to get data inside of the ADC interrupt. What confuses us is that the primary ADC and auxiliary ADC each has its own interrupt source: ADC0RDY_INTEN and ADC1RDY_INTEN. So for example, when the auxiliary ADC completes a conversion and stores the converted value in the ADC1DAT register, BIT1 in the ADCSTA register will be set as well as the ADC1RDY_INTEN interrupt source will be triggered. In the datasheet, it says that "ADC does not update this [ADC1DAT] MMR if the ADC0 conversion result ready bit (ADCSTA[1]) is set. A read of this [ADC0DAT] MMR by the MCU clears all asserted ready flags (ADCSTA[1:0])." This can be found in the datasheet on page 50.


With that said, our issue is the following. Let's say as we handle the ADC1RDY_INTEN interrupt source, we have to read ADC0DAT after reading ADC1DAT to clear BIT0 and BIT1 of the ADCSTA register so we can continue to receive new sample in register ADC1DAT (converted by the auxiliary ADC). But what if the primary ADC completes a conversion right before we read ADC0DAT? Does that mean that sample of data the the primary ADC just store in ADC0DAT will just go un-noticed (since we just cleared the status bits by readying ADC0DAT)? Please help!!