目前用mega64的cpu,用16M的晶体。一般来说速度是没问题的。
问题是经我分析,有点麻烦。在不用操作系统前提下,有如下任务:
马达控制:2个马达。一个马达处理耗时50us左右(我调试时直接放在定时器中断里,出入中断动作耗时13微妙,计算处理耗时37微妙左右)。马达处理间隔为400微妙左右。
通讯输入:45微妙左右一次数据输入中断。处理时间大概为13微妙(目前直接放在中断里面处理)。
通讯输出:波特率和数据结构和输入一样,但间隔没要求。
电平跳变中断输入:一共4个输入中断。处理时间不明(估计在20us内),间隔最快只有500us.
其他任务:液晶显示,按钮判断,菜单处理。AD转换处理。马达数据处理。其他数据运算处理。全部的运行时间不明。当中有32位运算,求商求余。但这些任务慢一点没影响。
我又做了一个CPU执行效率测试。得出一个表格
32位乘除法最大耗时55us,为了避免我只用了移位。16位除法有用到。(显示数字有超过255的)目前这种情况,应该如何分配cpu的执行时间,让所有通讯数据和中断无一遗漏? |