* The DMA based ADC demands channels being sequential in a group i.e. 1,2,3 or 5,6,7 and NOT 1,3,7.\r
* This also forbids the use of streamed buffers at the moment. Work is ongoing to correct DMA behaviour.\r
*/\r
-#define DONT_USE_DMA_IN_ADC_MPC5606S\r
+//#define DONT_USE_DMA_IN_ADC_MPC5606S\r
\r
/* Are we gonna use Dma? */\r
#if ( !defined(CFG_MPC5606S) || \\r
\r
#if defined(CFG_MPC5606S)\r
ADC_0.IMR.B.MSKECH = 1;\r
+ ADC_0.MCR.B.NSTART=1;\r
#else\r
/* Set single scan enable bit */\r
EQADC.CFCR[group].B.SSE = 1;\r
\r
#if defined(CFG_MPC5606S)\r
ADC_0.IMR.B.MSKECH = 1;\r
+ ADC_0.MCR.B.NSTART=1;\r
#else\r
/* Set single scan enable bit */\r
EQADC.CFCR[group].B.SSE = 1;\r
// Check which group is busy, only one is allowed to be busy at a time in a hw unit\r
for (int group = 0; group < ADC_NBR_OF_GROUPS; group++)\r
{\r
- if(AdcConfigPtr->groupConfigPtr[group].status->groupStatus == ADC_BUSY)\r
+ if((AdcConfigPtr->groupConfigPtr[group].status->groupStatus == ADC_BUSY) ||\r
+ (AdcConfigPtr->groupConfigPtr[group].status->groupStatus == ADC_COMPLETED))\r
{\r
#if !defined (ADC_USES_DMA)\r
/* Copy to result buffer */\r
for(uint8 index=0; index < AdcConfigPtr->groupConfigPtr[group].numberOfChannels; index++)\r
{\r
- currResultBufPtr[index] = ADC_0.CDR[32+AdcConfigPtr->groupConfigPtr[group].channelList[index]].B.CDATA;\r
+ AdcConfigPtr->groupConfigPtr[group].status->currResultBufPtr[index] = ADC_0.CDR[32+AdcConfigPtr->groupConfigPtr[group].channelList[index]].B.CDATA;\r
}\r
#endif\r
\r
- Adc_GroupConversionComplete(group);\r
+ Adc_GroupConversionComplete((Adc_GroupType)group);\r
break;\r
}\r
}\r
groupPtr->status->currResultBufPtr = groupPtr->status->resultBufferPtr; /* Set current result buffer */\r
\r
#if defined(ADC_USES_DMA)\r
- Dma_ConfigureChannel ((Dma_TcdType *)groupPtr->groupDMAResults), groupPtr->dmaResultChannel);\r
- Dma_ConfigureDestinationAddress ((uint32_t)currResultBufPtr, groupPtr->dmaResultChannel);\r
+ Dma_ConfigureChannel ((Dma_TcdType *)groupPtr->groupDMAResults, groupPtr->dmaResultChannel);\r
+ Dma_ConfigureDestinationAddress ((uint32_t)groupPtr->status->currResultBufPtr, groupPtr->dmaResultChannel);\r
#endif\r
- /* Set conversion mode. */\r
- ADC_0.MCR.B.MODE = groupPtr->conversionMode;\r
+ /* Always use single shot in streaming mode */\r
+ if( groupPtr->accessMode == ADC_ACCESS_MODE_STREAMING)\r
+ {\r
+ /* Set conversion mode. */\r
+ ADC_0.MCR.B.MODE = ADC_CONV_MODE_ONESHOT;\r
+ }\r
+ else\r
+ {\r
+ /* Set conversion mode. */\r
+ ADC_0.MCR.B.MODE = groupPtr->conversionMode;\r
+ }\r
\r
/* Enable Overwrite*/\r
ADC_0.MCR.B.OWREN = 1;\r