Comunicación serie I2C entre PIC y EEPROM 24LC256A

Cualquier cosa relacionado con la programación de Microcontroladores PIC en C utilizando el compilador CCS.

Comunicación serie I2C entre PIC y EEPROM 24LC256A

Notapor biblioman » Vie Dic 18, 2009 10:39 pm

Nuevo ejemplo sobre memorias EEPROM en este caso con la 24LC256, pero lo realmente interesante es el protocolo de comunicación utilizado, a medida que el tiempo me lo permita iré incluyendo más ejemplos de componentes que utilicen la comunicación serie I2C.

Cualquier sugerencia ó mejora, como siempre será bien recibida.

Un saludo

Aquí tenéis el DNS
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
biblioman
 
Mensajes: 220
Registrado: Vie Mar 20, 2009 4:58 pm

Re: Comunicación serie I2C entre PIC y EEPROM 24LC256A

Notapor QuijotescoXp » Sab Dic 19, 2009 10:56 am

Haces que lo difícil parezca fácil biblioman y te doy las gracias por ello.

La verdad es que está tan claro que no se puede pedir más.

No se si alguna vez has contemplado la idea de hacer un Doc completo a modo de tutorial o manual de todo lo que estás creando. Seguro que a muchos nos vendría de perlas como referente en futuros estudios. Es más me ofrezco voluntario para hacerlo si algún día así lo quisieras.

Para finalizar te quiero comentar que al igual que el protocolo I2c existe uno muy parecido y de prácticamente reciente aparición y que también se le podría dedicar un articulo. Se llama protocolo One Wire.

Bueno pues esto es todo por ahora, solo me queda desearos a todos los componentes de este site unas felicísimas fiestas.

Feliz Navidad desde tierras del Quijote.
Existen 10 tipos de personas. Los que saben binario y los que no.
Avatar de Usuario
QuijotescoXp
 
Mensajes: 33
Registrado: Sab Sep 19, 2009 10:46 pm

Re: Comunicación serie I2C entre PIC y EEPROM 24LC256A

Notapor biblioman » Dom Dic 20, 2009 10:03 am

Hola QuijotescoXP. Me alegro que te haya gustado el articulo. Esta interfaz como he dicho está implementada por muchos dispositivos, por lo que seguro que aparecerá en próximos ejemplos.
QuijotescoXp escribió:No se si alguna vez has contemplado la idea de hacer un Doc completo a modo de tutorial o manual de todo lo que estás creando. Seguro que a muchos nos vendría de perlas como referente en futuros estudios. Es más me ofrezco voluntario para hacerlo si algún día así lo quisieras.

Me interesa más la idea de crear una revista tipo a la que tiene ucontrol, el hacer algo así y hacerlo bien, requiere mucho tiempo y trabajo, por lo que se necesitarían mas colaboradores de los que actualmente hay, si esto sigue creciendo como hasta ahora y la gente se anima, sin duda será una idea a tener en cuenta en el futuro.

De momento como cosas nuevas para el año que viene voy a incluir la creación de ejemplos con microcontroladores de la gama alta de Microchip los de 32 bits. Ya tengo pedido el siguiente kit:

Imagen

En cuanto me llegue y empiece a trabajar con el iré posteando mis primeras impresiones. Ya veré si abro una sección nueva para aprender sobre estos PIC y sobre sus herramientas de desarrollo, al estilo del curso sobre CCS .

Ya han pasado unos cuantos años desde que Microchip saco estos microcontroladores y hay bastante información, incluso con ejemplos y librerias de código abierto, pero todo el material que he encontrado está en ingles (si alguien encuentra algo en Español, por favor que lo ponga). Se que hay determinados Microcontroladores de 32 bits que soportan incluso un Sistema Operativo, concretamente un núcleo básico de Linux, por lo que no he resistido la tentación de embarcarme en esta nueva aventura, ya os iré contando........ Todo esto sin dejar de lado el curso actual sobre CCS.

QuijotescoXp escribió:te quiero comentar que al igual que el protocolo I2c existe uno muy parecido y de prácticamente reciente aparición y que también se le podría dedicar un articulo. Se llama protocolo One Wire.


Sin duda que se podría hacer un artículo interesante sobre este protocolo, si tú no te animas a escribir algo sobre el tema, lo apunto en tareas pendientes, pero ten en cuenta que si algo me falta no son ganas sino tiempo.

Felices fiestas a todos y hasta pronto.
Avatar de Usuario
biblioman
 
Mensajes: 220
Registrado: Vie Mar 20, 2009 4:58 pm

Re: Comunicación serie I2C entre PIC y EEPROM 24LC256A

Notapor QuijotescoXp » Jue Dic 24, 2009 8:44 am

Me interesa más la idea de crear una revista tipo a la que tiene ucontrol, el hacer algo así y hacerlo bien, requiere mucho tiempo y trabajo, por lo que se necesitarían mas colaboradores de los que actualmente hay, si esto sigue creciendo como hasta ahora y la gente se anima, sin duda será una idea a tener en cuenta en el futuro.

Pues amigo biblioman si así fuese quiero que cuentes conmigo.

e que hay determinados Microcontroladores de 32 bits que soportan incluso un Sistema Operativo, concretamente un núcleo básico de Linux, por lo que no he resistido la tentación de embarcarme en esta nueva aventura, ya os iré contando........

De este mundo analógico/digital paralelo que nos rodea, si algo me toca la fibra son, las redes y los sistemas operativos... a si que nuevamente me ofrezco para este nuevo proyecto que planteas y que me gusta sobre manera.

Saludos navideños desde tierras del Quijote.
Existen 10 tipos de personas. Los que saben binario y los que no.
Avatar de Usuario
QuijotescoXp
 
Mensajes: 33
Registrado: Sab Sep 19, 2009 10:46 pm

Re: Comunicación serie I2C entre PIC y EEPROM 24LC256A

Notapor biblioman » Jue Dic 24, 2009 9:41 am

Cuando decía lo de la revista ya contaba contigo, a ver si aumenta el número de colaboradores activos en el foro y podemos hablar en serio sobre este proyecto.

Ayer por la tarde recibí el paquete con el kit básico para empezar a programar con los PIC 32, a penas he tenido tiempo de desembalarlo, estamos en plenas fiestas navideñas y toca estar con la familia, pero en cuanto pueda lo pruebo e intento hacer algún ejemplo sencillo para subirlo al sitio y empezar a comentarlo.

Un saludo y feliz Navidad
Avatar de Usuario
biblioman
 
Mensajes: 220
Registrado: Vie Mar 20, 2009 4:58 pm

Re: Comunicación serie I2C entre PIC y EEPROM 24LC256A

Notapor andrew » Mar Dic 29, 2009 11:39 pm

hola biblioman primero que nada agradecerte por los tutoriales que nos son de gran ayuda y de paso queria consultarte una duda q tgo, acontinuacion mis inquietudes, de antemano te agradezco por revisarlo.

/*-----------------------------------------------------------------*/
/* COMUNICACION SERIE I2C ENTRE UN PIC Y LA MEMORIA EEPROM 24LC256A*/
/*-----------------------------------------------------------------*/
#INCLUDE <16F877.h>

//configuracion de los fusibles.
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT,NODEBUG
#use delay(clock= 4m)
#byte puerto_d = 0x08 //identificador para el puerto c.
#use delay (clock= 4m)
#include "24256.c"
#INT_ext

VOID ext_isr ( void )
{

IF ( ( read_ext_eeprom ( 0 ) == 0x99|| ( read_ext_eeprom ( 0 ) == 0xff ) )
{

write_ext_eeprom ( 0, 0 );
puerto_D =read_ext_eeprom(0);
}

else if ( (read_ext_eeprom ( 0 )& 0x0f ) < 0x09 )
{
write_ext_eeprom ( 0, ( read_ext_eeprom ( 0 ) ) + 1 );
puerto_d = read_ext_eeprom ( 0 );
}

else if ( (read_ext_eeprom ( 0 )&0x0f ) >= 0x09 )
{
write_ext_eeprom ( 0, ( read_ext_eeprom ( 0 ) ) + 7 );
puerto_d = read_ext_eeprom ( 0 );
}
}


VOID main ( )
{
set_tris_b ( 0xff ); //puerto b como entrada
set_tris_d ( 0x00 ); //puerto d como salida
enable_interrupts (global); //se habilita la interrupcion global
enable_interrupts (INT_ext); //se habilita la interrupcion externa
puerto_d = 0xff; // inicializo puerto d

init_ext_eeprom ( );// inicializamos memoria EEPROM externa
//write_ext_eeprom (0.0xff ); //Resetear registro 00 EEPROM

WHILe(true)
{
//Resto del programa
}
}

//http://aquihayapuntes.com/indice-practicas-pic-en-c/comunicacion-serie-i2c-entre-pic-y-eeprom-24lc256a.html//

CUANDO COMPILO ME APRECE LOS SGTES ERRORES AL PRINCIPIO TENIA MAS PERO ESTOS SI QUE NO CONSIGO RESOLVERLOS:

***58"PROYENTREPICYEEPROM.c"Line18(6,7):Expecting a close parent
***51"PROYENTREPICYEEPROM.c"Line24(6,10):A numeric expression must apper here
***51"PROYENTREPICYEEPROM.c"Line30(6,10):A numeric expression must apper here
andrew
 
Mensajes: 3
Registrado: Mar Dic 22, 2009 10:20 pm

Re: Comunicación serie I2C entre PIC y EEPROM 24LC256A

Notapor biblioman » Mié Dic 30, 2009 8:53 am

Hola andrew. Me alegro que te sean útiles los tutoriares. En cuanto a los errores que te salen he visto que te falta un paréntesis:
andrew escribió:IF ( ( read_ext_eeprom ( 0 ) == 0x99|| ( read_ext_eeprom ( 0 ) == 0xff ) )


Debería poner:

if ((read_eeprom(0)==0x99)||(read_eeprom(0)==0xFF))

Comprueba si es eso la causa del error y me comentas, de todas formas revisando el código me di cuenta que al copiar el código fuente y pasarlo a html, repetí dos veces la directiva #use delay(clock=4000000), aunque no da error por eso solo es necesario ponerla una vez. Aquí está el código completo ya revisado:

Código: Seleccionar todo
/*-----------------------------------------------------------------------*\   
|Ejemplo comunicación serie I2C entre un PIC y la memoria EEPROM 24LC256A |   
|autor: biblioman                                                         |   
|www.aquihayapuntes.com                                                   |   
\*------------------------------------------------------------------------*/   
#include <16F877.h>
#FUSES NOWDT, XT, NOPUT, PROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#byte puerto_d = 0x08 //identificador para el puerto c.
#include "24256.c"


#INT_ext

VOID ext_isr ( void )
{

if ( (read_ext_eeprom (0) == 0x99) || (read_ext_eeprom ( 0 ) == 0xff ) )
{

write_ext_eeprom ( 0, 0 );
puerto_D =read_ext_eeprom(0);
}

else if ( (read_ext_eeprom (0)& 0x0f ) < 0x09 )
{
write_ext_eeprom ( 0, ( read_ext_eeprom (0) ) + 1 );
puerto_d = read_ext_eeprom (0);
}

else if ( (read_ext_eeprom (0)&0x0f) >= 0x09)
{
write_ext_eeprom ( 0, ( read_ext_eeprom ( 0 ) ) + 7 );
puerto_d = read_ext_eeprom ( 0 );
}
}


VOID main ( )
{
set_tris_b ( 0xff ); //puerto b como entrada
set_tris_d ( 0x00 ); //puerto d como salida
enable_interrupts (global); //se habilita la interrupcion global
enable_interrupts (INT_ext); //se habilita la interrupcion externa
puerto_d = 0xff; // inicializo puerto d

init_ext_eeprom ( );// inicializamos memoria EEPROM externa
//write_ext_eeprom (0.0xff ); //Resetear registro 00 EEPROM

WHILe(true)
{
//Resto del programa
}
}


Un saludo y felices fiestas.
Avatar de Usuario
biblioman
 
Mensajes: 220
Registrado: Vie Mar 20, 2009 4:58 pm

Re: Comunicación serie I2C entre PIC y EEPROM 24LC256A

Notapor mecatrodatos » Jue Mar 11, 2010 12:52 am

he estado mirando leyendo y hasta transquibiendo los codigos , montajes en proteus estoy super contento con el aprendizaje, le agradezco al amigo biblioman por sus aportes y la generosidad de compartirlos, cuando este mas familiarizado con el entorno de programacion subire aportes.
mecatrodatos
 
Mensajes: 5
Registrado: Mié Mar 10, 2010 5:52 am

software para simular memorias seriales

Notapor halder » Vie Abr 02, 2010 5:58 pm

hola biblioman :mrgreen: mi consulta es para saber que sofware de simulacion usaste para grabar los datos en la memoria 24lc256 y poderla simular en proteus. yo tengo ese problema tengo toda la informacion pero me falta el sofware donde escribir los datos de la memoria para luego llamarlos desde proteus y simularlos.
muy bueno el ejemplo de comunicacion serie I2C de pic y la memoria eeprom 24lc256, solo falto poner el sofware virtual que usaste para grabar la memoria y simularla en proteus. gracias :D
halder
 
Mensajes: 1
Registrado: Vie Abr 02, 2010 5:46 pm

Re: software para simular memorias seriales

Notapor biblioman » Sab Abr 03, 2010 7:26 am

Hola halder. Bienvenido al foro. Para grabar los datos en la memoria externa 24lc256 no hace falta ningún software externo, los datos se graban en la memoria a través del PIC. Repasa el código fuente del ejemplo y verás que los datos son escritos en la memoria EEPROM por medio de la función:

write_ext_eeprom(dirección, dato);


Espero que esto conteste tu duda, para cualquier otra cosa no dudes en preguntar.

Un saludo
Avatar de Usuario
biblioman
 
Mensajes: 220
Registrado: Vie Mar 20, 2009 4:58 pm


Volver a Programación PIC en C con CCS

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron