darryman 发表于 2024-10-15 23:51:22

32G8K64-42I-LQFP48比较器输出结果的电瓶转换和中断波形对不上。



1.我使用比较器做的BLDCM电机的过零检测,手动旋转转子测试中发现比较器结果输出P3.4口的波形是对的,但在比较器中断中做电瓶反转,测试出来的波形理应和P3.4能对的上,但是结果却是差别很大,麻烦看下是什么原因。
其中CH1(黄色)是P2.3中断电平反转测试,       CH2(蓝色)是比较器结果输出口P3.4


templeton 发表于 2024-10-16 09:25:19

1、CMP_config()这个函数没有看到在哪里调用;
2、V_COM_NIE,应该只需要调用一次就可以了吧,不用放在while里面吧;
3、芯片上电后除了P3.0,P3.1外都是高阻输入状态,直接使用IO取反是否合适。

设置一下P23的属性,再试下,如果还有问题中间可以使用一个标志位试下;
bit flag;
flag = !flag;
P23 = flag;
类似这种

darryman 发表于 2024-10-16 10:03:09

templeton 发表于 2024-10-16 09:25
1、CMP_config()这个函数没有看到在哪里调用;
2、V_COM_NIE,应该只需要调用一次就可以了吧,不用放在wh ...

1.这个是用的官网参考例程,调用是再mian函数中的SYS_Init()函数中,在系统初始化函数中,
2.IO口的初始化P5.0 P5.1 P3.7 P3.6和比较器相关的使用的是高阻输入, P3.4和P2.3使用的是标准的输入输出设置,
3.P2.3电平反转我在mian函数中的while(1)中测试过是没问题的
4.P2.3电平反转放在中断中和P3.4口比较输出波形对不上,应该是进入中断有问题,但是我已经将中断优先级由0改到3还是没有改变,所以很奇怪。

网老四 发表于 2024-10-16 11:35:07

估计是示波器测量问题,带宽不够或者开了滤波,很窄的干扰尖脉冲没有显示出来.

DebugLab 发表于 2024-10-16 12:53:34

检查边沿是否有抖动导致多次进入中断

darryman 发表于 2024-10-16 15:42:50

网老四 发表于 2024-10-16 11:35
估计是示波器测量问题,带宽不够或者开了滤波,很窄的干扰尖脉冲没有显示出来. ...

示波器带宽应该是够得,因为测试比较结果输出P3.4的波形是没有问题的。

darryman 发表于 2024-10-16 15:46:14

DebugLab 发表于 2024-10-16 12:53
检查边沿是否有抖动导致多次进入中断

现在问题应该不是多次进入中断,而是进入中断的次数不足,CH2(蓝色)通道是比较器结果输出P3.4的波形, 黄色是进入中断IO口反转的波形,比较器设置下降沿触发进入中断,理应在蓝色波形每次由高电平转到低电平的时候要进去一次中断(中断中的IO口电平反转),但是实际看起来好像是没有规律的。

梁工 发表于 2024-10-16 21:26:42

P3.4输出是硬件输出的,不会受到软件运行的影响。
比较器中断取反输出则受到软件运行的影响(比如别的同级或更高优先级中断程序执行时间比较长),
对毛刺的响应也很快(上升沿、下降沿时的毛刺、抖动),
所以才出现你这种情况。
你可以允许比较器内部的回差电压,外部电路增加适当的RC滤波。
页: [1]
查看完整版本: 32G8K64-42I-LQFP48比较器输出结果的电瓶转换和中断波形对不上。