[ZLG-ARM] 菜鸟求助LPC2103问题!!!

[复制链接]
 楼主| lingbor 发表于 2007-3-28 16:52 | 显示全部楼层 |阅读模式
最近刚刚接触LPC2103,想监控一个风扇的转速,当风扇转速小于设定值时报警,那位大侠能告诉俺,这个转速的值该怎么读进来?用某个端口的GPIO模式还是鳦AP功能的引脚呢?该怎么设置呢?读取的值能直接赋给一个变量么?(假设这个转速值就是一个八位01数据)。
 楼主| lingbor 发表于 2007-3-28 17:59 | 显示全部楼层

那位帮俺一下呀,555555

  
linjing 发表于 2007-3-29 22:28 | 显示全部楼层

我也是最近刚刚接触ARM,共同探讨一下,感觉应该这么做

看LPC2104的资料,应该是不能通过硬件计数外部脉冲的,LPC2103估计也不行,那就使用定时器捕捉功能,程序中定义一个变量SoftCount,脉冲信号接到定时器的捕捉管脚,每次捕捉到跳变SoftCount就加1。再定义一个定时中断,每隔一段时间中断一次,比方说一秒钟,读取一次SoftCount的值保存,并与之前的值相减,求出一秒钟里的脉冲跳变数,也就是转速了。<br /><br />INT16U&nbsp;Speed;<br />INT16U&nbsp;SoftCount;<br /><br />void&nbsp;__irq&nbsp;ISR_pulse(&nbsp;void&nbsp;){&nbsp;&nbsp;//&nbsp;脉冲中断<br />&nbsp;&nbsp;&nbsp;&nbsp;++SoftCount;<br />}<br />void&nbsp;__irq&nbsp;ISR_timer(&nbsp;void&nbsp;){&nbsp;&nbsp;//&nbsp;定时中断<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;INT16U&nbsp;SoftCount0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Speed&nbsp;=&nbsp;SoftCount&nbsp;-&nbsp;SoftCount0;&nbsp;&nbsp;//&nbsp;求转速!!<br />&nbsp;&nbsp;&nbsp;&nbsp;SoftCount0&nbsp;=&nbsp;SoftCount;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;保存以便下次中断使用<br />}<br /><br />简单的说,就是软件计数!!
 楼主| lingbor 发表于 2007-3-30 10:22 | 显示全部楼层

不胜感激!

  
 楼主| lingbor 发表于 2007-4-2 10:39 | 显示全部楼层

不知道这样做可不可以…………

&nbsp;&nbsp;&nbsp;&nbsp;将风扇的转速传感接到某引脚上,然后用计数的方式来检测风扇转速脉冲的宽度,然后根据PCLK和相应的分频值也可以计算出风扇的转速值。<br /><br />&nbsp;&nbsp;&nbsp;
linjing 发表于 2007-4-4 19:06 | 显示全部楼层

可以,不过。。。

首先,系统中既然没有硬件计数器自动计数,即便用捕捉脉冲算宽度的办法,也是每个脉冲都要响应中断,和计数的开销差不多。而且捕捉脉冲宽度的办法输出的信号波动太大,需要滤波,软件计数的办法做好了基本不用滤波也可以直接用。当然,捕捉脉宽出信号要快的多,但作为风扇测速的应用,每秒测个一两次也该够用了。<br /><br />作为理论探讨,捕捉脉宽的办法是可行的,但针对你的实际问题,个人建议你还是用软件计数的办法。<br /><br />另外,还有一个理论上的办法,印象当中LPC2103有AD,将转速信号接频压转换以后可以用AD测电压的办法来测转速。但这只是理论上的方案,实际应用也不建议用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部