通过ROS控制真实机械臂(10) --- PRU-ICSS定时器 Industrial Ethernet Peripheral (IEP) 实现定时功能

上一篇博客为了实现延时特定时间(4ms)并在这段时间内产生PWM波形,方法是通过计算PWM的单次循环时间(PWM的周期),然后计算出循环次数,使用计数器计数,每次循环判断计数器的值是否等于循环次数。这种方法比较简单,对于不熟悉PRU 的我来说比较好用,对于只改变占空比不改变周期,延时时间不变的波形很容易实现,因为PWM的周期和延时是不变的,所以循环次数也不会改变,轮询检测就搞定了。

但是随着实验的进行,我发现仅仅变占空比满足不了需求,虽然延时时间并没有改变(还是4ms),但是每经过4ms,周期变化了,所以需要改变循环次数,虽然复杂了点还是可以用上述方法解决的,最终打败我的是因为计算的循环次数不一定是整数,每次取整就会带来一定的误差(虽然很小)。

想了想,因为单片机是有两个定时器T0和T1,可以通过超时中断来实现产生特定时间的PWM波形,那么beaglebone的PRU是否也提供了类似的定时器呢,没办法只能继续啃am335的手册,终于发现了Industrial Ethernet Peripheral (IEP)。

(IEP) is intended to do the hardware work required for industrial ethernetfunctions. The IEP module features an industrial ethernet timer with eight compare events. IEP旨在完成工业以太网所需的硬件工作功能。iep模块具有一个工业以太网定时器,具有八个比较事件。默认频率是200MHZ,意味着执行一条指令的时间是5ns。其余详细的细节参考am335x PruReferenceGuide。下面详细介绍代码实现࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值