clase 14: memoria eeprom. 2009/1 circuitos digitales iii 2010/1 circuitos digitales iii 2010/1...
TRANSCRIPT
Sistemas Digitales IIClase 14: Memoria EEPROM
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Antes de ComenzarAntes de Comenzar
¿Qué vimos anteriormente? Protocolo I2C
P2MAESTROESCLAVO
P1MAESTROESCLAVO
P3SOLO
ESCLAVO
P4SOLO
ESCLAVO
SCL
SDA
P2MAESTROESCLAVO
P1ESCLAVO
P3ESCLAVO
P4ESCLAVO
P4ESCLAVO
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Antes de ComenzarAntes de Comenzar
¿Qué vimos anteriormente? Protocolo I2C
DEVICE 1 DEVICE 2 DEVICE n…
VDD
SCLSDA
10k-47k
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Antes de ComenzarAntes de Comenzar
¿Qué vimos anteriormente? Protocolo I2C
D7 D6 D5 D4 D3 D2 D1 D0 ACKSDA
SCL
MSB LSB
SCL
SDA
Condición de START
SCL
SDA
Condición de STOP
Trama de 8-Bits con ACK
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Antes de ComenzarAntes de Comenzar
¿Qué vimos anteriormente? Protocolo I2C
SDA
SCL
A6 A5 A4 A3 A2 A1 A0 R/W ACK
Generado porEsclavo
MSB LSB
Generado por Maestro
SDA
SCL
D7 D6 D5 D4 D3 D2 D1 D0 ACK
START
STOP
Generado porS/M
MSB LSB
Generado por M/S
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Agenda para la claseAgenda para la clase
11Memorias EEPROM I2C Manipulación de este periférico además de sus características
22Memorias internas Manipulación de EEPROM internas a través de l lenguaje C
33Memorias internas Manipulación de EEPROM externas a través de l lenguaje C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
¿Puedo ser autodidacta?¿Puedo ser autodidacta?
Bibliografía para la clase Jonathan Valvano, Developing Embedded
Software in C Using ICC11/ICC12/Hiware. C for Embedded Systems. Academia Freescale
Semiconductor para Profesores 2004. Documentación sobre los diferentes
periféricos: LCDs, Serial, I2C, TIMERs.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Memorias Externas
Memorias Internas
Memorias EEPROM I2CMemorias EEPROM I2C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Se tienen varias referencias: 24LC02 ó 24LC02B 24LC16 ó 24LC16B 24LC128 ó 24LC128B 24LC256 y muchas más.
Las anteriores son memorias EEPROM de 2k, 16k, 128k y 256k bits.
El tamaño en bytes será de 256 bytes, 2kbytes, 16kbytes y 32kbytes respectivamente.
2kbits256 bytes
2kbits256 bytes
16kbits 2 kbytes
16kbits 2 kbytes
128kbits 16 kbytes
128kbits 16 kbytes
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Direccionando la Memoria (Periférico). Cada memoria tiene una dirección de 7 bits. Se envía después de la condición de START o RE-
START. DA = Device Address. R/W: Indica hacia donde se dirige la siguiente trama
después de enviar DA. M S o S M.
SDA
SCL
DA6 DA5 DA4 DA3 DA2 DA1 DA0 R/W ACK
Generado porEsclavo
MSB LSB
Generado por Maestro
START
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Direccionando la Memoria (Periférico). Normalmente, se compone de 4 bits de ID y 3 bits
para:• Selección de memoria física (1 0 1 0 A2 A1 A0).• Selección de memoria física y bloque (1 0 1 0 A2 B1 B0).• Selección de bloque en de la memoria (1 0 1 0 B2 B1 B0).
24LC
0224L
C02
A0
A1
A2
GND
VDD
WP
SCL
SDA
Bloque 0256 BYTES
$000$0FF
Bloque 1256 BYTES
$100$1FF
Bloque 2256 BYTES
$200$2FF
Bloque 3256 BYTES
$300$3FF
Bloque 4256 BYTES
$400$4FF
Bloque 5256 BYTES
$500$5FF
Bloque 6256 BYTES
$600$6FF
Bloque 7256 BYTES
$700$7FF
24LC
0824L
C08
NC
NC
A2
GND
VDD
WP
SCL
SDA
Toda memoria se compone de n bloques
de 256 bytes. Para este caso 4 bloques.
Toda memoria se compone de n bloques
de 256 bytes. Para este caso 4 bloques.
24LC
1624L
C16
NC
NC
NC
GND
VDD
WP
SCL
SDA
Esta memoria de 2kbytes tiene 8
bloques: 2kbytes/256
Esta memoria de 2kbytes tiene 8
bloques: 2kbytes/256
Dirección registro: $BBAABB: Bloque
AA: Registro dentro del bloque.
Dirección registro: $BBAABB: Bloque
AA: Registro dentro del bloque.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Selección de un registro de la memoria. Para memorias de 256 bytes. Después de enviar dirección de periférico se envía
dirección del registro AR donde se va a escribir. Previamente R/W debe haberse enviado como ‘0’.
SDA
SCL
AR7 AR6 AR5 AR4 AR3 AR2 AR1 AR0 ACK
Generado porEsclavo
MSB LSB
Generado por Maestro
Byte 00Byte 01Byte 02
Byte FEByte FF
El valor AR7..AR0 escoge uno de los
256 registros.…
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Selección de un registro de la memoria. Para memorias con más de 256 bytes. Conformación por bloques de memoria de 256 bytes. El bloque se puede seleccionar de dos formas.
• Utilizar parte de la dirección del dispositivo para selección bloq: DA6 DA5 DA4 DA3 Bx By Bz R/W. Solo para memorias entre 2 y 8 bloques.
• Trama de 8 bits, para seleccionar entre 1 y 256 bloques. Para memorias de más de 8 bloques.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Selección de un registro de la memoria. 24LC02, memoria de 256 Bytes.
• Trama 1 0 1 0 A2 A1 A0 R/W. Luego se envía Dir. Registro.• 1 0 1 0 1 1 0 0. Luego se envía trama con dir. $00 a $FF.• 1 0 1 0 0 1 0 0. Luego se envía trama con dir. $00 a $FF
24LC
0224L
C02
A0
A1
A2
GND
VDD
WP
SCL
SDA
0V
5V
0V
24LC
0224L
C02
A0
A1
A2
GND
VDD
WP
SCL
SDA
0V
5V
5V
Selección de memoria para
lectura/escritura
Selección de memoria para
lectura/escritura
Selección de memoria para
lectura/escritura
Selección de memoria para
lectura/escritura
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Selección de un registro de la memoria. 24LC04, memoria de 512 Bytes.
• Trama 1 0 1 0 A2 A1 B0 R/W. Luego se envía Dir. Registro.• 1 0 1 0 1 1 0 0. Luego se envía trama con dir. $00 a $FF.• 1 0 1 0 0 1 1 0. Luego se envía trama con dir. $00 a $FF
24LC
0424L
C04
NC
A1
A2
GND
VDD
WP
SCL
SDA
5V
0V
24LC
0424L
C04
NC
A1
A2
GND
VDD
WP
SCL
SDA
5V
5V Bloque 1256 BYTES
Bloque 0256 BYTES
Bloque 1256 BYTES
Bloque 0256 BYTES
Selección de memoria para
lectura/escritura, bloque 0
Selección de memoria para
lectura/escritura, bloque 0
Selección de memoria para
lectura/escritura, bloque 1
Selección de memoria para
lectura/escritura, bloque 1
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Selección de un registro de la memoria. Memoria 24LC08: 8 kbits = 1024 bytes. 4 Bloques. START + 1 0 1 0 A2 0 1 R/W: Bloque 1. Dirección a escribir en el bloque 1: $20.
Bloque 0256 BYTES
Bloque 1256 BYTES
Bloque 2256 BYTES
Bloque 3256 BYTES
Bloque 1256 BYTES
Bloque 1: 256 Bytes
$1E
$1F
$20
$21
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
24LC
1624L
C16
NC
NC
NC
GND
VDD
WP
SCL
SDA
Bloque 0256 BYTES
Bloque 1256 BYTES
Bloque 2256 BYTES
Bloque 3256 BYTES
Bloque 4256 BYTES
Bloque 5256 BYTES
Bloque 6256 BYTES
Bloque 7256 BYTES
Bloque 1256 BYTES
Bloque 6256 BYTES
Se escoge el registro $0E
Se escoge el registro $0ESe escoge el
registro $20
Se escoge el registro $20
Memoria EEPROM I2CMemoria EEPROM I2C
Selección de un registro de la memoria. 24LC16, memoria de 2048 Bytes.
• Trama 1 0 1 0 B2 B1 B0 R/W. Luego se envía Dir. Registro.• Dir: $10E. 1 0 1 0 0 0 1 0. Luego se envía trama $0E.• Dir: $620. 1 0 1 0 1 1 0 0. Luego se envía trama $20.
$10E = 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 $620 = 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0
Bloque Registroen el Bloque
Dirección compuesta:
Bloque + Registro
Dirección compuesta:
Bloque + Registro
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Escribir un Byte. Enviar trama de 8 bits de datos, finalizar con
condición de STOP. Después de STOP, el dato se almacena en la
FLASH.
Múltiples datos. Tramas sucesivas de 8 bits, en la última se envía
STOP. Los datos se almacenan después de STOP.
SDA
SCL
D7 D6 D5 D4 D3 D2 D1 D0 ACK
STOP
Generado porEsclavo
MSB LSB
Generado por Maestro
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Múltiples datos. La memoria se divide en páginas de 8, 16, 32 o más
bytes. Para la escritura, la memoria incluye un búfer de
acuerdo al tamaño de la página. 24LC04. 4kbits = 512 Bytes = 32 Pages/16 Bytes.
Page 0 Page 1 Page 5 Page 31…Page 2 Page 3 Page 4
Byte 32Byte 33 Byte 46Byte 47…
La escritura en FLASH es muy lenta, se incluye
un búfer RAM para guardar varios datos
rápidamente.
La escritura en FLASH es muy lenta, se incluye
un búfer RAM para guardar varios datos
rápidamente.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Múltiples datos: Cuidado con las páginas!!! Suponer una memoria de 256 bytes con 32 páginas
de 8 bytes. Página 1. Búfer y Flash. Registro 08. $03, $A3, $13, $FE Stop. Registro 14. $AB, $12, $07. Stop.
Byte 8Byte 9Byte 10Byte 11Byte 12Byte 13Byte 14Byte 15
Memoria Flash
Buf 0Buf 1Buf 2Buf 3Buf 4Buf 5Buf 6Buf 7
Búfer RAM
$03$A3$13$FE
$03$A3$13$FE
$AB$12
$07
$AB$12
$07
Página Uno
La memoria no hace salto de página, ¿Qué
se debe hacer?
La memoria no hace salto de página, ¿Qué
se debe hacer?
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Múltiples datos: Solución al problema anterior Suponer una memoria de 256 bytes con 32 páginas
de 8 bytes. Página 1. Búfer y Flash. Registro 08. $03, $A3, $13, $FE Stop. Registro 14. $AB, $12 Stop. Registro 16. $07 Stop.
Byte 8Byte 9Byte 10Byte 11Byte 12Byte 13Byte 14Byte 15
Memoria Flash
Buf 0Buf 1Buf 2Buf 3Buf 4Buf 5Buf 6Buf 7
Búfer RAM
$03$A3$13$FE
$03$A3$13$FE
$AB$12
$07
$AB$12
Página Uno
Byte 16Byte 17Byte 18Byte 19Byte 20Byte 21Byte 22Byte 23
$07
Página Dos
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Escritura de $45 (24LC02 = 1 0 1 0 A2 A1 A0) en $3E
SDA
SCL
1 0 1 0 A2 A1 A0 0 ACK
SDA
SCL
0 0 1 1 1 1 1 0 ACK
START
SDA
SCL
0 1 0 0 0 1 0 1 ACK
STOP
Dirección del periférico
Dirección del periférico
Dirección del registro $3E
Dirección del registro $3E
Dato $45 a escribir en $3E
Dato $45 a escribir en $3E
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Escritura de $72 (24LC16 = 1 0 1 0 B2 B1 B0) en $23A
SDA
SCL
1 0 1 0 0 1 0 0 ACK
SDA
SCL
0 0 1 1 1 0 1 0 ACK
START
SDA
SCL
0 1 1 1 0 0 1 0 ACK
STOP
Dirección del periférico, usando
bloque $2
Dirección del periférico, usando
bloque $2
Dirección del registro $3A dentro
del bloque $2
Dirección del registro $3A dentro
del bloque $2
Dato $72 a escribir en
registro $3A del bloque $2
Dato $72 a escribir en
registro $3A del bloque $2
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C Escribir en $95 (24LC256 = 1 0 1 0 A2 A1 A0) en $1A12
SDA
SCL
1 0 1 0 A2 A1 A0 0 ACK
SDA
SCL
0 0 0 1 1 0 1 0 ACK
START
SDA
SCL
0 0 0 1 0 0 1 0 ACK
SDA
SCL
1 0 0 1 0 1 0 1 ACK
STOP
Dirección del periférico
Dirección del periférico
Parte alta de dirección, es decir,
bloque $1A
Parte alta de dirección, es decir,
bloque $1A
Dato $95 a escribir en
registro $12 del bloque $1A
Dato $95 a escribir en
registro $12 del bloque $1A
Parte baja de dirección, es decir,
registro $12
Parte baja de dirección, es decir,
registro $12
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM I2CMemoria EEPROM I2C
Para lectura. Se inicia un proceso de escritura, enviando
solamente la dirección de memoria. De acuerdo a los casos anteriores. Cuando se reciba el ACK de la dirección, se genera
un Re-Start con R/W en ‘1’ y se empiezan a leer tramas.
Las tramas serán enviadas mientras el maestro genere ACK.
Para el último dato, no se genera ACK.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Memorias Externas
Memorias Internas
Memorias EEPROM I2C
Memorias Internas
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Memoria EEPROM internaMemoria EEPROM interna
Registro de la memoria PIC16F887. Tipo 24LC02, memoria de 256 Bytes. Dirección Inicial 0x2100 Dirección Final?
24LC
0224L
C02
A0
A1
A2
GND
VDD
WP
SCL
SDA
0V
5V
0V
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
EscrituraEscritura
Escritura de datos en la memoria Interna
WRITE _EEPROM(address, dato);
address es un entero de 8 o 16 bits, que especifica la posición relativa de la EEPROM interna donde se almacenará el dato
dato es el entero de 8 bits que se almacenará en la EEPROM
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
LecturaLectura
Función básica de lectura de datos dato=READ_EEPROM(address);
dato es un entero de 8 bits leído desde la EEPROM interna.
address es un entero de 8 o 16 bits, que especifica la posición relativa de la EEPROM interna donde se leerá el dato
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
AlmacenamientoAlmacenamiento
Escritura desde la compilación
#ROM address = {datos}
address especifica la dirección inicial de la EEPROM interna donde se almacenarán los datos (comienza desde la 0x2100)
datos son el conjunto de valores que se almacenarán en la EEPROM. Manipulación igual al de los arreglo.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
EjemplosEjemplos
Desarrollar un programa que (1): Guardar y leer datos en las 10 primeras posiciones de
memoria de la EEPROM interna
Desarrollar un programa que (2): Mediante un teclado matricial se puede seleccionar
entre escribir o leer. El usuario selecciona que desea escribir en las 9
posiciones iniciales de la EEPROM interna. Almacenar en la EEPROM interna y desde el tiempo de
compilación el nombre del programador. Se puede leer cual información leer.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Memorias Externas
Memorias Internas
Memorias EEPROM I2C
Memorias Externas
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
BibliotecaBiblioteca
Incluir la biblioteca correspondiente:
#include <memoria_EEPROM>
Memoria_EEPROM corresponde a la memoria externa que seleccionemos: 2401.c 2402.c 2404.c 2408.c 2416.c
2421.c 2432.c 2464.c 2465.c …
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
ConfiguraciónConfiguración
Inicialización:
init_ext_eeprom();
Permite configurar la comunicación I2C, es decir, selecciona modo Master, los puertos de comunicación I2C, tamaño de la memoria, entre otros.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
EscrituraEscritura
Escritura de datos en la memoria Interna
WRITE _EXT_EEPROM(address, dato);
address es un entero de 8 o 16 bits, que especifica la posición relativa de la EEPROM interna donde se almacenará el dato
dato es el entero de 8 bits que se almacenará en la EEPROM
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
LecturaLectura
Función básica de lectura de datos dato=READ_EXT_EEPROM(address);
dato es un entero de 8 bits leído desde la EEPROM interna.
address es un entero de 8 o 16 bits, que especifica la posición relativa de la EEPROM interna donde se leerá el dato
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
EjemplosEjemplos
Desarrollar un programa que (1): Guardar y leer datos en las 10 primeras posiciones de
memoria de la EEPROM interna
Sistemas Digitales IIFin de la clase 14