wulin 发表于 2026-5-28 20:21
测试不熟悉的MCU最好不要用不易观察的方法,你测试定时不准有可能代码问题,也有可能是方法问题,还可能 ...
已经试过了,用软件定时读键盘输入,时间长到飞起。
cqjames 发表于 2026-5-28 18:54
P11有其他作用,和定时无关,所以没调整。
关键是需要把P10配置成推挽,不然怎么观测波形
wulin 发表于 2026-5-28 20:21
测试不熟悉的MCU最好不要用不易观察的方法,你测试定时不准有可能代码问题,也有可能是方法问题,还可能 ...
用示波器测波形,脉冲宽度,不更准确?
晓飛飛 发表于 2026-5-29 01:05
关键是需要把P10配置成推挽,不然怎么观测波形
没问题的,默认配置有上拉电阻,最差情况就是上升边沿变缓而已,和定时准确无关。
定时器0和软件定时代码都测试过,很准的5us脉宽输出,楼主要查下是不是测试方法问题
cqjames 发表于 2026-5-28 20:47
已经试过了,用软件定时读键盘输入,时间长到飞起。
用你1楼程序下载到STC8H1K08,逻辑分析仪检测。
你这个本来就是5us定时 (0xffff-0xffc9)*(1/11059200)≈5us看看是否是不是用示波器测试?
wulin 发表于 2026-5-29 19:54
用你1楼程序下载到STC8H1K08,逻辑分析仪检测。
感谢楼主的耐心指导,我基本可以确定,应该是在某宝买到假芯片了。过程是这样的:我觉得找不到这个问题的根本原因,就准备按芯片的实际情况来变通吧(定时改为50微秒),首先我下载程序的时候就设置了最高工作频率35M,上电后测试实际脉冲宽度(十几微秒),然后根据实际宽度和当前定时器的设置,确定50微秒的定时器参数,结果发现调整后,输出脉冲宽度实际不到50微秒,后来我根据这个现象,发现定时器定时越长,脉宽输出越准确,越短,误差越大。在结合我软件定时误差更大的现象,因此,我判断是由于我代码执行时间影响了定时器的定时,也就是这个芯片指令执行很慢,根本就不是大部分指令只需要一个时钟周期,而是需要很多时钟周期,因此,我判断是一个冒充STC芯片的假芯片。
网老四 发表于 2026-5-29 15:56
定时器0和软件定时代码都测试过,很准的5us脉宽输出,楼主要查下是不是测试方法问题
...
感谢楼主的耐心指导,我基本可以确定,应该是在某宝买到假芯片了。过程是这样的:我觉得找不到这个问题的根本原因,就准备按芯片的实际情况来变通吧(定时改为50微秒),首先我下载程序的时候就设置了最高工作频率35M,上电后测试实际脉冲宽度(十几微秒),然后根据实际宽度和当前定时器的设置,确定50微秒的定时器参数,结果发现调整后,输出脉冲宽度实际不到50微秒,后来我根据这个现象,发现定时器定时越长,脉宽输出越准确,越短,误差越大。在结合我软件定时误差更大的现象,因此,我判断是由于我代码执行时间影响了定时器的定时,也就是这个芯片指令执行很慢,根本就不是大部分指令只需要一个时钟周期,而是需要很多时钟周期,因此,我判断是一个冒充STC芯片的假芯片。
cqjames 发表于 2026-5-30 10:34
感谢楼主的耐心指导,我基本可以确定,应该是在某宝买到假芯片了。过程是这样的:我觉得找不到这个问题的 ...
单片机芯片哪有那么容易仿制的,而且价格本身很低,少量仿制根本不合算,
市场上特别便宜的多半是拆机件或者闲置旧货.
定时时间越短误差越大是因为用了中断来翻转管脚状态测试输出脉宽,但单片机中断处理需要额外时间,
准确测试短延时定时器不要用中断和IO处理,直接配置成自动重装模式并且开启T0CLKO,把定时器分频输出来测试.