第一次使用IAR for AVR进行RFID项目的一些困惑及总结,给后来者一些警示(附RC522官方程
很小的一个项目,利用mega88的SPI口读写RC522数据,然后利用串口与上位机通讯,程序不复杂,串口的程序修改自原来的51程序,但是声明了局部数组变量后,发送的数据总是乱码,开始以为是串口程序有问题,一遍遍排除,最后没办法,把数组声明为全局变量,成功,然后上网查找资料,说是cstack设置太小,改到了0x64,这个问题解决了。然后是射频部分,无论是网上找到的各种版本还是NXP的原厂程序,均无法运行,最后决定但不执行原厂程序,这样比较放心,最后发现问题出在函数返回上,Select函数返回前,变量status的值为0x0001,及超时错误,RC522没有扫到卡,但是函数调用后,返回的值竟然一直是0x0000,造成整个程序运行错误,上网找资料,还是cstack的问题,最后修改到0x200,至此程序工作正常。
射频部分是第一次接触,从未想到IAR编译器会出这么多问题,所以一直认为是RC522的配置不正确,手头没有仿真器,一遍遍下载,最后设置把每个寄存器的值读出来,然后串口输出,判断与写入的值是否一致,但是不知道对错(RC522不熟悉,完全陌生)。
期间怀疑是下载的程序有问题,上网注_册下载各种版本的RFID程序,都行不通,最后才想到还是官方的程序可靠。
用过C51,ARM,TI DSP,可能是熟悉的缘故,从未出现编译器本身的问题造成程序出错,所以一直没有往这方面想,耽误了大把的时间,作为一个警示吧,希望后来者引以为戒。
令我至今困惑的是,我使用的局部变量并不多,数组都放到了全局变量,为什么cstack还要设置为0x200这么大,整个程序才能正常运行,困惑,请高手指教。
点击此处下载 ourdev_634402T8XDQD.rar(文件大小:209K) (原文件名:MFRC522.rar) 我也下过了很多资料,但只是知道了怎么写进去,对于初始化,那些该先写那些后写不清楚。。。而且我手上拿到的是RC600。。。瞎了。。难道是522把那些电压管脚都接到一块去了???对于网上的那么编程习惯很不熟悉。。。。停留在初级。。。看不懂呀~~~~~ 有QQ 号码请教下大师啊 mark mark !!!!!!!!!! mark 建议除全局变量及RSTACK之外的剩余RAM全部分配给CSTACK,程序运行时产生多少中间临时变量,需要多少空间不太确定,把剩余的RAM都给CSTACK是不会错的。
从事单片机开发以来一直用IAR编译器,一直都这么干,没发现过因CSTACK设置引起的问题
准备尝试IAR FOR AVR, 被吓到了!{:funk:} 这和编译器等等等有关系的 mark
兄弟,你的IAR-AVR88版本可否共享一下~急急急~ 回头看看
页:
[1]