搜索
bottom↓
回复: 13

请教LGT技术人员 外部晶振是否对写EEPROM有影响

[复制链接]

出0入0汤圆

发表于 2013-4-19 15:45:56 | 显示全部楼层 |阅读模式
请教LGT技术人员 外部晶振是否对写EEPROM有影响 ssop24的芯片   当用内部rc时读写正常
用个部晶振12M 读出正常 偶尔能写成功  极不稳定

调试时 走一次后EEPE使终为1 (手册上说写成功后会硬件清零)       改内部RC时钟则无任何问题   

以下是程序
  1. #include <iolgt8f0xa.h>
  2. #include <intrinsics.h>

  3. #define uchar unsigned char
  4. #define uint  unsigned int

  5. #define F_CPU 12000000UL
  6. #define delayms(x) __delay_cycles(x*F_CPU/1000)
  7. uchar i;
  8. uchar temp[255];

  9. void clock_init()
  10. {
  11.   PMCR=0X31;
  12.   delayms(10);
  13.   PMCR=0X30;
  14.   CLKPR=0X80;
  15.   CLKPR=0X80;  
  16. }
  17. void eeprom_write(uchar add,uchar dat)
  18. {
  19.   while(EECR&(1<<EEPE));
  20.   EEAR=add;
  21.   EEDR=dat;
  22.   EECR|=(1<<EEMPE);
  23.   EECR|=(1<<EEPE);
  24. }
  25. uchar eeprom_read(uchar add)
  26. {
  27.   while(EECR&(1<<EEPE));
  28.   EEAR=add;
  29.   EECR|=(1<<EERE);
  30.   __no_operation();
  31.   __no_operation();
  32.   return EEDR;  
  33. }
  34. int main( void )
  35. {
  36.   clock_init();
  37.   while(1)
  38.   {
  39.       eeprom_write(i,i);
  40.       i++;
  41.   }
  42. }
复制代码

出0入0汤圆

 楼主| 发表于 2013-5-4 19:26:57 来自手机 | 显示全部楼层
没人遇到过吗?自己顶下

出0入0汤圆

发表于 2013-5-4 20:56:24 | 显示全部楼层
本帖最后由 xwkm 于 2013-5-4 21:02 编辑

void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
      /* Wait for completion of previous write */
      while(EECR & (1 << EEPE));
      /* Set up Address register */
      EEAR = uiAddress;
      /* Setup Data register */
      EEDR = ucData;
     /* Set up EEPROM operation */
      EECR &= ~(1 << EEPM2); //注意是选中EEPROM
      /* Write logic one to EEMPE*/
      EECR |= (1 << EEMPE);
      /* Start EEPROM programming by writing EEPE */
      //4NOP
      nop();
      nop();
      nop();
      nop();
      EECR |= (1 << EEPE); //这个函数应该没有问题,我用的就是这个
}

void clock_init()
{
#if SOP28
  PMCR=PMCR | _BV(OSCMEN);//工程样片
#else
  PMCR=PMCR & ~_BV(OSCMEN);//开外部晶振
#endif
//EFLASH操作建议不要关内部RC
  delay_ms(30);
  PMCR=PMCR & ~_BV(LFEN);//关内部低频RC
  PMCR=PMCR | _BV(EXTMSEL);
CLKPR=0x80;
CLKPR=0x00;//分频0
}

出0入0汤圆

发表于 2013-5-4 21:02:21 | 显示全部楼层
上面的程序应该没问题

出0入0汤圆

 楼主| 发表于 2013-5-4 22:36:36 | 显示全部楼层
xwkm 发表于 2013-5-4 21:02
上面的程序应该没问题

你好 先谢谢你提供的程序  可是刚测试还是不行 在SSOP24上试的  不能关内部RC  一关用外部晶振就死了 写不进去   现在的办法是要写EEPROM时切到内部RC写好后 再切回外部晶振

你有试过只用外部晶振 写成功EEPROM吗?  读是没问题的   

SOP8上试也是一样  SOP28外部晶振本身就有问题就没试了

出0入0汤圆

发表于 2013-5-4 22:38:59 | 显示全部楼层
liujian6f 发表于 2013-5-4 22:36
你好 先谢谢你提供的程序  可是刚测试还是不行 在SSOP24上试的  不能关内部RC  一关用外部晶振就死了 写 ...


内部RC不能关,可以直接切换到外部晶振上去的。这个时候只要保证内部RC在运行写操作就不会错误。
我试过了这个程序,在LQFP32下运行完全正常。

出0入0汤圆

发表于 2013-5-4 22:40:32 | 显示全部楼层
另外说下,SOP28不是外振问题,是复位线问题。具体就是内部RC在晶振启动后被自动关闭。结果复位后导致了系统自动切换到不存在的内部RC中。后果就是死机。

出0入0汤圆

 楼主| 发表于 2013-5-4 22:42:39 | 显示全部楼层
xwkm 发表于 2013-5-4 22:38
内部RC不能关,可以直接切换到外部晶振上去的。这个时候只要保证内部RC在运行写操作就不会错误。
我试过 ...

内部RC 与外部晶振同时工作  那么系统时钟源来自那个?

出0入0汤圆

发表于 2013-5-4 23:14:29 | 显示全部楼层
liujian6f 发表于 2013-5-4 22:42
内部RC 与外部晶振同时工作  那么系统时钟源来自那个?

看EXTMSEL位。为1就是外振,0就是内帧。

出0入0汤圆

 楼主| 发表于 2013-5-4 23:35:18 | 显示全部楼层
xwkm 发表于 2013-5-4 23:14
看EXTMSEL位。为1就是外振,0就是内帧。

非常感谢!刚编了下程序 测试通过了  内部RC一直开着就好了!

出0入0汤圆

 楼主| 发表于 2013-5-4 23:40:20 | 显示全部楼层
void clock_init()
{
  PMCR=0X31;
delayms(10);
//  PMCR=0X30;屏蔽掉这句 问题就解决了   
  CLKPR=0X80;
  CLKPR=0X80;  
}
不知道这样子功耗会不会增加  还好现在对功耗没要求 就不去深究了 有机会再测试了

出0入0汤圆

发表于 2013-5-5 08:55:45 | 显示全部楼层
本帖最后由 xwkm 于 2013-5-5 09:02 编辑
liujian6f 发表于 2013-5-4 23:40
void clock_init()
{
  PMCR=0X31;


功耗肯定要比单独外部晶振或者单独内部RC高一点的。
顺带说下,LGT正式片的外振从启动后就是打开的:

如果是工程片的话建议打开外振后进行延时再去切换时钟,你这种切换方式不算很安全。因为PMCR=0x31是置位了EXTMSEL位,系统时钟都过去了延时也无意义了。
应该先清除OSCMEN(对于工程片是置位OSCMEN),延时,然后清除LFEN,最后打开EXTMSEL。改变分频。这样才是正确的。
说明书上说过FLASH操作时钟是靠内部的RC产生的。所以关闭内部RC当然不能操作FLASH啦。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-5-5 09:51:37 来自手机 | 显示全部楼层
xwkm 发表于 2013-5-5 08:55
功耗肯定要比单独外部晶振或者单独内部RC高一点的。
顺带说下,LGT正式片的外振从启动后就是打开的:


非常感谢  你的解答  谢谢

出0入0汤圆

发表于 2013-5-5 11:21:01 | 显示全部楼层
不用客气。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-11 18:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表