CV LGT, 使用 cvavr2.03.4编译LGT成功,但是用LGT JTAG调试时发现....
CV LGT, 使用 cvavr2.03.4编译LGT成功,用的是SSOP24封装,先上个图片。但是用LGT JTAG调试时发现两个问题:
1,如下图SPerror.jpg,SP虽然指向高地址0x4FF,但是发现程序在调用io_init()后返回地址00A0是同时压入RAM的0x0004FE、0x0004FF和0x0002FE、0x0002FF,正确应该是0x0004FE、0x0004FF和0x0003FE、0x0003FF吧?是否内部SP偏移地址被改变了?因为我调试时好像看到过正确的情况,做了RAM清除的动作,即下面第二个问题。
2,如下图clearRAM.JPG,我用LGT JTAG调时执行下面RAM清除程序时,发现居然它是从000100和000300位置同时写入00,这个问题太奇怪了,这样当0x0100~0x3FF写完,然后0x0300~0x05FF也同样写入00了。但是我用studio模拟仿真是没有问题的如图clearRAM2.JPG。
#asm
//clear R2 to R14
CLR R30
LDI R24,0x0D //Load immediate
LDI R26,0x02 //Load immediate
CLR R27 //Clear Register
ST X+,R30 //Store indirect and postincrement
DEC R24 //Decrement
BRNE PC-0x02 //Branch if not equal
//clear RAM 0x0100 ~ 0x3FF,
//X = R27R26
//start address R27R26 = 0x0100,total R25R24 = 0x0300
//0x0300-0x0100 = 0x200(512)
//SER R30 //Set Register
CLR R30
LDI R24,0x00 //Load immediate
LDI R25,0x03 //Load immediate
LDI R26,0x00 //Load immediate
LDI R27,0x01 //Load immediate
ST X+,R30 //Store indirect and postincrement
SBIW R24,0x01 //Subtract immediate from word
BRNE PC-0x02 //Branch if not equal
#endasm
LGT技术支持在吗?怎么没有人帮忙看看我说的问题?是否我写得不清楚? http://www.amobbs.com/thread-5476633-1-1.html
看了这个第一个问题终于明白了,给datasheet的0x3FF搞糊涂了,原来最高是0x2FF。不过写0x100~0x2FF时,0x300~0x4FF也一起写了,好像双重RAM一样。 楼主能写个简单的教程么,我也想用这个芯片,用的也是cvAVR编译器 CV LGT 教程
附件为使用cvavr2.03.4写的DEMO例程,希望能给像我一样喜欢用CV的人有帮助。
LTG24\smaple\LGT24L.prj
attach://38266.rar
其实很简单,只要将头文件换成LGT的(不过头文件要用我按CV格式修改的这个附件LTG24\include\systemiolgt8f0xa_fullZHOU1.h)
,然后按附图CVConfigure1.JPG不要选择Clear Global Variables at Program Startup选项,因为选了这
个CV会自动生成清除RAM的ASM代码加到程序开始,不选的原因是LGT和M164的RAM size不同。
使用这个demo要注意设置头文件的路径如下图CVConfigure2.jpg
附上原理图
嗯,关注着 怎么好像有点乱?而且没看到附件?attach://38290.rar 别着急,慢慢来
不错 感谢楼主 LGT8F08A的SRAM是512字节,SP的最高指针要设为0x2FF。
页:
[1]