找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1267|回复: 13
收起左侧

STC 硬件仿真如何看运行时间?

[复制链接]
ID:1044091 发表于 2022-12-18 11:53 | 显示全部楼层 |阅读模式
在做的项目里有倒计时的功能,用STC 8G1K08设置芯片仿真,自动设定的频率总是有误差,并且每次的设定频率误差还不一样。比如:


  . 用户设定频率: 11.059MHz
  . 调节后的频率: 11.040MHz (主时钟分频系数 = 2)
  . 频率调节误差: -0.174%

因为频率有误差,所以感觉每次倒计时的时间总是不准。想问下在硬件仿真时能看到具体的运行时间吗?好像STC芯片仿真时看不了时间?

另外,要想得到比较精确的时间,需要并联外部晶振和电容么?还是用它“用户自定义内部IRC频率”的范例程序代码设置?


回复

使用道具 举报

ID:624769 发表于 2022-12-18 12:49 来自手机 | 显示全部楼层
直接看不了,只能间接看,比如利用某变量记录两个时间点之间的机器周期,又比如某个IO在两个不同时间点输出高低电平,第三方采集等。
回复

使用道具 举报

ID:624769 发表于 2022-12-18 12:53 来自手机 | 显示全部楼层
要想得到较准的频率,应当读取出厂的22.1184校验值,用这个,再根据你的实际需要分频,ISP下载设置的频率是不准的,受限你的电脑,至少我用电脑设能误差3%以上。
回复

使用道具 举报

ID:1044091 发表于 2022-12-18 13:51 | 显示全部楼层
188610329 发表于 2022-12-18 12:49
直接看不了,只能间接看,比如利用某变量记录两个时间点之间的机器周期,又比如某个IO在两个不同时间点输出 ...

我加了一个断点,按F5数码管就可以按数字倒计时了。但问题是左下角的时间一直是0啊,不显示时间。我再试试用IO输出个方波的方法。

捕获.PNG

回复

使用道具 举报

ID:1044091 发表于 2022-12-18 14:08 | 显示全部楼层
188610329 发表于 2022-12-18 12:53
要想得到较准的频率,应当读取出厂的22.1184校验值,用这个,再根据你的实际需要分频,ISP下载设置的频率是 ...

您说的是不是这样,下载时需要选择22.1184Mhz吗,还是根本就不用管这项了,直接在代码里手动设置IRC频率为22.1184Mhz然后2分频?按您的经验,手动设置IRC频率准吗?官方给出了3种代码,有点简单有的复杂,我应该用哪个呢? 无标题.png

回复

使用道具 举报

ID:213173 发表于 2022-12-18 14:40 | 显示全部楼层
实际运用中,一小时内这点误差可以忽略不计。如果对时间精度有特别需求就要另外添置高精度时钟芯片。
回复

使用道具 举报

ID:401564 发表于 2022-12-18 16:50 | 显示全部楼层
一两个小时的倒计时是不会有问题的,只要IRC时钟选择对了,再用定时器做延时,保证没有问题
STC8G1K08A,我用来定时六个小时,在分上跟时钟IC是没有区别的,但有时会误差三五分钟
做项目是不可能让你每个单片机去调节时钟的,每个单片机的RC时钟误差都是差不多的
如果你要是想知道怎么测量,最好是下载后用IO进行测量,示波器或者逻辑分析仪都可以
回复

使用道具 举报

ID:624769 发表于 2022-12-18 18:33 来自手机 | 显示全部楼层
ningsy 发表于 2022-12-18 14:08
您说的是不是这样,下载时需要选择22.1184Mhz吗,还是根本就不用管这项了,直接在代码里手动设置IRC频率 ...

下载时可以不需要设置22.1184, 但是,由于频段的关系,要选同一频段的,为了避免麻烦,你还是选22.1184吧,8g1k没有chipID,所以,你只能ROM读取,记得下载时勾选“末尾添加重要参数”选项,才能读取成功。最后,这个数值,是出厂是stc测试时最接近22.1184频率的值,如果这个频率最终依然无法满足你的需要,你只能考虑其他时钟源了。就我的使用结果来看,比电脑自动调的要准太多了。
回复

使用道具 举报

ID:624769 发表于 2022-12-18 18:36 来自手机 | 显示全部楼层
ningsy 发表于 2022-12-18 13:51
我加了一个断点,按F5数码管就可以按数字倒计时了。但问题是左下角的时间一直是0啊,不显示时间。我再试 ...

左下角是一直0的,所以我说没有办法直接得到,只能要么用变量记录时钟周期,比如开个定时器,每50000个周期,变量+1,然后结合定时器和变量,算出过了多少周期,要么某个IO输出高低电平,让第三方芯片来计算。
回复

使用道具 举报

ID:1044091 发表于 2022-12-18 19:28 | 显示全部楼层
网上查了一下,有人让单片机产生1S(或100ms)的波形,配合逻辑分析仪,调整IRTRIM寄存器的值,即可调整STC单片机的频率。但这个调整是一次性的,不同的单片机,就可能有所不同,不同的环境(特指温度,也可能不同)。 这就很麻烦了。我还是先接受它自动调整的精度,实在不行了,就接个晶振上去爽快些。
回复

使用道具 举报

ID:1034262 发表于 2022-12-18 23:21 | 显示全部楼层
用一个IO来指示时间。
回复

使用道具 举报

ID:1044091 发表于 2022-12-19 09:15 来自手机 | 显示全部楼层
多谢以上各位指导!我会试试看,或许就能用到。
回复

使用道具 举报

ID:401564 发表于 2023-2-5 19:35 | 显示全部楼层
ningsy 发表于 2022-12-19 09:15
多谢以上各位指导!我会试试看,或许就能用到。

对于精确的长时间,STC单片机都是用定时器的
不会用while这种代码的
至于调节片上的时钟,感觉没必要
回复

使用道具 举报

ID:1061331 发表于 2023-2-6 00:42 | 显示全部楼层
用DEBUG断点调试
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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