讨论下LGT8F08A芯片的eeprom操作是否是个bug,具体情况看帖子
我遇到的问题是这样的:对于新的芯片,如果对eeprom的指定的地址未进行写的操作的时候,
程序启动后就去访问这个地址,那么读的指令将死等,并且连看门狗都不起作用
但是如果这个地址是已经是写操作过的,程序就能正常,
进而测试发现,程序启动后,先在不用的某个eeprom地址随便写个数据,那么后面跟的读eeprom的操作,即使这个地址没有写过数据,程序也不会死
请大家测试下,是否有跟我一样的情况
或者是我读的代码有错吗,还是我什么地方初始化没注意的?
/*****************************************************************************
** Function name : E2prom_Read
** Descriptions : read internal eeprom
** parameters : addr:
** Returned value : data:
*****************************************************************************/
u8 E2prom_Read(u16 addr)
{
/*wait for completion of previous write*/
while(EECR & (1 << EEPE));
/*set up the address register*/
EEARH = (addr >> 8) & 0x01;
EEARL = (addr & 0xFF);
/*start eeprom read by writing EERE*/
EECR |= _BV(EERE);
asm("nop");
asm("nop");
return EEDR;
} 全片擦除试试吧,不会又是BUG? xwkm 发表于 2013-3-27 17:39 static/image/common/back.gif
全片擦除试试吧,不会又是BUG?
我手里只有仿真器,ISP烧写的刚定了,还没到,收到后测试下全部擦除一次还会不会,我估计也会,出厂的时候,应该是空的呀 是不是因为"写入均衡"没被全片擦除或写过没初始化引起的.
芯片写eeprom的时间也总是不好说的,有时候慢有时候快我想也是这个"写入均衡"引起的吧
goodcode 发表于 2013-3-27 20:08 static/image/common/back.gif
是不是因为"写入均衡"没被全片擦除或写过没初始化引起的.
芯片写eeprom的时间也总是不好说的,有时候慢有时 ...
可能像你说的那样,因为 LGT的eeprom实际上就是用flash来仿真的,只不过他的仿真是由硬件来操作的,而像stm32F103芯片,是用软件来仿真的
并不是慢的原因,而是死了,连看门狗都不作为,程序也不重启
不知道大家是否遇到? whimsyB 发表于 2013-3-27 21:04 static/image/common/back.gif
可能像你说的那样,因为 LGT的eeprom实际上就是用flash来仿真的,只不过他的仿真是由硬件来操作的,而像s ...
我这边测试,新片子从没写过,直接读没问题。
是不是你的工作频率太高了,前几天写bootloader,上了36MHz的晶振,写FLASH写不进去。 bozai 发表于 2013-3-28 10:33 static/image/common/back.gif
我这边测试,新片子从没写过,直接读没问题。
是不是你的工作频率太高了,前几天写bootloader,上了36MH ...
不知道。看是什么片咯。工程片是有点BUG的。
你的是SOP28的还是啥?我的没啥问题。无论32还是28 LGT的数据FLASH其实是两页。交替写的。比如说第一页有个0x00,然后你写个0xff上去。控制器就会擦除备用页。然后把别的数据复制到备用页,接着写入数据。标记备用页有效,把原来的页标记为无效(这个是最坏情况)。
我没有遇到读指令弄到CPU死等的现象。你是不是不小心关了16M RC? 这个测试是基于新的芯片,没有先执行过写的操作,用仿真器灌程序测试,你也是按照我说的这个条件测试吗? whimsyB 发表于 2013-3-29 13:57 static/image/common/back.gif
这个测试是基于新的芯片,没有先执行过写的操作,用仿真器灌程序测试,你也是按照我说的这个条件测试吗? ...
嗯。目前我没有这个状况啊。读到一个FF。 xwkm 发表于 2013-3-30 13:12 static/image/common/back.gif
嗯。目前我没有这个状况啊。读到一个FF。
哦,谢谢,看来是我程序的问题了 我的程序烧进去了,芯片无反应,会不会也是这个原因呢?因为我的程序一开始有读EEPROM的操作。我明天改先写一个数试试。 我也遇到过这样的问题了,程序得先对EEPROM写操作,否则会死机了。
页:
[1]