[ZLG-ARM] LPC2104有什么办法实现精确延时

[复制链接]
 楼主| linjing 发表于 2007-3-31 23:12 | 显示全部楼层 |阅读模式
以下是前提<br />1.&nbsp;延时的过程中最好不关断,以保持对高优先级中断的响应<br />2.&nbsp;延时的时间可能很短,比如说5us,也有可能比较长,比如说500us,且对时序的精度要求比较高<br />3.&nbsp;系统中有不少于一个的较高级别的中断源,其中断服务的执行时间极端情况下可能比较长,比如说有可能大于500us,但通常不会太长。<br />4.&nbsp;系统主频不希望太高(纯粹个人习惯),比如说11.06MHz,<br /><br />应用1,读写单总线器件DS1820,需要比较严格的时序,比如单总线读取时序,<br />1.将口线输出0,<br />2.延时待6us<br />3.口线变高阻态<br />4.延时9us<br />5.读取口线上的电平(口线输出0,15us后读取)<br />6.口线输出0,60us后返回<br /><br />应用2,模拟串口<br />LPC2103中有两个串口,但有时使用PWM的时候会导致管脚冲突,或者需要更多的串口的时候,需要软件模拟串口。串口接收的时候,收到起始位后每隔一段固定的时间检测输入信号,以9600bps的速率接收时,每位需要延时104us,接收一个字节需要1ms,即使232协议允许有一定的速率波动,通常也不会超过10%。<br /><br />以这两个应用为例,都需要比较精确的us级的延时,误差都不能太大,要想用关中断的办法来确保延时精度都需要关比较长时间的中断。<br />以前用51实现的时候,1ms干不了多少事,关上1ms的中断也就关了,还用过MSP430,TA0有定时锁存管脚信号的功能,ARM的定时器没发现有这个功能<br /><br />下面是问题:<br />用ARM,比如说LPC2104,不知道有什么更好的办法实现精确延时没有!?
zlgARM 发表于 2007-3-31 23:42 | 显示全部楼层

linjing

&nbsp;&nbsp;&nbsp;&nbsp;精确延时和中断之间的关系应该是由用户自己来处理。<br />&nbsp;&nbsp;&nbsp;&nbsp;单说精确延时本身的话,在Fpclk合适的时候,用定时器足够了。您可以看一下定时器部分,以及Fpclk和Fcclk的关系。
shmily9588 发表于 2007-4-18 21:34 | 显示全部楼层

这个跟指令的执行周期有关系吧

如果是要3us这样的短的时间间隔,也能用定时器来完成???
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

327

帖子

0

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