30F3012的 Restricted memory问题

[复制链接]
3956|2
 楼主| 芮1812 发表于 2007-2-28 09:44 | 显示全部楼层 |阅读模式
本人使用ICD2调试30F3012,软件为MPLAB7.50,C30&nbsp;V1.20<br />项目中添加的链接文件为p30f3012.gld,<br />#include&nbsp;&quot;p30f3012.h&quot;<br />unsigned&nbsp;int&nbsp;T1Buffer[16],T2Buffer[16];<br />unsigned&nbsp;int&nbsp;WPointer;<br />unsigned&nbsp;char&nbsp;over;<br />void&nbsp;testport(void);<br />void&nbsp;timer1_init(void);<br />nt&nbsp;main(void)<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;pc&nbsp;=&nbsp;0x180&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;xdata[512];<br />&nbsp;&nbsp;&nbsp;&nbsp;union&nbsp;xx{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;v1[2];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;v2;<br />&nbsp;&nbsp;&nbsp;&nbsp;}utest;<br />&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i,step;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;y;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;variable&nbsp;init&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;WPointer&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;over&nbsp;=&nbsp;1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt16;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1Buffer&nbsp;=&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T2Buffer&nbsp;=&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;port&nbsp;init&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;testport();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;timer&nbsp;init&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;timer1_init();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(over);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(1);&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />void&nbsp;__attribute__((__interrupt__))&nbsp;_T3Interrupt(void)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFS0bits.T3IF&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1Buffer[WPointer]&nbsp;=&nbsp;TMR1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T2Buffer[WPointer]&nbsp;=&nbsp;TMR2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WPointer++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1CONbits.TON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T2CONbits.TON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TMR1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TMR2&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(WPointer&0x10){&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IEC0bits.T3IE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1CONbits.TON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;over&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1CONbits.TON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T2CONbits.TON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return;<br />}<br /><br /><br />void&nbsp;timer1_init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;T1CON&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0x0002;<br />&nbsp;&nbsp;&nbsp;&nbsp;TMR1&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0x0000;<br />&nbsp;&nbsp;&nbsp;&nbsp;PR1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0xffff;<br />&nbsp;&nbsp;&nbsp;&nbsp;T2CON&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0x0002;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TMR2&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0x0000;<br />&nbsp;&nbsp;&nbsp;&nbsp;PR2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0xffff;<br />&nbsp;&nbsp;&nbsp;&nbsp;T3CON&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0x0000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TMR3&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0x0000;<br />&nbsp;&nbsp;&nbsp;&nbsp;PR3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;0x2710;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;period&nbsp;=&nbsp;1.25ms&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;IPC1bits.T3IP&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x4;<br />&nbsp;&nbsp;&nbsp;&nbsp;IPC1bits.T2IP&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;IPC0bits.T1IP&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;IEC0bits.T3IE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;T3CONbits.TON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;T1CONbits.TON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;T2CONbits.TON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />调试发现T1Buffer&nbsp;and&nbsp;T1Buffer&nbsp;均为restricted&nbsp;memory<br />中断中对&nbsp;T1Buffer&nbsp;and&nbsp;T1Buffer操作无效<br />我在microchipmplab&nbsp;idedev的文件夹中dspic30f3012e.dev中的第39行有<br />UnusedRegs&nbsp;(0x800-0x13ff)&nbsp;&nbsp;&nbsp;&nbsp;<br />在dspic30f3012e.dev中没有发现0x800以上的限制阿<br />如果我用MPLAB&nbsp;SIM来仿真则没有任何问题<br />请教各位大虾,如何解决阿??????
 楼主| 芮1812 发表于 2007-3-1 08:56 | 显示全部楼层

anybody here?

据说是ICD2占用了0X800-0X823的RAM,但是在编译选项或其他方法能够使数据在它的限制范围之外吗?<br />MPLAB7.5&nbsp;没有找到DEBUG/RELEASE选项阿!!!!!!1
 楼主| 芮1812 发表于 2007-3-2 14:46 | 显示全部楼层

自力更生

下载了V7.52就可以了,破MPLAB,BUG真多!!!!!<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部