找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1027|回复: 10
打印 上一主题 下一主题
收起左侧

单片机写EEPROM需要关闭中断吗?

[复制链接]
跳转到指定楼层
楼主
ID:997026 发表于 2023-7-23 11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位好,

现在用一款国产32bit M0核MCU,外部外挂了一颗EEPROM,AT24C04,IO口模拟I2C接口通信,每写一次数据都会保存到EEPROM,写入和保存数据都使用了均衡算法。

我的问题是,写入数据时,需要关闭中断吗?我的程序中开启了1ms定时器中断,听说当写入数据时,如果被中断打断,将导致数据丢失。
现在我是没管它,没关中断,就直接写的,测试了几个月,没有发现一次数据写入有问题的,所以现在我也搞不懂到底要不要关闭中断。
如果关闭中断,会不会导致另一个问题,因为我的按键都是放在中断扫描的,关掉后会不会导致按键又出问题了。

求教有这方面经验的大神指教。

谢谢

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:404160 发表于 2023-7-23 13:01 | 只看该作者
1.中断处理时间很短。2.软件I2C速率不高(慢速)。就不需要关中。当然,中断产生后,对要处理的事件做标志,然后,在中断外,处理事件,就不会有问题

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:883242 发表于 2023-7-23 15:46 | 只看该作者
EEPROM写一次要10ms,跟中断有什么关系?除非你的中断处理程序运行时间超过10ms。
回复

使用道具 举报

地板
ID:401564 发表于 2023-7-23 15:49 | 只看该作者
如果你是用汇编,那就要关闭中断,因为汇编的中断现场处理是要人为去写的
如果你用的是C语言,不需要关闭中断,C语言的中断的现场处理是编译器自动写的
回复

使用道具 举报

5#
ID:1085441 发表于 2023-7-23 17:07 | 只看该作者
飞云居士 发表于 2023-7-23 13:01
1.中断处理时间很短。2.软件I2C速率不高(慢速)。就不需要关中。当然,中断产生后,对要处理的事件做标志 ...

是的,不需要关中断,我用的I2C器件就没有关中断
回复

使用道具 举报

6#
ID:57657 发表于 2023-7-23 18:10 | 只看该作者
不需要关闭,写进去再读出来,失败重复5次。
回复

使用道具 举报

7#
ID:883242 发表于 2023-7-23 18:18 | 只看该作者
npn 发表于 2023-7-23 18:10
不需要关闭,写进去再读出来,失败重复5次。

eeprom只能把1写成0,想要把0写成1需要先擦除,那么问题来了,如何判断写错了的字节可不可以再写进去?算法?
回复

使用道具 举报

8#
ID:57657 发表于 2023-7-23 18:27 | 只看该作者
Hephaestus 发表于 2023-7-23 18:18
eeprom只能把1写成0,想要把0写成1需要先擦除,那么问题来了,如何判断写错了的字节可不可以再写进去?算 ...

AT24C系列EEPROM没有扇区的说法,不需要擦除,直接写就可以了。
回复

使用道具 举报

9#
ID:612392 发表于 2023-7-24 08:11 | 只看该作者
Hephaestus 发表于 2023-7-23 18:18
eeprom只能把1写成0,想要把0写成1需要先擦除,那么问题来了,如何判断写错了的字节可不可以再写进去?算 ...

只有STC的伪EEPROM,才要这样操作。正经的EEPROM都是可以0写1的
回复

使用道具 举报

10#
ID:320306 发表于 2023-7-24 09:26 | 只看该作者
不需要关中断,IIC速率不高!
回复

使用道具 举报

11#
ID:1034262 发表于 2023-7-24 10:04 | 只看该作者
不需要关中断,但是每次写之后,写入时间要5ms以上,这段时间不能访问EEPROM。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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