Microchip
直播中

张润

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

多个中断的问题如何解决

大家好,我有一个关于使用多个中断的问题。我使用PIC18F46K20、带有一些传统外围库的XC8编译器和PICkit3作为调试器。我使用的一个中断是基于ADC的中断,每隔1kHz有一个定时器和CCP特殊偶数触发器。我尝试使用的另一个中断是一个具有三个用户选项的USAT接收器中断。在我进一步解释之前,让我张贴我的一些代码。请注意,用户DAN1138给了我一些在特殊事件触发器上运行ADC的代码。(我不知道在我之前的william hill官网 帖子中的特殊事件触发。谢谢DA1138!使用这个代码,我想为选项2将一些数据存储到EEPROM中,虽然我不确定是否应该在中断内写入EEPROM。不过,以后我可能会修改这段代码。一些初始化函数:按照现在的方式,我看到ADC中断正在运行,但是如果我通过PuTTY向芯片传输一些东西,我看不到代码进入中断。如果我将ADC中断设置为低优先级,那么ADC中断将在代码开始时运行一次,但是代码将继续检查是否设置了接收器中断标志,并且不会执行其他操作。在ADC中断中放置断点确认它将在此配置中运行一次,然后不再运行。如果需要更多的代码或信息,我将提供它。我的主要问题是我做了什么不正确的事情?我不知道如何正确处理PIC芯片的优先级。谢谢!

回帖(19)

张娜

2020-5-7 09:40:59
嗯,不要执行那些长时间的操作,例如在USAT RX中断处理程序中的PUPSUART或写入EEPROM…
举报

邢洋

2020-5-7 09:47:05
达里奥,谢谢你提供的信息。我想知道如何在中断处理程序之外执行这些操作。但是,您认为这会导致问题吗?谢谢
举报

张娜

2020-5-7 09:55:52
我不确定,那些冗长的操作可能使PIC挂起很长时间,但是看起来您在设置高优先级-低优先级中断时遇到了麻烦:您有这个吗:RCONbits.IPEN=1;//Modalita'Avanzata的中断!?
举报

杨玲

2020-5-7 10:13:00
没有理由你不能在中断中给EEPROM写信,但是你不应该等待写在中断中完成。
举报

更多回帖

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