由于项目需要,这里选用了FT61F135、FT61E135这两个单片机,用于开发rf315、rf433.92功能,,,由于rf程序是从121芯片迁移过来的方案,并且也在145芯片上移植测试过,程序上没有问题,,,但是,迁移到135却出现了问题
问题大致如下:学习时,把rf315、rf433.92接收到并解码成功的数据写入到内部的Eeprom后,发现按遥控器没有解码成功输出。
接下来就是程序开始逐步排除问题
1、先把以下与Eeprom数据对比的代码注释掉,再次按键测试,有按键亮灯解码输出,没有问题!
2、通过ide仿真测试,数据已经正确的写入到内部的Eeprom区域,然后又开始注释掉其他的子程序,逐步测试,也没有问题
3、还下载的该芯片的例程,测试例程发现,例程没有问题,可以正常读写。那问题就是程序上了
4、接下来,把ee驱动复制到不同的位置,又挨个注释掉不同的子程序,最终发现问题就是出在Eeprom数据读取上!
5、突然有了灵感,要不然创建一个uchar数组,先把已经写入Eeprom的数据读出来,看看读出的数据对不对。就这样,开干
6、然后创建了一个 uchar num[4] 的数组,读取Eeprom数据区,发现读出来的数据顺序是错的
在Eeprom保存的数据,0x8A、0x18、0xA1是按顺序排列保存的,读取到数组的程序,顺序是乱的,而且还发现根据数组的长度不同,读取到数据后,数据顺序排列也是随机的,这有点儿一时纳闷.......
既然读出的数据及顺序是错的,那就把数组的长度设置大一些,先设置10个,再次读取数据发现,数据顺序是对上了,可是读出的数据向后错位了一位,如下图所示
最后又找了多个遥控器,测试数据,又发现了一个新的问题,就是在Eeprom写入新的数据之前,不管Eeprom现有的数据是什么,统一先删除已有的,再写入新的数据(这有儿像stc单片机,Flash工艺的页操作)
解决方案:
1、先创建一个长数组,用于读取Eeprom现有的数据
2、把新数据写入到数组,然后再统一把数据数据写到Eeprom
3、把数据对比指向之前创建的数组,不要指向Eeprom区域,即可!
最后:大功告成 ^_^
末:如果大家还遇到了其他的问题,可是欢迎留言哦 ^_^