完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我把一些代码从18F25K22移植到18F25K42,这迫使我现在移动到MPLAB X。我不确定如何设置向量中断处理程序。有人能分享一个例子吗?谢谢。
以上来自于百度翻译 以下为原文 I'm porting some code from an 18F25K22 to a 18F25K42, and this forces me to move to MPLAB X now. I'm unsure how to setup the vectored interrupt handlers. Anyone have an example they can share? Thanks. |
|
相关推荐
5个回答
|
|
对于“IRQ(XXX)”——所有XXX参数都位于XC8安装文件夹(在DOCS下)的PIC18FCHIPNFO.HTML文件中。
以上来自于百度翻译 以下为原文 For "irq(xxx)" - all the xxx arguments are in the pic18_chipinfo.html file in your xc8 installation folder (under docs) #define IVT_BASE 0x808 //8 // IVT location - using 0x000808 as bootloader is in 0-0x7ff void init_int (void) { INTCON0bits.IPEN = 1; // enable priorities bool state = (bool)GIE; // save interrupt state IVTLOCK = 0x55; IVTLOCK = 0xaa; IVTLOCKbits.IVTLOCKED = 0x00; // unlock IVT IVTBASE = (unsigned short long)IVT_BASE; // set IVT to 0x808 IVTLOCK = 0x55; IVTLOCK = 0xAA; IVTLOCKbits.IVTLOCKED = 0x01; // lock IVT GIE = state; // restore interrupt state } // interrupt servicing void __interrupt(irq(IRQ_U1TX),base(IVT_BASE),low_priority) uart_tx_isr() { if (xhd == xtl) { U1TXIE = 0; // if hd==tl, nothing left to transmit } else { U1TXB = xbfr[xtl]; // send next character xtl = (xtl + 1u) MOD_XBFR_SIZE; // and update tail pointer } } void __interrupt(irq(IRQ_U1RX),base(IVT_BASE),low_priority) uart_rx_isr() { rbfr[rhd] = U1RXB; // put rcvd byte at buffer head rhd = (rhd + 1u) MOD_RBFR_SIZE; // and update head pointer } |
|
|
|
谢谢!我很好奇你是怎么知道这件事的。我没有在MPLABX用户手册中看到这一点,所以想知道DOC应该向我展示什么。
以上来自于百度翻译 以下为原文 Thanks! I'm curious how you know/found this out. I have not seen this in the mplabx users manual, so wondering what doc(s) are supposed to show me this. |
|
|
|
设置中断向量是编译器问题,而不是MPLAB X问题。MPLAB X是一个使用编译器的IDE。对于K22设备,您应该能够使用K42设备的编译器。
以上来自于百度翻译 以下为原文 Setting up interrupt vectors is a compiler issue, not an MPLAB X issue. MPLAB X is an IDE that makes use of compilers. You should be able to use the compiler for the K42 device as you used for the K22 device. |
|
|
|
哎呀。。。我的意思是编译器指南。我很困惑,因为我正在切换IDE和一个使用向量中断而不是高优先级/低优先级的芯片。
以上来自于百度翻译 以下为原文 Oops... I did mean compiler guide. I'm confused as I'm switching IDEs and to a chip that uses vector interrupts instead of just high/low priority. |
|
|
|
我想我只是在XC8的“DOCS”文件夹中查看了文件,直到我找到了我需要的东西。此外,反汇编列表是非常有用的。XC8用户指南在使用C的矢量中断上非常清楚。对于给定设备的特定数据,“PIC(18)αCHIPNo.html”将带您到具有所有配置语法和中断分配的芯片的HTML页面。
以上来自于百度翻译 以下为原文 I guess I just looked at files in the "docs" folder of XC8 until I found what I needed. Also, the disassembly listing is very useful. The XC8 user guide is pretty clear on vectored interrupts using C. For specific data about a given device, "pic(18)_chipinfo.html" will take you to the html page for your chip with all the config pragmas and interrupt assignments. |
|
|
|
只有小组成员才能发言,加入小组>>
5003 浏览 9 评论
1921 浏览 8 评论
1850 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3066 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2143 浏览 5 评论
571浏览 1评论
426浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
473浏览 0评论
366浏览 0评论
IPECMD命令烧录AVR128DA48芯片,报找不到芯片错误
850浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-15 06:26 , Processed in 1.466531 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191