This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Code stops at ADC_convert () after converting from RGZ package (LAUNCHXLXL-CC1310) to RHB package.

Other Parts Discussed in Thread: LAUNCHXL-CC1310, CC1310, CC2650

After converting working code developed on LAUNCHXL-CC1310 form RGZ package to RHB codes freezes at ADC_convert() function  under debug and normal run.

I am using CCS with RTOS 2_20_00_06.

I renamed ADC definitions since IO pins are mapped to different ADC channels.

Analog channels are DIO_7 to DIO_14 on RHB when it is DIO_20 to DIO_30 on RGZ.

 What else should I adjust for code to be able to read ADC ?

Andrew

const ADCBufCC26XX_AdcChannelLutEntry ADCBufCC26XX_adcChannelLut[] = {

{PIN_UNASSIGNED, ADC_COMPB_IN_VDDS},

{PIN_UNASSIGNED, ADC_COMPB_IN_DCOUPL},

{PIN_UNASSIGNED, ADC_COMPB_IN_VSS},

{Board_DIO7_ANALOG, ADC_COMPB_IN_AUXIO7},

{Board_DIO8_ANALOG, ADC_COMPB_IN_AUXIO6},

{Board_DIO9_ANALOG, ADC_COMPB_IN_AUXIO5},

{Board_DIO10_ANALOG, ADC_COMPB_IN_AUXIO4},

{Board_DIO11_ANALOG, ADC_COMPB_IN_AUXIO3},

{Board_DIO12_ANALOG, ADC_COMPB_IN_AUXIO2},

{Board_DIO13_ANALOG, ADC_COMPB_IN_AUXIO1},

{Board_DIO14_ANALOG, ADC_COMPB_IN_AUXIO0},

};

const ADCCC26XX_HWAttrs adcCC26xxHWAttrs[CC1310_LAUNCHXL_ADCCOUNT] = {

{

.adcDIO = Board_DIO7_ANALOG,

.adcCompBInput = ADC_COMPB_IN_AUXIO7,

.refSource = ADCCC26XX_FIXED_REFERENCE,

.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,

.inputScalingEnabled = true,

.triggerSource = ADCCC26XX_TRIGGER_MANUAL

},

{

.adcDIO = Board_DIO8_ANALOG,

.adcCompBInput = ADC_COMPB_IN_AUXIO6,

.refSource = ADCCC26XX_FIXED_REFERENCE,

.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,

.inputScalingEnabled = true,

.triggerSource = ADCCC26XX_TRIGGER_MANUAL

},...............................

  • I managed to get it to run.

    I used a CC2650 5x5 since I don't have a EM with that packet size for CC1310. The ADC is the same on both.

    I started from the adcsinglechannel example and did the following:

    - Deleted the board files and copied the CC2650 5XD files from an example using these.

    - Then copy the ADCBuf and ADC parts of a CC1310_7XD into your new board file.

    The following have to be changed:

    /* ADC objects */
    ADCBufCC26XX_Object adcBufCC26xxObjects[CC2640DK_5XD_ADCBufCOUNT];

    I used a pot meter from Grove as input on IOID7 (pin 1.11 on SmartRF06)

    const ADCBufCC26XX_AdcChannelLutEntry ADCBufCC26XX_adcChannelLut[] = {
    {IOID_7, ADC_COMPB_IN_AUXIO7},
    {PIN_UNASSIGNED, ADC_COMPB_IN_DCOUPL},
    {PIN_UNASSIGNED, ADC_COMPB_IN_VSS},
    {PIN_UNASSIGNED, ADC_COMPB_IN_VDDS}
    };

    const ADCBufCC26XX_HWAttrs adcBufCC26xxHWAttrs[CC2640DK_5XD_ADCBufCOUNT] = {

    ADCCC26XX_Object adcCC26xxObjects[CC2640DK_5XD_ADCCOUNT];

    const ADCCC26XX_HWAttrs adcCC26xxHWAttrs[CC2640DK_5XD_ADCCOUNT] = {
    {
    .adcDIO = IOID_7,
    .adcCompBInput = ADC_COMPB_IN_AUXIO7,
    .refSource = ADCCC26XX_FIXED_REFERENCE,
    .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
    .inputScalingEnabled = true,
    .triggerSource = ADCCC26XX_TRIGGER_MANUAL
    },

    In the corresponding header file:

    /*!
    * @def CC2640DK_5XD__ADCBufName
    * @brief Enum of ADC's
    */
    typedef enum CC2640DK_5XD_ADCBufName {
    CC2640DK_5XD_ADCBuf0 = 0,
    CC2640DK_5XD_ADCBufCOUNT
    } CC2640DK_5XD_ADCBufName;

    /*!
    * @def CC2640DK_5XD_ADCName
    * @brief Enum of ADCs
    */
    typedef enum CC2640DK_5XD_ADCName {
    CC2640DK_5XD_ADCALS = 0,
    CC2640DK_5XD_ADCDCOUPL,
    CC2640DK_5XD_ADCVSS,
    CC2640DK_5XD_ADCVDDS,
    CC2640DK_5XD_ADCCOUNT
    } CC2640DK_5XD_ADCName;

    Hope this helps.