5.3.2EEPROM地址寄存器高 - EEARH
Bit
76543210-------EEAR8EEARH
Read/WriteRRRRRRRR/WInitial Value
X
X
X
X
X
X
X
X
?位7 .. 1 - Res6 .. 0:保留位
这些位保留供将来使用,总是读为0 ATtiny25/45/85.?位0 - EEAR8:EEPROM的地址
EEPROM地址寄存器 - EEARH - 指定在高EEPROM地址
128/256/512字节的EEPROM空间. EEPROM数据字节之间0线性寻址和127/255/511. EEAR的初始值是不确定的.一个适当的值之前,必须书面EEPROM的可被访问.
5.3.3EEPROM地址寄存器 - EEARL
Bit
76543210EEAR7
EEAR6
EEAR5EEAR4EEAR3EEAR2EEAR1EEAR0EEARL
Read/WriteRRR/WR/WR/WR/WR/WR/WInitial Value
X
X
X
X
X
X
X
X
?位7 .. 0 - EEAR7 .. 0:EEPROM的地址
EEPROM地址寄存器 - EEARL - 指定在低EEPROM地址
128/256/512字节的EEPROM空间. EEPROM数据字节之间0线性寻址和127/255/511. EEAR的初始值是不确定的.一个适当的值之前,必须书面EEPROM的可被访问.
5.3.4
EEPROM数据寄存器 - EEDR
Bit
76543210EEDR7
EEDR6EEDR5EEDR4EEDR3EEDR2EEDR1EEDR0EEDR
Read/WriteR/WR/WR/WR/WR/WR/WR/WR/WInitial Value
X
X
X
X
X
X
X
X
?位7 .. 0 - EEDR7 .. 0:EEPROM数据
对于EEPROM写操作EEDR寄存器包含要写入的数据
EEPROM中的寄存器EEAR给出的地址. EEPROM的读操作中,EEDR包含从EEPROM在由EEAR给出的地址读出的数据.
5.3.5
EEPROM控制寄存器 - EECR
Bit
76543210–
–EEPM1EEPM0EERIEEEMPEEEPEEEREEECR
Read/WriteRRR/WR/WR/WR/WR/WR/WInitial Value
0
0
X
X
0
0
X
0
?位7 - Res:保留位
该位保留供将来使用,将来也永远读为0 ATtiny25/45/85.对于未来的AVR器件的兼容性,总是写该位为零.读完后,屏蔽了这一点.
16
ATtiny25/45/85
7598H–AVR–07/09
ATtiny25/45/85
位6 - Res:保留位
该位是保留在ATtiny25/45/85,将来也永远读为零.第5位,4 - EEPM1和EEPM0:EEPROM编程模式位
EEPROM编程模式位设置定义的编程操作,将
对EEPE写入时触发.这是可能的程序数据在一个原子操作(擦除旧值和方案的新价值)或在两个不同的分裂擦除和写入操作操作.编程时间为不同的模式显示在表5-1.虽然EEPE设置,任何写EEPMn将被忽略.在复位期间,EEPMn位将被重置为0b00除非EEPROM处于编程.
表5-1.
EEPM1
0011
EEPROM的模式位
EEPM0
0101
程序设计
Time
3.4毫秒1.8毫秒1.8毫秒–
作业
擦除和写入一个操作(原子操作)仅擦除只写
留作将来使用
位3 - EERIE:EEPROM就绪中断使能
清零EERIE将使能EEPROM准备好中断若SREG的I位被置位.写作
EERIE则禁止中断. EEPROM准备好中断产生一个恒定的中断时,非易失性存储器编程就绪.
位2 - EEMPE:EEPROM主机编程使能
该EEMPE位决定EEPE写入一个才会有效果与否.
当EEMPE设置,在四个时钟周期内设置EEPE将编程EEPROM的指定地址.如果EEMPE是零,设置EEPE将没有任何效果.当EEMPE已被写入到一个由软件,硬件清除该位为零后4个时钟.
位1 - EEPE:EEPROM程序启用
EEPROM的编程使能信号EEPE是编程使能信号到EEPROM中.当EEPE被写入时,EEPROM将根据EEPMn位的设置进行编程.
该EEMPE位必须被写入到一个前一个合乎逻辑的写入EEPE,否则没有
EEPROM的写操作为止.当写访问时间已过,EEPE位由硬件清零.当EEPE已定,CPU会停止两个时钟周期的下一条指令执行之前.
位0 - EERE:EEPROM读使能
EEPROM的读使能信号 - EERE - 是读选通到EEPROM中.当COR-RECT地址设置在EEAR寄存器的EERE位必须写入一个触发
EEPROM中读取. EEPROM中读取只需要一条指令,并请求的数据立即可用.当执行EEPROM读操作时,CPU会停止工作4个周期的下一个指令执行之前.用户在开始读操作tion前,应检测EEPE.如果一个写操作正在进行中,它既不是可以读取EEPROM,也无法改变寄存器EEAR.
17
7598H–AVR–07/09
5.3.6基本字节编程使用基本字节编程是最简单的模式.当写一个字节到EEPROM中,用户必须将地址写入寄存器EEAR和数据到EEDR寄存器.如果否则EEPMn位为零,EEPE的写操作(在4个周期EEMPE写完后)将触发擦除/写操作.无论是擦除和写入周期完成一次操作和总体规划时间的单位是表20-1.EEPE位会保持到擦除和写入操作完成.当设备忙于编程,这是不可能做任何其他EEPROM操作.5.3.7拆分字节编程这是可能的分裂擦除和写入操作分为两个周期.如果系统需要的时间(典型地,如果电源电压下降),一些有限的期间短的存取时间,这可能是有用的.为了利用这种方法的优点,它是必需的要写入的位置已在写入操作之前被擦除.但由于擦除和写入操作是分离的,这是可以做到的擦除操作时,系统允许进行时间临界操作(通常在掉电后).5.3.8Erase要擦除一个字节,地址必须被写入EEAR.若EEPMn为0b01,写EEPE(在EEMPE之后的四个周期写入)将触发擦除操作只(程序鸣时间见表20-1).EEPE位会保持到擦除操作完成.当设备忙于编程,这是不可能做任何其他EEPROM操作.5.3.9Write要编写一个单元,用户必须将地址写入EEAR和将数据写入EEDR.如果EEPMn位为0b10,对EEPE写入(在4个周期EEMPE写完后)将触发写操作(编程时间见表20-1).EEPE位会保持设置直到写操作完成.如果要被写入的位置没有被写入之前擦除,存储的数据必须被视为丢失.当设备忙于编程,这是不可能做任何其他EEPROM操作.标定的振荡器用于EEPROM定时.确保振荡器频率 -频率是内中所述的要求上 - “OSCCAL振荡器校准寄存器”第26页.下面的代码分别用汇编和C函数进行擦除,写入或原子写入EEPROM中.该示例假定中断处于用户控制(例如,通过禁用全局中断),因而不会发生中断执行这些函数的过程中18ATtiny25/45/857598H–AVR–07/09ATtiny25/45/85
汇编代码例程
EEPROM_write:;等待上一次写操作结束sbicrjmpldioutoutoutsbisbiret
EECR,EEPEEEPROM_write
r16, (0EEPM1)|(0EEPM0)EECR,R16EEARL,R17EEDR,r16EECR,EEMWEEECR,EEWE
;设置编程模式;设置地址(R17)地址寄存器;写数据(R16)到数据寄存器;写逻辑1 EEMWE;启动写操作EEWE
C代码示例
void{/*;/*
EEPROM_write(无符号
char
ucAddress,
无符号字符型*/
ucData)
等待上一次写操作结束而(EECR&(1EEPE))
设置编程模式* /
EECR = (0<>EECR =(0EEPM1)|(0EEPM0)/ *设置地址和数据寄存器* /EEARL = ucAddress;EEDR = ucData;/*
写逻辑1 EEMWE * /
EECR | =(1EEMWE);/ *启动写操作EEWE * /EECR | =(1EEWE);}
19
7598H–AVR–07/09
下面的代码示例说明如何用汇编和C函数来读取EEPROM.这些示例假设中断控制,因此不会发生中断执行这些函数的过程中.汇编代码例程
EEPROM_read:;等待上一次写操作结束sbicEECR,EEPErjmpEEPROM_read;设置地址(R17)地址寄存器outEEARL,R17;开始EERE以读sbiEECR,EERE;读取数据寄存器中的数据inr16,EEDR
ret
C代码示例
无符号字符型EEPROM_read(无符号
char
ucAddress)
{
/ *等待上一次写操作结束* /而(EECR&(1EEPE));
/ *设置地址寄存器* /EEARL = ucAddress;/*
开始EERE以读* /
EECR | =(1EERE);/ *从数据寄存器返回数据* /返回EEDR;}
5.3.10预防腐败的EEPROM
在低V时期CC,EEPROM的数据可以被损坏,因为电源电压
太低,CPU和正确操作的EEPROM中.这些问题是一样的,使用独立的EEPROM器件,以及相同的设计方案应该被应用.
EEPROM数据损坏有两种情况可能造成当电压过低.首先,在写过程的EEPROM需要正确操作的最小电压.证券交易委员会ondly时,CPU本身可以执行指令不正确,如果电源电压过低.EEPROM数据损坏的问题可以通过以下方法解决:
保持在电源电压不足的时期AVR RESET信号(低).这可以通过使内部欠压检测器(BOD)来完成.如果内部的检测电平董事会无法满足要求的检测水平,外部低V匹配CC复位保护电路可以被使用.如果发生复位而写操作进行中,写操作将完成规定的电源电压是足够的.
20
ATtiny25/45/85
7598H–AVR–07/09