tailimo 发表于 2024-10-3 20:54:35

8H1K比较器用不了 | 可以了,用ADCx 作比较器正极输入,ADC的电源要开,通道要设对

8h1k08
程序:

void main(void)
{
      P_SW2 = 0x80;      
      
      P1=0x00;
      P1M0 = 0xff; P1M1 = 0x00;         //推挽

      P3=0x00;
    P3M0 = 0x00; P3M1 = 0xff; //高阻
    P3IE = 0xff;
      
    P5M0 = 0xff; P5M1 = 0x00;

      ADC_CONTR = 0x80;      //开启ADC
      ADC_CONTR |= 0x0a;      //选择adc10 p32
      
      CMPCR2 = 0x08;                        //关闭 0.1us 模拟滤波功能,数字滤波8+2周期
      CMPEXCFG = 0x03;                //选择比较器正端ADC,负端P36
      
      CMPCR1 = 0x80;                        //使能比较功能
      CMPCR1 |= 0x10;                        //使能比较功能      
      CMPCR1 |= 0x20;                        //使能比较功能      
      EA = 1;
      
      while(1)
      {
      P54 = 0;
      Delay100ms();
      P54 = 1;
      Delay100ms();               
      }      
}
void CMP_Routine(void) interrupt 21
{
      P17 = 1;
      Delay100us();
      P17 = 0;
      Delay100us();
      P17 = 1;
      Delay100us();
      P17 = 0;
      Delay100us();      
      
      if(CMPCR1 & 0x01)
      {
                P16 = 1;      
      }
      else
      {
                P16 = 0;      
      }
      
      CMPCR1 &= ~0x40;      //清除标志
}
刚上电会中断,主循环正常运行,中断里延时去掉也无法进入,

然后我给P36与p32加正反电压,都无法进入中断

后来我把中断去了直接在主循环判断 if(CMPCR1 & 0x01) 也不行

搞了一天了,问问各位大佬这是什么问题

tailimo 发表于 2024-10-3 21:14:56

woc,老哥们不用了
      我配置了CMPEXCFG = 0x03;                //选择比较器正端ADC,负端P36
      又加了配置      CMPCR1 |= 0x0c;   //选择比较器正端ADC,负端P36
      就可以了,但是这个 CMPCR1 (适用于旧版比较器,新版比较器使用 CMPEXCFG 中的 CMPPS 进行选择)
      这个不是旧版比较器吗?
      这个新版本与旧版是在那个地方看的?

soma 发表于 2024-10-3 21:18:28

具体还是看数据手册吧

王昱顺 发表于 2024-10-3 21:18:45

tailimo 发表于 2024-10-3 21:14
woc,老哥们不用了
      我配置了CMPEXCFG = 0x03;                //选择比较器正端ADC,负端P36
      ...

这个可以看技术手册,芯片型号部分介绍,里面有写使用的是新版比较器还是旧版比较器

邮箱 发表于 2024-10-3 22:22:42

tailimo 发表于 2024-10-3 21:14
woc,老哥们不用了
      我配置了CMPEXCFG = 0x03;                //选择比较器正端ADC,负端P36
      ...

神农鼎 发表于 2024-10-4 11:21:08















页: [1]
查看完整版本: 8H1K比较器用不了 | 可以了,用ADCx 作比较器正极输入,ADC的电源要开,通道要设对