0% found this document useful (0 votes)
64 views

Eeprom

EEPROM Memory 4K bytes of EEPROM exist on the Mega128 in a separate address space that can only be accessed one byte at a time using special registers. Write access time is very slow at approximately 101,000 cycles per byte while read time is fast at one cycle. Code examples are provided for writing to EEPROM before power down and reading from EEPROM on startup.

Uploaded by

Quenta C. Edwin
Copyright
© © All Rights Reserved
Available Formats
Download as ODP, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views

Eeprom

EEPROM Memory 4K bytes of EEPROM exist on the Mega128 in a separate address space that can only be accessed one byte at a time using special registers. Write access time is very slow at approximately 101,000 cycles per byte while read time is fast at one cycle. Code examples are provided for writing to EEPROM before power down and reading from EEPROM on startup.

Uploaded by

Quenta C. Edwin
Copyright
© © All Rights Reserved
Available Formats
Download as ODP, PDF, TXT or read online on Scribd
You are on page 1/ 7

EEPROM Memory

4K bytes of EEPROM exist on the Mega128 EEPROM exists in a separate address space Can only address single bytes sing special registers EEPROM !ddress Register "EE!R#$ EE!R%& EEPROM 'ata Register "EE'R& EEPROM Control Register "EECR& End rance is 1(($((( cycles per byte )rite access time is *ery slo+, approx- 8-.m/ "101$((( cycles at 11Mh23& Read time is fast, one cycle CP4 halts temporarily +hen EEPROM is read or +ritten "254 cycles&

EEPROM Memory
EEPROM !ddress Registers EE!R#$ EE!R%

EEPROM 'ata Register EE'R

EEPROM Control Register EECR

master +rite enable +rite enable

EEPROM Memory
EEPROM )rite !ccess )ait ntil EE)E is 2ero- "pre*io s +rites ha*e completed& %oad EEPROM address register %oad EEPROM data register /et EEM)E "master +rite enable& +hile +riting a 2ero to EE)E)ithin 4 CP4 cycles$ set EE)E "+rite enable& in control register )hen EE)E has ret rned bac6 to 2ero$ +rite access is done- "78-.m/& 4se eeprom-h ro tines to simplify yo r code,
#include <avr/eeprom.h> eeprom_write_byte (uint8_t *addr,uint8_t value); eeprom_write_word (uint16_t *addr,uint16_t value);

EEPROM Memory
!n acti*e on8off circ it,

EEPROM Memory
EEPROM +rite before po+er do+n
if(debounce_on_off_switch() == 1){ //was on/off switch pushed? save_settings(); //save user volume kill_power(); //spin waiting for powerdown //************************************************************* // save_settings // //Saves the user settings into EEPROM when power is going down. //Interrups are disabled when this process is started. // void save_settings() { eeprom_write_byte(&eeprom_alarm_volume, alarm_volume); }//save_settings //*************************************************************

EEPROM Memory
EEPROM +rite before po+er do+n "cont-&
//************************************************************* // kill_power // //Turns off the NPN transistor that keeps the P-Ch MOSFET //turned on after the on/off pushbutton is released. Vcc to //system will then drop once switch is released. System is put //into an endless spin loop till the power goes away. void kill_power() { PORTD &= ~(1<<PD0); //set portD bit 0 to 0, killing power while(1){}; //spin till death }//kill_power //*************************************************************

EEPROM Memory
EEPROM Read !ccess Ma6e s re EE)E is not set- "+rite in progress& %oad EEPROM address register "EE!R&/et EERE "read enable& bit in control register EECR&'ata +ill be a*ailable one cycle later in the data register "EE'R&
#include <avr/eeprom.h

main(){
//restore the previous alarm and volume levels alarm_volume = eeprom_read_byte(&eeprom_alarm_volume);

You might also like