找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1491|回复: 6
打印 上一主题 下一主题
收起左侧

求教更换单片机后AD的时序问题

[复制链接]
跳转到指定楼层
楼主
设计的作品中有一部分是用hx711作模数转换读压力传感器数据。一开始用的是stc89c52rc单片机,现在换成了stc8a8k64s4a12单片机后运行速度变快了很多,不满足hx711的时序了,我就想改延时函数,就是让小灯亮灭然后拿秒表计时,最后在stc8a8k64s4a12上写一个几微妙的延时函数,(好像一个_nop_()是2us),但是这样还是不行,原来的代码实现不了功能。是能更改stc8a8k64s4a12的频率吗?想请教一下大家有什么好办法啊,万分感谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2019-10-17 08:18 | 只看该作者
阅读HX711资料,对时序要求的部分在新的单片机上改正即可
回复

使用道具 举报

板凳
ID:401564 发表于 2019-10-17 11:25 | 只看该作者
换了STC8之后,所有的延时都会变短,而且并不是单纯的加快了几倍,乱得很
有的指令快了6倍,有的指令快了4.8倍,
89C52大多的指令是6个系统时钟
STC8A大多的指令是1个系统时钟
所以,在很多情况下,STC8A是比89C52快6倍的
但也只是大多情况下是这样而已,有的时候是要快12倍的,所以,这就很让人头痛的
跟外部器件有严格时序要求的,要么你全部增加延时12倍,要么是看编译后的汇编代码慢慢算
最简单的是看别人的代码来改
回复

使用道具 举报

地板
ID:213173 发表于 2019-10-17 14:01 | 只看该作者
stc8a8k64s4a12默认内部时钟24M,一个_nop_()不是2us,是0.043us。楼主可以根据原程序的延时时间利用STC-ISP软件的软件延时计算器功能重新写延时函数。下面是本坛连接,有我给坛友的回复,实物验证一次成功。
http://www.51hei.com/bbs/forum.p ... 9330&highlight=
回复

使用道具 举报

5#
ID:282850 发表于 2019-10-17 15:17 | 只看该作者
STC8A是单时钟指令,STC89C52是12时钟,原则是如果主频都是11.0592Mhz,都会快了12倍。重新写STC8A的delay函数。HX711对时钟要求不算严格,可以搞定。
此贴再次说明,MCU不是越快越好,合适的才是对的。MSP430F1xx最高时钟8MHz,TI难道没有能力设计高频的MCU吗?就算时8Mhz还经常处于关闭状态,待机或常规运行常常用在32768hz (ACLK)。
回复

使用道具 举报

6#
ID:585813 发表于 2019-10-20 20:14 | 只看该作者
按照各位师傅说的做了,第一个是stc89c52rc可以正常使用的程序,第二个是我相应地改到stc8a8k64s4a12上的程序(里面的延时函数是用stc-isp生成的),但是还是不能正常运行,还想请教大家是哪里错了,麻烦了。
回复

使用道具 举报

7#
ID:213173 发表于 2019-10-21 07:47 | 只看该作者
执念Richard 发表于 2019-10-20 20:14
按照各位师傅说的做了,第一个是stc89c52rc可以正常使用的程序,第二个是我相应地改到stc8a8k64s4a12上的程 ...

stc89c52rc在12M时钟时这个延时是6us,不是4us。
void Delay_hx711_us(void)
{
        _nop_();
        _nop_();
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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