打印
[ZLG-ARM]

菜鸟求助LPC2103问题!!!

[复制链接]
1659|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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的值保存,并与之前的值相减,求出一秒钟里的脉冲跳变数,也就是转速了。

INT16U Speed;
INT16U SoftCount;

void __irq ISR_pulse( void ){  // 脉冲中断
    ++SoftCount;
}
void __irq ISR_timer( void ){  // 定时中断
    static INT16U SoftCount0;
    Speed = SoftCount - SoftCount0;  // 求转速!!
    SoftCount0 = SoftCount;    // 保存以便下次中断使用
}

简单的说,就是软件计数!!

使用特权

评论回复
地板
lingbor|  楼主 | 2007-3-30 10:22 | 只看该作者

不胜感激!

使用特权

评论回复
5
lingbor|  楼主 | 2007-4-2 10:39 | 只看该作者

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

    将风扇的转速传感接到某引脚上,然后用计数的方式来检测风扇转速脉冲的宽度,然后根据PCLK和相应的分频值也可以计算出风扇的转速值。

   

使用特权

评论回复
6
linjing| | 2007-4-4 19:06 | 只看该作者

可以,不过。。。

首先,系统中既然没有硬件计数器自动计数,即便用捕捉脉冲算宽度的办法,也是每个脉冲都要响应中断,和计数的开销差不多。而且捕捉脉冲宽度的办法输出的信号波动太大,需要滤波,软件计数的办法做好了基本不用滤波也可以直接用。当然,捕捉脉宽出信号要快的多,但作为风扇测速的应用,每秒测个一两次也该够用了。

作为理论探讨,捕捉脉宽的办法是可行的,但针对你的实际问题,个人建议你还是用软件计数的办法。

另外,还有一个理论上的办法,印象当中LPC2103有AD,将转速信号接频压转换以后可以用AD测电压的办法来测转速。但这只是理论上的方案,实际应用也不建议用。

使用特权

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

本版积分规则

4

主题

10

帖子

0

粉丝