oos*_*wal 3 embedded microcontroller
我需要在Renesas R8C /36CμController的引脚19上驱动32Khz方波.该引脚是不可协商的(电路设计已经完成.)
软件设计使用250μsec中断来模拟多任务处理,但这仅适用于2Khz全波.
我是否需要为驱动32 Khz创建另一个更高优先级的中断,还是有其他一些我不知道的技巧?
我不熟悉RC8,瑞萨在性能方面没有多说,但它是一个CISC处理器,每条指令通常有4个周期,所以让我们估计大约4 MIPS?有些指令要长得多,最多可达30个周期.
因此,如果您创建一个64KHz定时器并在每个中断上翻转输出,则每个中断之间有大约63条指令,您有中断延迟加上翻转位的代码.如果它可以工作,它可能构成一个重要的CPU负载,并可能影响其他操作的及时性.
实际上,没有重新设计,项目可能不可行.在我看来,你已经用4KHz操作系统标记强调了它 - 这个速率下的软件开销可能是你CPU负载的重要组成部分.
[添加]
我之前在中断之间建议了6条指令 - 计算器中的手指故障,我已将该估计值更改为63,并将我的结论调整为"几乎不可行".
然而,我再次查看数据表,中断延迟是可变的,因为指令执行是可变的,并且当前指令必须在中断服务之前完成,最坏的情况是DIVX指令执行时,它最多需要51 在中断例程的第一条指令之前循环.那是2.55us,当你需要每15.625us触发一次中断时,可变延迟会产生很大的抖动,构成你总CPU时间的6到16%,甚至不考虑ISR本身所使用的.如果中断本身是抢占或者更高优先级的中断正在运行,当这个中断到期时,将进一步的抖动.
它是否工作将取决于32KHz的精度和抖动限制,以及您的代码需要完成的任何其他工作.