Autor Tema: Ayuda con I2C ¿multimaster?  (Leído 9088 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Ayuda con I2C ¿multimaster?
« en: 25 de Agosto de 2006, 05:39:13 »
Hola a todos:

Necesito acceder desde 2 PICs a una misma memoria EEPROM (de tipo 24LC1025). Uno de ellos sólo efectuará operaciones de escritura, y el otro sólo de lectura. Para empezar no sé ni cómo realizar las conexiones. ¿Deben compartir los dos PICs las líneas de RELOJ y DATOS de la memoria?

He leído algo sobre que el bus I2C ofrece la posibilidad MultiMaster, pero no entiendo muy bien qué es esto ni si es lo que yo necesito.

¿Alguien tiene algún ejemplo (tanto de software como de conexión)? Yo uso PicBasic, pero también me valdrán ejemplos en otros lenguajes.

Cualquier ayuda será bienvenida, aunque sea muy remota. He buscado bastante por Google y no encuentro nada sobre esto.

Muchas gracias

Desconectado pikman

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 679
Re: Ayuda con I2C ¿multimaster?
« Respuesta #1 en: 25 de Agosto de 2006, 10:24:10 »
Bueno, si el bus I2C posee como dices dos lineas la de datos SDA y de reloj SCL, solamente deberas conectar todo en paralelo y listo, no uso picbasic, pero solo deberas esperar que el bus este descupado para comenzar la operacion desde cualquiera de los dos micros, particularmente no he usado esa configuracion, un esclavo y dos maestros, pero deberia funcionar, sin problemas, lo que puedes hacer es conectar un micro y la memoria para empezar, no olvides colocar a las dos lineas del I2C resistencias de pull up con 100K funciona perfectamente.

saludos
saludos
PikMan

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Ayuda con I2C ¿multimaster?
« Respuesta #2 en: 25 de Agosto de 2006, 11:11:41 »
Gracias pikman.

Como me aconsejas, empezaré conectando un PIC y una memoria, luego intentaré meter el otro PIC y ya os contaré como me va la cosa.

Lo más provechoso que he encontrando rebuscando por la Web ha sido este documento, que aún no he tenido tiempo de estudiar con detalle.

Arbitraje en bus I2C

Lo dejo aquí por si a alguien le sirviera en el futuro.

Gracias de nuevo

Deimos

  • Visitante
Re: Ayuda con I2C ¿multimaster?
« Respuesta #3 en: 29 de Agosto de 2006, 04:51:13 »
El protocolo I2C puede ser multimaster, lo único que tienes que hacer es decirle a cada micro cual es su direccion, que estará fuera de las direcciones de memoria de la 24LC1025. Cuando uno de los micros reciba una trama con una dirección que no es la suya no mandará el acknowledgement y por tanto el otro máster puede trabajar con la memoria tranquilamente.

Recuerda que un ciclo de lectura en I2C es Start, codigo de lectura, ack, direccion, ack, byte1, ack, byte2, ack, byte3, ack,......, stop

Un ciclo de escritura es start, codigo de lectura, ack, direccion, ack, restart, codigo de escritura, ack, byte1, ack, byte2, ack, byte3, ack, ...., stop

En las direcciones puedes indicarle a cada micro cuando entrar y cuando no. Cada trama la recibiran todos los micros que pongas en el bus i2c, pero solo contestaran los que reconozcan la direccion. En tu caso yo haria que una vez acabada una escritura o una lectura, cada micro avisase al otro para que comience su tarea.

Atentamente

Deimos

http://astroelectronica.iespana.es

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Ayuda con I2C ¿multimaster?
« Respuesta #4 en: 29 de Agosto de 2006, 04:57:52 »
Gracias Deimos.

El problema lo tengo porque estoy utilizando PicBasic para programar, y resulta que creo que sólo ofrece comandos de lectura y escritura I2C, pero ningún modo de mandar la señal de Start, Stop, ACK, o averiguar si el bus está en uso.

Estoy analizando otros lenguajes para ver cuál me conviene más.

Deimos

  • Visitante
Re: Ayuda con I2C ¿multimaster?
« Respuesta #5 en: 29 de Agosto de 2006, 07:34:04 »
Mira no te andes por la ramas, dentro del MPLAB tienes includes para hacer un i2c de forma automática con los registros especializados del pic, o incluso montartelo a pedales con cualquier puerto I/O.

C:\Archivos de programa\MCC18\h\i2c.h
C:\Archivos de programa\MCC18\h\sw_i2c.h

Aquí es donde lo tengo yo en mi pc, pero tu mismo le puedes decir al windows que te lo busque. Ya verás que sencillo que es. Todas las señales de start, stop, ack, y demás las genera de forma automática, y para saber si el buffer está lleno o no, tienes flags que te avisan.

Para lo ke quieras y más....

Atentamente

Deimos

http://astroelectronica.iespana.es/


Desconectado Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Ayuda con I2C ¿multimaster?
« Respuesta #6 en: 29 de Agosto de 2006, 08:47:05 »
Hola a todos !

jfmateos2, yo uso Protón + y ofrece esas funciones que mencionás, Start, Stop y Acknowledge, para trabajar con el bus I2C.

Hay una web (en inglés) donde hay foros que te pueden despejar muchas dudas si entendés el idioma.

Tal vez te sirva.

Saludos

Mario

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Ayuda con I2C ¿multimaster?
« Respuesta #7 en: 29 de Agosto de 2006, 09:00:31 »
Gracias Deimos y Mario:

Precisamente estaba valorando la opción de utilizar Proton, porque además parece que permite manejar LCD gráficos fácilmente, pero no quería invertir en otro compilador sin pensármelo un poco más.

Además tengo en mente un proyecto que requiere controlar los tiempos de un modo muy exhaustivo, por lo que estoy empezando a inclinarme hacia Assembler.

Gracias y les mantendré informados de mis progresos.

Desconectado Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Ayuda con I2C ¿multimaster?
« Respuesta #8 en: 29 de Agosto de 2006, 19:17:53 »
Hola a ambos

Así dicen los que verdaderamente saben de esto.
Cuando la variable de presición es el tiempo, nada mejor que el assembler.
Sea cual sea tu desición, el mejor de los deseos.
Si te decidís por el Protón, algo he hecho con memorias Eeprom, por lo que, por aquí vamos a estar para compartir.

Saludos.
Mario

Deimos

  • Visitante
Re: Ayuda con I2C ¿multimaster?
« Respuesta #9 en: 30 de Agosto de 2006, 03:19:37 »
No es necesario picar el fuente en asm para controlar los tiempos si el i2c se ejecuta mediante interrupciones. El programa se puede hacer en C, y si se realiza todo el protocolo por interrupciones no vas a tener problemas de tiempos. Lo que si es cierto es que el clock que generes que va por la línea SCK ha de ser síncrono, es decir, los tiempos han de ser clavados tanto en estado alto como en estado bajo. Esta es, a mi parecer, la peor pega que tiene el i2c. Que no puedes cortar la comunicacion en medio de la transmision de un byte.

Nos las vemos.

Deimos

http://astroelectronica.iespana.es/

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Ayuda con I2C ¿multimaster?
« Respuesta #10 en: 30 de Agosto de 2006, 04:36:40 »
Gracias a los dos.

Ayer estuve leyendo un tutorial de ASM sobre el 16F84 (58 páginas divididas en 13 capítulos). Fue una lectura apasionante en la que por fin comprendí la cuestión de cuánto tarda en ejecutarse cada instrucción.

Sin embargo, usar sólo ASM me parece una locura. En mi proyecto está involucrado, además del I2C, un puerto RS232 y un GLCD, por lo que habría que escribir código para aburrir (aunque imagino que ya habrá funciones por otros que se podrían aprovechar).

Conclusión: Hoy voy a tomarle el pulso al manual de CCS C. He leido por el foro que este lenguaje es bastante completo (al nivel del Proton), que se combina muy bien con ASM y que existen muchas librerías ya desarrolladas. El único inconveniente, su precio. En fin, esta vez no quiero precipitarme como hice con el PicBasic; así que me tomaré toda la semaña para tomar una decisión. Mi idea es usar C de forma general, y recurrir a ASM cuando el control de los tiempos sea crítico.

Gracias por sus opiniones.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Ayuda con I2C ¿multimaster?
« Respuesta #11 en: 30 de Agosto de 2006, 04:39:39 »
No te arrepentirás. Ya verás cómo al final de la semana la decisión es CCS.

Deimos

  • Visitante
Re: Ayuda con I2C ¿multimaster?
« Respuesta #12 en: 30 de Agosto de 2006, 08:46:59 »
En asm ya no programa nadie hombre, en el momento que pruebes el C, ya no volverás a programar en asm nunca más. Sino ya verás jejeje
venga majo, mucha suerte!!!!!

Atentamente

Deimos

http://astroelectronica.iespana.es/

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Ayuda con I2C ¿multimaster?
« Respuesta #13 en: 30 de Agosto de 2006, 11:44:49 »
Bueno, he estado echando un vistazo al manual de CCS C de la versión 4 y pinta muy bien, pero he visto que se mencionan ciertos archivos INCLUDE, por ejemplo para gestión de GLCD y gráficos, sobre los que no encuentro documentación alguna.

¿Incluye el programa documentación sobre estos archivos INCLUDE? En la página Web del producto sólo he encontrado el manual sobre el propio compilador (ninguna mención a estos archivos INCLUDE).

Deimos

  • Visitante
Re: Ayuda con I2C ¿multimaster?
« Respuesta #14 en: 01 de Septiembre de 2006, 06:09:40 »
Los includes de i2c para pic te los puedes bajar directamente de www.microchip.com. Dentro de cada include hay una explicacion de lo que hace. Ya verás que es muy fácil. Suerte y al toro

Atentamente

Deimos


 

anything