有什么方法可以更改PIC16F886中的ADC转换时间?

问题描述

#include <xc.h>
#pragma config FOSC = HS
void main() 
{  
    OSCCONbits.IRCF = 0b111;
    OSCTUNE = 0b01111;
    OSCCONbits.SCS = 0;
    OSCCONbits.OSTS = 1;
    OSCCONbits.HTS = 1;
    OSCCONbits.LTS = 1;
    TRISBbits.TRISA2 = 0;
    ANSELbits.ANS2 = 1;
    ADCON0 = 0x89;
    ADCON1 = 0x00;
    while(1)
    {
        ADCON0bits.GO = 1;
        while(ADCON0bits.GO == 1)
        {
            PORTBbits.RB6 = ~(PORTBbits.RB6);
        }
    }
}

我正在努力更改ADC转换。 当我在检查示波器时。我将转换时间定为10微秒。但需要大约200纳秒的时间。

MPLAB 5.40版

Pickit 3程序员

XC8编译器

解决方法

完成一位转换的时间定义为Tad。完整的10位转换需要11个Tad周期。在20 Mhz时,最小Tad时间为1.6 us,请查看数据表TABLE 17-11。如果使用16 Mhz振荡器,则最小Tad时间为2 us。因此,要进行完整的10位转换,您的ADC需要22 us。但是ADC还需要一些时间来对保持电容充电,请参见数据表9.2节,大约2 us或更多。正如您可以计算出的,在16 Mhz微控制器振荡器下,PIC16F88x的最小ADC转换时间约为25us。

enter image description here