Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS-280 Dr. Mark L. Hornick 1 EEPROM Memory Storing, Reading, and Writing.

Similar presentations


Presentation on theme: "CS-280 Dr. Mark L. Hornick 1 EEPROM Memory Storing, Reading, and Writing."— Presentation transcript:

1 CS-280 Dr. Mark L. Hornick 1 EEPROM Memory Storing, Reading, and Writing

2 CS-280 Dr. Mark L. Hornick 2 Atmega32 Memory Address bus (16-bit in Atmega32) A unique 16-bit address references each memory byte. Data bus (8-bit) Volatile – RAM (fast RW) SRAM (temp data store) DRAM  Nonvolatile – ROM (fast R – slow W)  ROM  PROM  EPROM  EEPROM (permanent data store)  Flash ROM (program store)

3 CS-280 Dr. Mark L. Hornick 3 EEPROM is non-volatile memory Power does not have to be supplied to maintain values stored in EEPROM EEPROM values are maintained when power is shut off EEPROM is (generally) not affected if Program Memory is rewritten (new program loaded) EEPROM can be written/erased at least 100,000 times

4 CS-280 Dr. Mark L. Hornick 4 EEPROM Memory Addressing EEPROM is organized and accessed in bytes, as in SRAM There are 1024 bytes of EEPROM Each byte has a unique 16-bit address But since there are only 1024 bytes of EEPROM, only 10 bits are used The first byte of EEPROM is at address 0x0000 As compared to SRAM, which starts at 0x0060 Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 0x0000 0x0001 0x0002 0x0003 0x0004... 0x03FE 0x03FF Byte 1022 Byte 1023

5 CS-280 Dr. Mark L. Hornick 5 Data can be stored in EEPROM via the.db directive.ESEG ; switch further directives to EEPROM segment.ORG0x0000 ; set addr for start of EEPROM x1:.db 1,5 ; alloc 2 bytes in EEPROM with initial values of 1 and 5 title:.db ‘c’,’e’,’2’,’8’,’0’, ‘0’,0 ; allocate 7 bytes in EEPROM course:.db “CE-2800”, 0 ; allocate 8 bytes in EEPROM Note assembler does NOT automatically insert a NULL char at the end of the string The.db n,m,… (“define byte”) directive tells the assembler to allocate and store the bytes n,m… in EEPROM The initial values of the memory are specified, as with Program Memory

6 The AVR Assembler creates a separate file (with the.EEP extension) containing EEPROM data You have to load the EEPROM values as a separate step in AVR Studio Recall: The.HEX file contains opcodes for the program as well as Flash memory data CS-280 Dr. Mark L. Hornick 6

7 Downloading EEPROM data in AVR Studio From the Debug menu, select the “Up/Download Memory” command The debugger must be running for this command to become enabled The EEPROM data is in an “.eep” file, NOT the “.hex” file CS-280 Dr. Mark L. Hornick 7

8 CS-280 Dr. Mark L. Hornick 8 Reading data from EEPROM There are no specific instructions to load (read) data from EEPROM Instead, EEPROM is accessed as if it were an I/O Subsystem EEPROM is accessed via Special-purpose I/O Registers EECR – Control Register EEARH – Address Register (high 2 bits) EEARL – Address Register (low 8 bits) EEDR - Data Register

9 Using EEPROM I/O Registers to read EEPROM data CS-280 Dr. Mark L. Hornick 9.ESEG; put data in EEPROM values:.db 1,2,3,4,5.CSEG CLRtemp OUTEECR, temp ; clear EECR bits ; load the address of EEPROM data we want to read LDI ZL, LOW(values) ; low 8 bits of the address LDI ZH, HIGH(values) ; high 2 bits OUTEEARL, ZL; set EEPROM address OUTEEARH, ZH ;next, tell the EEPROM we want to read it SBIEECR, 0; set EERE=1 (read enable) ; after SBI, the EEPROM value is in the EEDR register ; finally, move the value in EEDR to a regular register INtemp, EEDR ; move data to temp register

10 Using EEPROM I/O Registers to write EEPROM data CS-280 Dr. Mark L. Hornick 10.ESEG; reserve space in EEPROM values:.byte 5.CSEG CLRtemp OUTEECR, temp ; clear EECR bits ; load the address of EEPROM data we want to write LDI ZL, LOW(values) ; low 8 bits of the address LDI ZH, HIGH(values) ; high 2 bits OUTEEARL, ZL; set EEPROM address OUTEEARH, ZH Wait: SBIC EECR, 1 ; check if EEWE is clear (write not in progress) RJMP wait ; loop back if not clear (takes several ms) LDItemp, ‘a’ ; the value to be written to EEPROM OUTEEDR, temp ; move the value to EEDR SBIEECR, 2; bit EEMWE: master write enable ; note: EEMWE is cleared automatically after 4 clock cycles SBIEECR, 1 ; bit EEWE: clr’d automatically after write EEWE is cleared automatically after the byte is actually written, but each EEPROM write takes several ms, so EEWE will remain set for some time


Download ppt "CS-280 Dr. Mark L. Hornick 1 EEPROM Memory Storing, Reading, and Writing."

Similar presentations


Ads by Google