完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我已经遵循了一个PIC16F1709的引导装载程序的指南。我修改了生成的PIC代码,与I2C一起工作,并编写了自己的主机应用程序,它正在运行!但是,在成功加载应用程序之后,它的中断不起作用。不幸的是,Bootloader中的I2C代码也需要中断。我在这里读过很多关于如何重新映射中断向量的文章(我没有改变Microchip为此生成的代码),但是没有人给出任何关于如何使用Bootloader和应用程序中断的明确答案。我的Bootloader被设置为使用ROM中的03FF,而我的应用程序使用代码偏移编译器选项(设置为0x0400)。我可以在..lst文件中看到两个ISR都位于正确的地址(分别是0x0004和0x0404)。我试过简单的布尔标志,但是很明显不能工作,因为变量的RAM位置很可能被应用程序中的其他东西使用:lso尝试读取和写入service_isr内的闪存位置(END_FLASH-1),然后尝试在引导加载程序完成时设置它,但是也没用。当应用程序和引导加载程序都使用中断时,有人建议如何执行吗?或者在PIC16F上这是不可能的?PIC16F1709XC8 V1.45 MPLAB V4.05
|
|
相关推荐
3个回答
|
|
好吧,我想出来了。结果是中断工作正常,但I2C不能正常工作。关键是在跳转到应用程序(碰巧也使用I2C)之前禁用MSSP/I2C(SSPEN=0)。他计划应用程序进行引导加载。使用MPLA-- RAM =默认,-020-040选项来做这件事。希望有一天能帮助某人!
|
|
|
|
是的,你是对的,Bootloader不必使用中断,但我不认为用它来做完全不合理。无论如何,在跳到应用程序之前,您仍然需要禁用SSPEN,即使您执行了轮询I2C代码(这正是真正让我绊倒的事情)。e ISR到应用程序的ISR。
|
|
|
|
我不认为引导加载程序本身使用中断(否则,这会增加应用程序的IRQ延迟),但是它必须重定向中断向量以跳转到应用程序的ISR。
|
|
|
|
只有小组成员才能发言,加入小组>>
5202 浏览 9 评论
2016 浏览 8 评论
1942 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3188 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2243 浏览 5 评论
753浏览 1评论
640浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
544浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
652浏览 0评论
552浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 02:50 , Processed in 1.229316 second(s), Total 80, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号