Microchip
直播中

张锐

7年用户 174经验值
私信 关注
[问答]

如何处理具有多个可能中断源的中断

你好,我查找了一些更复杂的项目,其中有多个中断源。但是我只找到具有简单和单个I/O的项目。我想了解如何处理具有多个可能中断源的中断。如果有关于这个主题的很好的示例或教程,它可以有所帮助。谢谢,Ran

回帖(7)

杜元晓

2020-4-27 13:47:23
汇编程序还是“C”?如果您使用带有中断向量表(IVT)的芯片,比如PIC24 ordsPIC,那么为要使用的每个中断源编写中断源处理程序(ISR-中断服务例程)。然后在代码中启用中断源。如果几个中断源同时触发,它们将按优先级顺序逐个处理(参见数据表中的IPL字)。如果启用了中断嵌套(默认),则高优先级中断将中断低优先级中断(如果有的话)的处理。在完成较高优先级中断例程之后,将恢复低优先级中断的执行。如果CPU速度足以在再次发生中断之前处理所有源,那么即使在多个源的情况下,您也有所有机会不错过中断。
举报

王玉英

2020-4-27 13:54:19
嗨,Nikolay,谢谢!我用C语言编写,使用dsPIC(33F),并且我认为使用库框架也是有价值的。关于这个问题,我想问一下,我看到库不使用任何中断注册或处理程序,好像任何事都是同步的(包括can总线、i2c、spi等)。明白图书馆里没有中断,还是我错过了什么?谢谢,冉
举报

杜元晓

2020-4-27 14:09:55
我只使用了DSP和定点库。所有通信代码(UART,SPI)都是我自己编写的,因为我不知道在哪里可以获得紧凑、健壮和适当的库。所以我无法想象你在说什么库。无论如何,LIBs可以使用状态机方法而不是中断。该芯片有一个缓冲区,并且状态机可以比新事件更快地完成它的主回路。可以对源进行轮询,而不是中断驱动。只需在无限循环中一个一个源。为了缩短主回路的执行时间,需要对小部件进行循环处理。例如,代替一次处理整个分组,处理函数可以逐个字节地处理并将控制返回到主循环中。在开发状态机的时候,你会做一个RTOS。
举报

王玉英

2020-4-27 14:21:09
嗨,我是说dspIC库工具:www1.micro..com/downloads/en/devicedoc/51456b.pdfIt也被称为传统DSP库ot或MCC(MPLAB conde配置器)。我想也一样。它是外围设备I/O的包装器。我认为它比从头开始写和发明轮子要好,对吧?我只是看不到这些库中有任何中断。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分