前一段时间,曾经对在ATmega2560/2561上出现的跳转问题,做了一个简单的修改。但是,因为我没有这个芯片,一直没有办法验证和查找原因。前几天,国外的网友Ulrich Bangert告诉我原因和解决办法,关键在于新增加的寄存器EIND。
解决方法是,在文件Bootldr.c中,修改quit()函数,添加如下代码:
#ifdef EIND
EIND = 0;
#endif
(*((void(*)(void))PROG_START))(); //jump
因为我仍然没有ATmega2560/2561(相信国内大部分用户也没有),所以希望有这个芯片的网友可以试验并验证一下(目前我在仿真中验证通过了)。
文章评论(0条评论)
登录后参与讨论