CLA程序代码被分为任务或中断服务程序。任务没有固定的开始单元或长度。CLA程序存储器可以按需要划分。CLA通过相应的中断向量(MVECT1~MVECT8)的内容知道一个任务从哪里开始,任务的结束由MSTOP指令表明。
CLA支持8个任务。任务1具有最高优先级,任务8具有最低优先级。一个任务可以由外设中断或由软件请求。
(1)外设中断触发
每一个任务具有可以触发该任务的特定中断源。配置MPISRCSEL1寄存器以选择可能的中断源。例如,任务1(MVECT1)可以通过由MPISRCSEL1[PERINT1SEL]位指定的ADCINT1或EPWM1_INT触发。如果需要使用EPWM2_INT触发一个任务,最好选择任务2(MVECT2)。另一个可能的方案是主CPU使用EPWM2_INT,且用软件触发一个任务。
将PERINT1SEL位域设置为无中断,可以禁止外设向CLA发送中断请求。
(2)软件触发
任务也可以由主CPU软件向MIFRC寄存器写入或由IACK指令启动。使用IACK指令更有效,这是因为不需要使用EALLOW设置MIFR位。设置MCTL[IACKE]位可以使能IACK特性。IACK指令操作数的每一位对应一个任务。例如,IACK#0x0001将置位MIFR寄存器的位0而启动任务1。同样IACK #0x0003将置位MIFR寄存器的位0和位1而启动任务1和任务2。
CLA具有自己的取指令机制,可以运行任务而独立于主CPU。
CLA某一时间只能服务一个任务,不能进行任务嵌套。当前运行的任务由MIRUN寄存器指明。已经收到但是尚未服务的中断由标志寄存器(MIFR)指明。如果收到一个外设中断请求且一个相同的任务已经设置了标志,那么将置位溢出标志。溢出标志一直保持置位直到由主CPU清除。(www.daowen.com)
如果CLA空闲(当前没有运行任务),那么将启动设置标志(MIFR)和使能(MIER)的且具有最高优先级的中断请求。流程如下:
1)相应的RUN寄存器位被置1(MIRUN)而且标志位(MIFR)被清除。
2)CLA从相应中断向量(MVECTx)指示的单元开始执行。MVECT为与第一个程序存储器单元的偏移量。
3)CLA执行指令直到遇到MSTOP指令,即任务结束。
4)清除MIRUN位。
5)发出指定任务的中断到PIE。这样通知主CPU任务已完成。
6)CLA返回空闲。
一旦任务完成,下一个高优先级的悬挂任务自动得到服务,重复上述步骤。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。