本帖最后由 Ryanhsiung 于 2012-2-11 13:06 编辑
PIC18F66K80 使用内部比较器! 输入为-0.7V与5.0V,比较器输出状态一直为低。
后改成2.7V-4.0V输入,比较器输出还是一直为低?
为什么呢?莫非先前-0.7V搞坏了内部比较器!
以下为初始化代码
- // 使能该外设, 开机后我将所有全部关闭了
- PFTCM_PMDbits.PFTCM_EN = 0; // 使能这个模块
-
- // PORT init
- F_TRIS_INPFT(IN);
- F_ANCON_PFT(ANA);
-
- //比较器的设置
- //PFTCM = 0X00; // 先全部清0
- // 注意:IF开机后被置为1,注意清0
- PFTCMbits.CON = 1; // 使能比较器
- PFTCMbits.COE = 0; // 比较器不输出到C2OUT引脚上
- PFTCMbits.CPOL = 0; // 输出不反相
- PFTCMbits.EVPOL = 0X00; // 禁止中断
- PFTCMbits.CREF = 1; // 连接到内部CVREF电压
- PFTCMbits.CCH = 0X00; // 连接到C1INB引脚
-
- // 读状态
- //CMSTATbits.CMP1OUT //1:+>- 0:+<- 若反相则相反 定义成了RD_PFT
-
- // CVREF 电压设置模块
- CVRCONbits.CVREN = 1; // 比较器参考电压使能位 上电
- // cvref电夺从CVREF引脚输出输出 断开CVREF引脚电位输出输出
- CVRCONbits.CVROE = 0; // 可做DA输出
- CVRCONbits.CVRSS = 1; // 比较器VREF源选择位 =VREF+-VREF- 现在只有高低
- //CVRCONbits.CVRSS = 0; // =0 AVDD-AVSS 这个很准
- CVRCONbits.CVR = 16; // VREF*(CVR/32) 0.625V 在于这个电压设置
- // 中断
- PFT_IPRbits.PFT_IP =0; // 使用低优先级
- D_INL_PFT_CloseIE(); // 注意 开机默认IF为开状态
那位兄弟有例程,给个例程!
|