搜索
bottom↓
回复: 13

08A写EEPROM遇到奇怪问题.-----时间问题

[复制链接]

出0入0汤圆

发表于 2013-7-23 05:29:43 | 显示全部楼层 |阅读模式
在做灯控系统,用的08A-sop8芯片.
程序写好了,但发现一开始的时候,灯都会闪几灯,一直对程序进行分析,最终发现是写EEPROM时引起的.

现在写了个实验模式,LED每10MS反转一次.然后我的程序要求在第100MS,300MS,3S的时候向EEPROM写一个字节的数据.

问题来了.写EEPROM写数据的时候,不知道是不是子程序占用时间过长,在以述三个时间的时候,能看到LED闪一下.意思就是,本来LED亮10MS,灭10ms,在第100MS的时候写EEPROM,刚好LED在灭10MS的状态,这时不知道是不是写EEPROM占用时间过长,LED灭的时候超过10ms,就会明显看到LED灭一下.(本来10MS反转一次,看到的LED是半亮状态的,不细心不会看到闪烁,只是半亮状态)

在上述三个时间写EEPROM的时候,LED都会灭一下.


然后一步步分析可能出现问题的语句,最后注释掉"EEDR=data;"这句后,就完全正常了,难道这句占用时间太多???有谁能帮我解决一下这个问题吗?

注:EEPROM子程序是完全照搬LGT手册上的例程,前后加多开关全局中断的指令.

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2013-7-23 05:48:53 | 显示全部楼层
LGT单片机,有内部EEPROM读写的硬件电路吧?应该数据送进去了,自动读写吧?PC指针不会停止在等待吧?

而且我上面注释掉就正常的那句,只是传送数据到寄存器而已,是不是我写错了什么?

出0入0汤圆

 楼主| 发表于 2013-7-23 05:52:04 | 显示全部楼层
我在想,LGT是利用程序FLASH做EEPROM的,是不是在写EEPROM的时候,程序PC指针指向EEPROM的地址,从而本身的程序暂停运行了.

出0入0汤圆

发表于 2013-7-23 09:18:27 | 显示全部楼层
sballbobo 发表于 2013-7-23 05:52
我在想,LGT是利用程序FLASH做EEPROM的,是不是在写EEPROM的时候,程序PC指针指向EEPROM的地址,从而本身的程序 ...

是的, 内部的E2PROM是用FLASH模拟出来的, 当写E2PROM时, PC会hold住,直到写完成。 一次写操作的时间在30~40ms左右。

出0入0汤圆

 楼主| 发表于 2013-7-23 15:18:38 | 显示全部楼层
LGT 发表于 2013-7-23 09:18
是的, 内部的E2PROM是用FLASH模拟出来的, 当写E2PROM时, PC会hold住,直到写完成。 一次写操作的时间 ...

难怪了。30-40MS刚好看到LED闲一下。这个有什么好的解决办法?在EEPROM读写的时候也能做到其它程序照常运行?

出0入0汤圆

发表于 2013-7-23 23:48:16 | 显示全部楼层
sballbobo 发表于 2013-7-23 15:18
难怪了。30-40MS刚好看到LED闲一下。这个有什么好的解决办法?在EEPROM读写的时候也能做到其它程序照常运 ...

外挂EEP咯……

出0入0汤圆

发表于 2013-7-23 23:48:59 | 显示全部楼层
另外就是建议用PWM控制灯。这样就不会闪了

出0入0汤圆

 楼主| 发表于 2013-7-24 17:30:05 | 显示全部楼层
xwkm 发表于 2013-7-23 23:48
外挂EEP咯……

可以外挂的话就有更便宜的芯片了,呵呵。体积限制啊。

出0入0汤圆

 楼主| 发表于 2013-7-24 17:35:32 | 显示全部楼层
xwkm 发表于 2013-7-23 23:48
另外就是建议用PWM控制灯。这样就不会闪了

写EEPROM时,PC指针应该是停止了,也就是说程序不会运行,那么那些延时什么的,都会暂停下来,原来延时10MS,就会变成30-40MS了,就是这里出现闪烁的现像了。所以用硬件PWM,应该也是一样。我现在是用软件PWM控制渐变,但有其它模式也是正常灯正常灭的。

出0入0汤圆

发表于 2013-7-24 23:38:53 | 显示全部楼层
那么暂存下数据。等待系统稳定后再写嘛

出0入0汤圆

 楼主| 发表于 2013-7-25 04:13:00 | 显示全部楼层
xwkm 发表于 2013-7-24 23:38
那么暂存下数据。等待系统稳定后再写嘛

系统功能限制,要在3秒左右保存一个数据.而如果灯是快闪模式,或是渐变模式,这时就很容易看到灯""闪""了一下.
我想请教一下,08A里面504字节的EEPROM,是不是一次全部擦除的?例如在地址0已经有一个数据1,我在地址1写数据的时候,他是不是先全部擦出504字节的空间,然后写地址0,再写地址1?是不是在504字节空间内,任何一个位置有数据,那么其它位置写数据的时候,都会先全部擦除?
我现在是想了解清楚里面的运行过程,看有没有办法分步操作,尽量减小这个暂停时间,只要不让用户擦觉出来就行.

出0入25汤圆

发表于 2013-7-25 08:03:37 | 显示全部楼层
sballbobo 发表于 2013-7-25 04:13
系统功能限制,要在3秒左右保存一个数据.而如果灯是快闪模式,或是渐变模式,这时就很容易看到灯""闪""了一 ...

那是不可能的。 504 total erase!

Flash 模拟一般是差除一页,然后写一页。30_40ms的确慢了很多。

出0入0汤圆

发表于 2013-7-25 08:49:51 | 显示全部楼层
sballbobo 发表于 2013-7-25 04:13
系统功能限制,要在3秒左右保存一个数据.而如果灯是快闪模式,或是渐变模式,这时就很容易看到灯""闪""了一 ...

不是。是如果侦测到你写的位置本身的值AND你写入的值不等于你写入的值的话,就擦除重写。
所以技巧是你可以在不同的地址上存值。这样写入时间就会变短。或者使用1<<数据法写。

出0入0汤圆

 楼主| 发表于 2013-7-27 03:16:06 | 显示全部楼层
xwkm 发表于 2013-7-25 08:49
不是。是如果侦测到你写的位置本身的值AND你写入的值不等于你写入的值的话,就擦除重写。
所以技巧是你可 ...

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

本版积分规则

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

GMT+8, 2024-4-27 08:41

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

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