当前位置:首页 > 单片机 > 单片机
[导读]AVR单片机内部集成了EEPROM,但是在GCC写编写EEPROM应用程序的时候,经常会出现读写EEPROM时程序出错,或重启等不正常现象。在软件仿真时也许结果是正确的,但是在片上运行的时候就不正常。困扰很久,终于发现原因在

AVR单片机内部集成了EEPROM,但是在GCC写编写EEPROM应用程序的时候,经常会出现读写EEPROM时程序出错,或重启等不正常现象。在软件仿真时也许结果是正确的,但是在片上运行的时候就不正常。困扰很久,终于发现原因在于编译器,已经我们对EEPROM操作说明的理解不正确或不仔细。

操作EEPROM对时序的要求较高。更加Datasheet里的写操作范例程序:

while(EECR & (1<

EEAR = address; //设置地址和数据寄存器

EEDR = data;

EECR |= (1

EECR |= (1<

以上代码在GCC中的编译结果,发现 EECR |= (1<

while(EECR & (1<

EEAR = address; //设置地址和数据寄存器

EEDR = data;

asm volatile("SBI 0x1C,2 \n\t");

asm volatile("SBI 0x1C,1 \n\t");

对于读操作,发现采用Datasheet范例程序:

while(EECR & (1<

EEAR = address; //设置地址寄存器

EECR |= (1<

return EEDR; //自数据寄存器返回数据

进行单次操作似乎正常,但是连续操作可能导致程序个别运行不正常,现象象重启,但通过逻辑分析仪跟踪设置启动时序情况看来,又不太象,不知什么原因。采用一下程序段则可以正常运行:

while(EECR & (1<

EEAR = address; //设置地址寄存器

asm volatile("SBI 0x1C,0 \n\t"); //设置EERE 以启动读操作

data = EEDR; //自数据寄存器返回数据

asm volatile("nop \n\t");

asm volatile("nop \n\t");

asm volatile("nop \n\t");

asm volatile("nop \n\t");

注意,读操作后要空4个系统周期后才可执行下个语句(Datasheet有说明)。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

控制寄存器(Control Register)是中央处理器(CPU)中用于管理系统级操作的特殊寄存器,它为操作系统和硬件提供对处理器行为的精细控制。本文从计算机体系结构角度系统阐述控制寄存器的设计原理、功能分类、操作机制...

关键字: 寄存器 处理器

在嵌入式系统开发中,硬件抽象层(Hardware Abstraction Layer,HAL)起着至关重要的作用。它为上层软件提供了统一的硬件访问接口,隐藏了底层硬件的细节,使得软件具有更好的可移植性和可维护性。C++作...

关键字: 嵌入式C++ HAL 寄存器 封装

采用51单片机最小开发板,由8位自制独立按键控制。单片机芯片为STC89C52RC,晶振为@12.000 mhz。8X8LED点阵屏模块由MAX7219驱动,MAX7219包含一个自动扫描电路。你只需要把要显示的数据发送...

关键字: 51单片机 MAX7219 寄存器

电源管理集成电路(PMIC)有益于简化最终应用并缩小其尺寸,也因此备受青睐。然而,当默认启动时序和输出电压与应用要求不符时,就需要定制上电设置。大多数情况下,电路没有可以存储这些设置的非易失性存储器(NVM)。对此,低功...

关键字: 电源管理 集成电路 寄存器

我从Digilent公司拿出了我的Arty Z7板,并在Vivado/Vitis 2021.2中创建了一个项目来让它工作,你可以在我的上一个项目帖子中阅读,我在QDSP-6061的5位数上显示滚动文本,上面写着“Hell...

关键字: 寄存器 AXI4 QDSP-6061 RTL模块

在现代电子设备中,电可擦可编程只读存储器(EEPROM)凭借其独特的存储特性,被广泛应用于各类需要非易失性数据存储的场景。从智能电表、工业控制系统到消费电子产品,EEPROM 承担着存储关键配置信息、校准数据以及用户个性...

关键字: 只读存储器 数据存储 EEPROM

在单片机系统的设计中,复位电路是确保单片机正常工作的关键组成部分。它能够在系统启动时将单片机的内部寄存器和状态设置为初始值,保证单片机从一个确定的状态开始运行。与门芯片作为一种常见的数字逻辑芯片,有时会被应用于单片机复位...

关键字: 复位电路 寄存器 单片机
关闭