打印

用过C8051F单片机的大侠进来看看

[复制链接]
2373|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
new1988|  楼主 | 2010-5-17 16:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 new1988 于 2010-5-17 17:10 编辑

我用的C8051F020单片机控制一个无刷电机,产生PWM信号的是PCA0模块。但是又用到了PCA1-PCA3的边沿触发模式来采集无刷电机里面三个位置传感器的信号,只要电机的位置传感器的信号发生变化就进入中断,从而算出电机的速度。但是我在想,PWM和边沿触发模式都用到了PCA0定时计数器。如果我进入中断把PCA0寄存器给清零了,那样电机的速度测出来就没问题,但是PWM的产生也是靠捕获PCA0里面的值的啊,那样PWM的占空比就不对了。如果在进入中断后不把PCA0里面的数清零,那么得到的速度就不准了!不知道我的顾虑对不对?

相关帖子

沙发
ayb_ice| | 2010-5-17 16:54 | 只看该作者
PCA不是有多通道吗,他们共用一个时间和基本定时器,但通道是独立的,不要改变公共部分即可

使用特权

评论回复
板凳
大秦正声| | 2010-5-17 17:04 | 只看该作者
电机的三个位置传感器都是脉冲输出而不是模拟输出吗?

建议你仔细看英文手册!

使用特权

评论回复
地板
new1988|  楼主 | 2010-5-17 17:10 | 只看该作者
谢谢您的回答!我知道PCA是有很多通道啊,并且它们都是独立的。但是就是公用部分的问题啊,我用PCA边沿触发捕获模式来采集电机的速度,而速度是根据PCA的基本定时器的时间来计算的啊。在进入中断后,如果不把定时器清零 的话,那下次记时就不是从零开始记时的啊!

使用特权

评论回复
5
ayb_ice| | 2010-5-18 09:10 | 只看该作者
建议细仔看PCA,根本没有看懂

使用特权

评论回复
6
new1988|  楼主 | 2010-5-18 09:42 | 只看该作者
3# 大秦正声
这是电机的时序图,难道电机输出的不是脉冲吗?我电机的驱动是FSBS15CH60。

使用特权

评论回复
7
new1988|  楼主 | 2010-5-18 09:47 | 只看该作者
5# ayb_ice
我把PCA那部分看了几遍了,不知道我哪里理解错误了

使用特权

评论回复
8
ayb_ice| | 2010-5-18 09:54 | 只看该作者
PCA操作一般肯定是不允许理发公共部分的
0~5=5
5~10=5
....
其它的自己理解吧

使用特权

评论回复
9
new1988|  楼主 | 2010-5-18 11:31 | 只看该作者
请问LS的前辈,分时复用,不知道我理解的对不对?

使用特权

评论回复
10
ayb_ice| | 2010-5-18 11:33 | 只看该作者
看来理解能力有限
PCA=捕获比较单元
利用捕获....

使用特权

评论回复
11
new1988|  楼主 | 2010-5-18 11:45 | 只看该作者
前辈,不好意思。我比较愚钝。是不是求两次捕获值的差值啊?如果我再理解错了,麻烦您能不能再解释详细点,谢谢了!

使用特权

评论回复
12
linqing171| | 2010-5-18 13:08 | 只看该作者
回楼主,你的顾虑是完全对的。
不把PCA0里面的数清零,那么得到的速度就不准了! 这句话有问题,所以2楼给你答复了。

公共部分 PCA0寄存器 是不允许操作的,因为一操作,pwm输出就不对了。

11楼对8楼的理解是正确的。

注意一下,相减的时候要用unsigned 来减。

使用特权

评论回复
13
ayb_ice| | 2010-5-18 13:18 | 只看该作者
对了,就是相减
...

使用特权

评论回复
14
new1988|  楼主 | 2010-5-18 13:50 | 只看该作者
谢谢各位前辈的解答

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

470

帖子

0

粉丝