找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1734|回复: 14
收起左侧

关于51单片机定时器计数不够长的问题,想问问各位大佬有没有什么思路

[复制链接]
ID:577554 发表于 2022-10-10 17:10 | 显示全部楼层 |阅读模式
自己想做一个霍尔电机测速程序,依靠测量霍尔电平的脉宽时间来求解转速,但当电机在转速较低时,由于51定时器最多是16位重装载,用12Mhz晶振晶振的话,最多测量的脉宽时长为65535us,导致在电机在低转速区间测量不准确的情况,请问各位大佬有没有什么好的办法或者思路,延长定时器的计数时间
回复

使用道具 举报

ID:401564 发表于 2022-10-10 17:23 | 显示全部楼层
这.......这不是基础知识吗?
搞一个静态变量a,在定时器中断中,每次溢出就a+1
要计算与时间相关的数据的时候,把定时器当前计数器的值加上这个变量,不就知道总时间了?
a*65536+当前定时器计数器值=总时间
用完了再把a清除,进入下一个计时
回复

使用道具 举报

ID:526108 发表于 2022-10-10 21:44 | 显示全部楼层
STC8G系列等等都自带脉宽检测功能
回复

使用道具 举报

ID:577554 发表于 2022-10-10 22:42 | 显示全部楼层
Y_G_G 发表于 2022-10-10 17:23
这.......这不是基础知识吗?
搞一个静态变量a,在定时器中断中,每次溢出就a+1
要计算与时间相关的数据的时 ...

是这样,但您说的这个方法我也想过,但我设置的是外部信号下降沿会产生中断,计时器溢出时也会产生中断,我无法辨别到底是那个信号产生的中断,有没有什么标志位能够区分两者
回复

使用道具 举报

ID:577554 发表于 2022-10-10 22:46 | 显示全部楼层
qq624353765 发表于 2022-10-10 21:44
STC8G系列等等都自带脉宽检测功能

关键是脉宽监测的定时器的TL0和TH0加起来的时间一共是65535us,(51能够测量的最大脉宽为65535us),在电机低转速(脉宽时间>65535us)的情况下如何测量速度,是我目前所遇到的问题
回复

使用道具 举报

ID:624769 发表于 2022-10-10 22:59 来自手机 | 显示全部楼层
LUREN1 发表于 2022-10-10 22:42
是这样,但您说的这个方法我也想过,但我设置的是外部信号下降沿会产生中断,计时器溢出时也会产生中断, ...

为什么不能判断? 不同的中断触发,进入不同的中断函数,这不是分的清清楚楚明明白白的么?
回复

使用道具 举报

ID:34149 发表于 2022-10-10 23:07 | 显示全部楼层
可不可以多+几个65535呢?
回复

使用道具 举报

ID:491577 发表于 2022-10-11 07:28 | 显示全部楼层
嫌单片机太快最简单是降低主频,为什么要12MHz呢?3MHz不行吗?还嫌不够慢再降低,1M就相当于多了12个65535了,频率最高主频有上限,最低没有下限的。现在单片机大部分都不需要外部晶振了,调节主频很简单。
回复

使用道具 举报

ID:401564 发表于 2022-10-11 08:54 | 显示全部楼层
LUREN1 发表于 2022-10-10 22:42
是这样,但您说的这个方法我也想过,但我设置的是外部信号下降沿会产生中断,计时器溢出时也会产生中断, ...

这个.......
8051的中断是有固定中断入口的,不需要识别的呀
定时器中断就是定时器中断,只有定时器才能触发的
如果是单一个霍尔,为什么不用外部中断,由外部中断来启动定时器呢?
回复

使用道具 举报

ID:1034262 发表于 2022-10-11 10:04 | 显示全部楼层
LUREN1 发表于 2022-10-10 22:46
关键是脉宽监测的定时器的TL0和TH0加起来的时间一共是65535us,(51能够测量的最大脉宽为65535us),在电机 ...

STC8H系列的MCU的脉冲测量,其时钟可以设置,可以是fosc/1~65536,12MH可以测量到350秒。
回复

使用道具 举报

ID:958776 发表于 2022-10-11 10:27 | 显示全部楼层
不同中断是有自己固定的入口的,不用怕识别错误
435405a067a00653a13f55284f16e2d.jpg
回复

使用道具 举报

ID:123289 发表于 2022-10-11 12:49 | 显示全部楼层
定时器标配是16位,自己随便加个寄存器参与计数,就是24位。再加……
足够你用的了。
回复

使用道具 举报

ID:879348 发表于 2022-10-11 14:14 | 显示全部楼层
开启定时溢出中断
回复

使用道具 举报

ID:577554 发表于 2022-10-11 16:33 | 显示全部楼层
Y_G_G 发表于 2022-10-11 08:54
这个.......
8051的中断是有固定中断入口的,不需要识别的呀
定时器中断就是定时器中断,只有定时器才能 ...

害!也对哈,糊涂了,都忘了这是两个会进入不同的中断号,感谢前辈一语点醒梦中人
回复

使用道具 举报

ID:577554 发表于 2022-10-11 16:38 | 显示全部楼层
谢谢各位前辈,问这么基础的问题,是我糊涂了,外部中断和计数器溢出器中断会进入不同中断号的中断函数,感谢各位提点
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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