首页 > 解决方案 > PIC16 不更新 ADC 值

问题描述

有人可以帮助解释为什么我的代码或设置没有更新 10K 电位器的 ADC 值吗?

我使用 MPLAB XPRESS PIC16F18877 板和 MPLAB MCC 来生成代码。复位电路板后,电压结果只会更新一次。

主程序

#include "mcc_generated_files/mcc.h"

void display_result(float v);

void main(void) {
    adc_result_t convResult = 0;
    float v = 0;

    // initialize the device
    SYSTEM_Initialize();

    ADCC_StartConversion(POT);


    while (1) {
        // Convert ADC values
        while (!ADCC_IsConversionDone());
        convResult = ADCC_GetConversionResult();
        v = convResult * 3.3 / 1023;

        // send the value to display
        display_result(v);
    }
}

void display_result(float v) {
    if (v > 1.65) {
        LED_SetHigh();
    } else {
        LED_SetLow();
    }
}

标签: picadc

解决方案


这个问题通过调用来解决

ADCC_StartConversion(POT);

在 while(1) 循环中。


推荐阅读