0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino EEPROM设置初始化

454398 来源:wv 2019-10-21 17:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:什么是EEPROM

EEPROM是一个很小的存储器,即使在Arduino板断电时,其值也会保留。这就像一个很小的硬盘驱动器,因此您可以在下次启动设备时存储参数。根据Arduino板的类型,每个板上的可用存储量会有所不同,例如Uno有1024字节,Mega有4096字节,LilyPad有512字节。

重要的是要注意,所有EEPROM都有有限数量的写周期。 Atmel为Arduino上的EEPROM指定了大约100000写/擦除周期的预期寿命。这听起来好像很多写操作,但是如果您正在循环读取和写入内容,则很容易达到此限制。一旦一个位置被写入和擦除了太多次,它就会开始变得不可靠。它可能无法返回正确的数据,或者无法从相邻位返回值。

步骤2:导入库

要使用此内存,我们首先包括Arduino提供的库。该库提供了两种方法:读取和写入相应的操作。读取功能接受我们要读取的地址,而写入功能接受我们要写入的地址和值。

在我们的示例中,目标是在Arduino的每次启动时准备好一系列的设置,因此我们首先定义要用于存储的数组,并为每个对象定义地址。我们要存储的设置。在我们有1024个可用字节的芯片中,地址位置将从0到1023。

步骤3:设置初始化标志

初始设置默认值的技巧是使用地址之一作为指示,以了解是否已初始化设置。我使用了最后一个地址,因为它通常不用于其他任何地方。如果存储的值中有一个“ T”字符,loadSettings函数将首先检查该位置,如果没有,它将通过设置进行设置,并为每个值写入初始值。完成后,它将立即将跟踪初始化设置的位置的值设置为“ T”字符,并且下次打开Arduino电源时,我们将不再初始化值,而是将保存的数据读入

步骤4:更新设置

要更新值,我们可以使用我们拥有的write函数关于初始化,但更好的方法是使用提供的更新功能。该功能的作用是,它首先检查我们要保存的值是否与EEPROM中已经存在的值相同,如果不保存则不更新。这样,它会尝试减少写操作的次数,以延长EEPROM的寿命。

步骤5:尽情享受吧!

我希望这个Instructable对您有帮助,并且您设法学到了一些东西。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • EEPROM
    +关注

    关注

    9

    文章

    1129

    浏览量

    85551
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195995
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瀚海微SD NAND TF卡硬件识别与初始化类问题探讨

    在瀚海微SD NAND/TF卡的实际应用中,硬件识别与初始化是保障设备正常运行的首要环节,该环节出现故障会直接导致存储卡无法投入使用,尤其在工业控制、车载设备等关键场景中,可能引发设备停机、数据丢失
    的头像 发表于 11-18 09:58 143次阅读
    瀚海微SD NAND  TF卡硬件识别与<b class='flag-5'>初始化</b>类问题探讨

    串口通信基石:Air8000下Modbus RTU串口初始化详解!

    串口初始化是Modbus RTU通信稳定可靠的关键起点。本篇深入剖析Air8000开发板串口参数配置、初始化代码实现及调试要点,结合master_rtu示例,分享实际操作中的经验与避坑指南,让您
    的头像 发表于 10-28 16:33 1450次阅读
    串口通信基石:Air8000下Modbus RTU串口<b class='flag-5'>初始化</b>详解!

    NVMe高速传输之摆脱XDMA设计33:初始化功能验证与分析

    模型。 在这里以最小存储子系统模型为例说明对初始化功能的验证与分析。 在本节测试用例中, 设置桥设备模型不启用 BAR 空间, 设置 NVMe 设备模型 BAR0 空间大小为 64KB, 不启用其余
    发表于 10-08 08:02

    GraniStudio:IO初始化以及IO资源配置例程

    1.文件运行 导入工程 双击运行桌面GraniStudio.exe。 通过引导界面导入IO初始化以及IO资源配置例程,点击导入按钮。 打开IO初始化以及IO资源配置例程所在路径,选中IO初始化以及
    的头像 发表于 08-22 17:34 752次阅读
    GraniStudio:IO<b class='flag-5'>初始化</b>以及IO资源配置例程

    GraniStudio:初始化例程

    1.文件运行 导入工程 双击运行桌面GraniStudio.exe。 通过引导界面导入初始化例程,点击导入按钮。 打开初始化例程所在路径,选中初始化.gsp文件,点击打开,完成导入。 2.功能
    的头像 发表于 08-22 16:45 713次阅读
    GraniStudio:<b class='flag-5'>初始化</b>例程

    MCU外设初始化:为什么参数配置必须优先于使能

    在微控制器领域,初始化参数配置阶段至关重要。此时,虽无电源驱动,但微控制器在使能信号到来前,借初始化参数配置这一精细步骤,开启关键准备进程。初始化参数配置如同物理坐标锚定、逻辑指令部署、内在秩序预设
    的头像 发表于 08-13 10:38 579次阅读

    定义IO初始化结构体

    由上述IOPORT相关功能的枚举类型我们可以知道,在对IOPORT模块进行初始化时需要根据情况配置它们。因此我们定义一个IOPORT初始化的结构体类型IOPORT_Init_t,它的成员包括了由上述所有枚举类型所声明的变量,因此该结构体类型的变量可以包含IOPORT的相关
    的头像 发表于 07-16 16:26 1120次阅读

    IM系列设备过载故障:界面初始化终止的诊断流程与修复指南

    当 IM 系列设备出现过载故障导致界面初始化终止时,通常表现为设备启动后操作界面无显示、指示灯异常闪烁或初始化进度条停滞不前,同时可能伴随设备运行异响或异常发热。初步判断时,可观察设备是否有错
    的头像 发表于 06-28 09:47 948次阅读

    IM 系列设备过载保护机制下界面初始化中断的底层逻辑与解决方案

    一、过载保护机制与界面初始化的关联基础 IM 系列设备的过载保护机制是保障设备安全运行的核心功能,其通过传感器实时采集设备运行参数,如电流、电压、温度、系统资源占用率等。一旦这些参数超出预设阈值
    的头像 发表于 06-27 09:58 373次阅读

    音频无法初始化是怎么回事?

    初始化代码如图 软硬件版本信息 rtos_only01科技开发板 错误日志
    发表于 04-27 06:53

    STM32CubeMX用于STM32配置和初始化C代码生成

    电子发烧友网站提供《STM32CubeMX用于STM32配置和初始化C代码生成.pdf》资料免费下载
    发表于 02-26 17:32 678次下载

    EE-359:ADSP-CM40x启动时间优化和器件初始化

    电子发烧友网站提供《EE-359:ADSP-CM40x启动时间优化和器件初始化.pdf》资料免费下载
    发表于 01-13 16:33 0次下载
    EE-359:ADSP-CM40x启动时间优化和器件<b class='flag-5'>初始化</b>

    EE-88:使用21xx编译器在C中初始化变量

    电子发烧友网站提供《EE-88:使用21xx编译器在C中初始化变量.pdf》资料免费下载
    发表于 01-13 15:54 0次下载
    EE-88:使用21xx编译器在C中<b class='flag-5'>初始化</b>变量

    OMAP5912多媒体处理器初始化参考指南

    电子发烧友网站提供《OMAP5912多媒体处理器初始化参考指南.pdf》资料免费下载
    发表于 12-17 16:20 0次下载
    OMAP5912多媒体处理器<b class='flag-5'>初始化</b>参考指南

    STM32F407 MCU使用SD NAND 不断电初始化失效解决方案

    STM32F407微控制器单元(MCU)与SD NAND的结合提供了强大的存储解决方案。然而,不断电初始化失效问题可能会导致系统稳定性和数据完整性受损。我们将STM32F407与SD NAND集成时可能遇到的初始化问题,并提供专业的解决方案。
    的头像 发表于 12-11 10:51 1495次阅读
    STM32F407 MCU使用SD NAND 不断电<b class='flag-5'>初始化</b>失效解决方案