找回密码
 立即注册
查看: 87|回复: 7

求助,8h比较器无法获取结果

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 00:56:39

3

主题

25

回帖

1329

积分

金牌会员

积分
1329
发表于 2025-3-16 12:07:50 | 显示全部楼层 |阅读模式
想使用比较器做一个低压保护,先测试功能,结果出现了问题。
测试方法,使用的是`8h8k64u`芯片编号末尾是`HD`应该是使用新版的比较器。
接线方法`vcc--vref--P37`,预想中比较器+为`P37`,-为`内部1.19V`,结果应为恒等于1。然而实测结果是恒等0,调了好长时间代码,无果,特来求助各位大佬。


  1. #include        "config.h"
  2. #include        "STC8G_H_Delay.h"
  3. int *BGV;
  4. //关闭所有io
  5. void        GPIO_config(void)
  6. {
  7.         P0M0 = 0x00; P0M1 = 0xff; P0IE = 0x00;
  8.         P1M0 = 0x00; P1M1 = 0xff; P1IE = 0x00;
  9.         P2M0 = 0x00; P2M1 = 0xff; P2IE = 0x00;
  10.         P3M0 = 0x00; P3M1 = 0xff; P3IE = 0x00;
  11.         P4M0 = 0x00; P4M1 = 0xff; P4IE = 0x00;
  12.         P5M0 = 0x00; P5M1 = 0xff; P5IE = 0x00;
  13.         P6M0 = 0x00; P6M1 = 0xff; P6IE = 0x00;
  14.         P7M0 = 0x00; P7M1 = 0xff; P7IE = 0x00;
  15.         //10开漏
  16.     P1M0 = 0x01; P1M1 = 0xfc;
  17. }
  18. void sleep()
  19. {
  20.         _nop_();
  21.         _nop_();
  22.         PCON=0x02;
  23.         _nop_();
  24.         _nop_();
  25.         _nop_();
  26.         _nop_();
  27.         _nop_();
  28.         _nop_();
  29.         _nop_();
  30.         _nop_();
  31. }
  32. //暂时不用ADC
  33. int ADCfun()
  34. {
  35.         int i,res,vcc;
  36.         //初始化ADC
  37.         ADCTIM =0x3f;
  38.         ADCCFG=0x2f;
  39.         ADC_CONTR=0x8f;                //打开adc电源 15通道
  40.         delay_ms(1);
  41.         res=0;
  42.         for(i=0;i<8;i++)
  43.         {
  44.                 ADC_CONTR |=0x40;                //启动转换
  45.                 _nop_();
  46.                 _nop_();
  47.                 while(!(ADC_CONTR & 0x20));
  48.                 ADC_CONTR &=~0x20;
  49.                 res+=((ADC_RES<<8) | ADC_RESL);
  50.         }
  51.         res>>=3;
  52.         vcc=(int)(4096L * *BGV/res);
  53.         ADC_CONTR=0x0f;                //关闭adc电源
  54.         return vcc;
  55. }
  56. void ADCtest()
  57. {
  58.         while(1)
  59.         {
  60.                 ADCfun();
  61.                 sleep();
  62.         }
  63. }
  64. void CMPinit()
  65. {
  66.         CMPEXCFG=0x04;
  67.         //CMPEXCFG &= ~0x03;                //P37 +输入
  68.         //CMPEXCFG |=0x04;                //1.19V为-输入
  69.         CMPCR2=0x00;                        //
  70.         CMPCR2&=~0x80;                        //正向输出
  71.         CMPCR2&=~0x40;                        //0.1us滤波
  72.         CMPCR2|=0x10;                        //比较器结果滤波输出
  73.         CMPCR1=0;
  74.         //CMPCR1|=0x30;                        //边沿中断
  75. }
  76. u8 CMPfun()
  77. {
  78.         u8 a=0;
  79.         CMPCR1|=0x02;                        //启动比较器输出
  80.         CMPCR1|=0x80;                        //启动比较器
  81.         P11=CMPCR1 &0x01;
  82.         a=CMPCR1 &0x01;
  83.         CMPCR1&=~0x02;                        //关闭比较器输出
  84.         CMPCR1&=~0x80;                        //关闭比较器
  85.         return a;
  86. }
  87. void CMPtest()
  88. {
  89.         CMPinit();
  90.         while(1)
  91.         {
  92.                 P10=0;
  93.                 if(CMPfun()==0)
  94.                 {
  95.                         P10=1;
  96.                         sleep();
  97.                 }
  98.         }
  99. }
  100. /**********************************************/
  101. void main(void)
  102. {
  103.     EAXSFR();                /* 扩展寄存器访问使能 */
  104.     GPIO_config();
  105.     EA = 1;
  106.         BGV=(int idata *)0xef;
  107.         WKTCL=0xff;
  108.         WKTCH=0x87;//1s
  109.         CMPtest();
  110.     while (1)
  111.     {
  112.     }
  113. }
复制代码



回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-16 12:08:00 | 显示全部楼层
针对您提到的8H比较器无法获取预期结果的问题,建议从以下几个方面进行排查和调试:<br><br>1. 硬件连接检查:<br>   - 确保VCC、VREF和P37引脚连接正确,且电压稳定。P37作为比较器的正输入端,其电压应与VREF(内部参考电压1.19V)进行比较。<br>   - 检查电源电压是否在芯片工作范围内,确保VCC电压足够高,以避免因电源不足导致比较器无法正常工作。<br><br>2. 比较器配置:<br>   - 确认比较器的配置是否正确。请检查相关寄存器(如CMPCR1、CMPCR2)的设置,确保比较器已启用,且正负输入端配置无误。<br>   - 如果使用内部参考电压作为负输入端,确保内部参考电压已正确启用并稳定。<br><br>3. 代码调试:<br>   - 在代码中增加调试信息,输出比较器状态寄存器的值,确认比较器是否正常工作。<br>   - 检查BGV指针的初始化是否正确,确保其指向的地址有效。<br><br>4. 芯片版本兼容性:<br>   - 确认使用的STC8H8K64U芯片是否为最新版本,不同版本的芯片可能在寄存器配置或功能上存在差异。<br><br>5. 示例代码参考:<br>   - 参考官方提供的比较器示例代码,确保配置和初始化流程正确。<br><br>通过以上步骤,应能有效定位并解决比较器无法获取预期结果的问题。如果问题仍未解决,建议进一步查阅芯片手册或联系技术支持。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2025-3-16 13:16:30 | 显示全部楼层
请直接下载HEX文件测试。

截图202503161316068841.jpg

STC8H-比较器相关程序.rar (30.09 KB, 下载次数: 11)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:163
  • 最近打卡:2025-05-02 13:26:59
已绑定手机

56

主题

1319

回帖

2942

积分

荣誉版主

无情的代码机器

积分
2942
发表于 2025-3-16 13:40:29 | 显示全部楼层
1、获取CMPCR1前加延时
2、注意sleep里有个PCON=0x02;进入主时钟停振/省电模式
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 00:56:39

3

主题

25

回帖

1329

积分

金牌会员

积分
1329
发表于 2025-3-16 13:46:17 | 显示全部楼层
梁*** 发表于 2025-3-16 13:16
请直接下载HEX文件测试。

直接下载hex文件,比较器可以正常工作
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 00:56:39

3

主题

25

回帖

1329

积分

金牌会员

积分
1329
发表于 2025-3-16 13:50:49 | 显示全部楼层
erci*** 发表于 2025-3-16 13:40
1、获取CMPCR1前加延时
2、注意sleep里有个PCON=0x02;进入主时钟停振/省电模式

我加个延时试试,停振模式是故意加的。目标是检测电压过低进入停振模式,1秒检测一次

点评

嗯我在擎天柱上测试你贴的代码,加你那个sleep nop可能不太够,加个delay_ms(1)才有反应。  详情 回复 发表于 2025-3-16 13:55
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:163
  • 最近打卡:2025-05-02 13:26:59
已绑定手机

56

主题

1319

回帖

2942

积分

荣誉版主

无情的代码机器

积分
2942
发表于 2025-3-16 13:55:17 | 显示全部楼层
苏紫*** 发表于 2025-3-16 13:50
我加个延时试试,停振模式是故意加的。目标是检测电压过低进入停振模式,1秒检测一次 ...

嗯我在擎天柱上测试你贴的代码,加你那个sleep nop可能不太够,加个delay_ms(1)才有反应。
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 00:56:39

3

主题

25

回帖

1329

积分

金牌会员

积分
1329
发表于 2025-3-16 14:03:44 | 显示全部楼层
erci*** 发表于 2025-3-16 13:55
嗯我在擎天柱上测试你贴的代码,加你那个sleep nop可能不太够,加个delay_ms(1)才有反应。 ...

感谢,获取CMPCR1前加延时可以了
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 20:34 , Processed in 0.141765 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表