Autor Tema: utilizar pic como master y slave a la vez  (Leído 2416 veces)

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

Desconectado hqv

  • PIC12
  • **
  • Mensajes: 70
utilizar pic como master y slave a la vez
« en: 15 de Noviembre de 2005, 15:50:00 »
hola amigos::

mi pregunta es tengo dos pic funcionando juntos y necesitan trasferirse info del uno al otro ,voy a ocupar i2c por lo que necesito que ambos sean master y slave en un momento y en otro sean sleve -master.

para eso necesito colocar :
#use i2c(master, sda=pin_c4,sdc=pin_c3,address=0xa)
#use i2c(salve, sda=pin_c4,sdc=pin_c3,address=0xa)

o hay que colocarles direcciones diferentes? u otra instrucción..?
gracias

hqv

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: utilizar pic como master y slave a la vez
« Respuesta #1 en: 15 de Noviembre de 2005, 16:27:00 »
hola hqv,

tienes que configurar los pics de tal forma que solo haya un master (será el que genere la señal reloj para enviar/recibir datos) y varios slaves (uno en tu caso)

En el CCS hay un ejemplo llamado EX_Slave.C que te puede ayudar a entender como enviar/recibir datos.

saludos!

Desconectado Sebascl

  • PIC12
  • **
  • Mensajes: 73
RE: utilizar pic como master y slave a la vez
« Respuesta #2 en: 15 de Noviembre de 2005, 18:27:00 »
hola hqv, a que te refieres con maester y salave a la vez?, quieres que el esclavo pueda transmitir datos al maestro sin que el maestro los leea del esclavo?



saludos...

Desconectado hqv

  • PIC12
  • **
  • Mensajes: 70
RE: utilizar pic como master y slave a la vez
« Respuesta #3 en: 16 de Noviembre de 2005, 16:06:00 »
lo que me refiero es lo siguiente:

tengo dos pic que estan tomando información de varios sensores, y tienen que comunicarse entre ellos,es decir en un momento uno de ellos es el master que trasfiere info al slave y en otro momento es al reves (el que antes era el slave) ahora es master y el otro pasa a ser slave.

 gracias
hqv

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
RE: utilizar pic como master y slave a la vez
« Respuesta #4 en: 16 de Noviembre de 2005, 17:43:00 »
Simultaneamente no pueden ser master y slave, tal vez se pueda conmutar de un modo a otro, aunque tal vez seria mejor establecer otrro canal de comunicacion mas adecuado como un rs232 o utilizar un puerto de cada pic para transferir la información.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: utilizar pic como master y slave a la vez
« Respuesta #5 en: 16 de Noviembre de 2005, 18:08:00 »
pero lo q no entiendo es pq el slave quieres q pase a ser master loco, el slave puede transmitir y no por ello ha de ser master...

Desconectado hqv

  • PIC12
  • **
  • Mensajes: 70
RE: utilizar pic como master y slave a la vez
« Respuesta #6 en: 16 de Noviembre de 2005, 18:58:00 »
J1M gracias pero es que = no cacho mucho del i2c por eso estoy preguntando...

la interrupción que esta relacionada con el i2c funciona = que la del usart, que al llegar datos uno entra en la interrupción??

el slave puede en cualquier momento transmitir información al master..?

cualquier otra info sobre el uso del i2c es de gran ayuda..
gracias nuevamente J1M espero tu respuesta

hqv

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
RE: utilizar pic como master y slave a la vez
« Respuesta #7 en: 17 de Noviembre de 2005, 03:12:00 »
No, el esclavo solo contesta cuando le pregunta el maestro, el siguiente código pediria un maestro a un esclavo el valor de un registro:

// Cliclo de escritura (escribimos en el esclavo el registro a leer)
i2c_start();
i2c_write(address); // Nos diriguimos al dispositivo esclavo y este se pone a la  espera de un comando devolviendo un ACK
i2c_write(n_registro) // Le indicamos cual es el registro a leer
// Ciclo de lectura (leemos el registro del esclavo)
i2c_start();
i2c_write(address+1); // Nos diriguimos al dispositivo esclavo y este se pone en modo escritura
i2c_read(); // Leemos el registro
i2c_stop(); // Final de la secuencia

Por consiguiente un esclavo escribe cuando se lo solicita el maestro. Y si no esta claro que iria contra la filosofia de la arquitectura Master-Slave

* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: utilizar pic como master y slave a la vez
« Respuesta #8 en: 17 de Noviembre de 2005, 06:06:00 »
no puedes transmitir cuando el quiera, no tal y como está pensada la arquitectura I2C, lo q puedes hacer es sacar otra linea desde el Slave hacia el Master a la pata de interrupción externa de este y cuando el slave necesite que el master se comunique con el se active la interrupcion y pida los datos al Slave, claro q esto es algo "raro". Otra opcion es emular otro I2C por software, un I2C es master y el otro esclavo, para el otro pic el primero I2C seria el sclavo, y el segundo el master. De esta forma utilizarías 4 líneas, como te he comentado anteriormente solo tres. Lo que tú comentabas al principio creo q no es posible ya q no puede "reconfigurarse", pero si q el esclavo avisar al master de cuando tenga un dato disponible para ser transmitido.

saludos

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
RE: utilizar pic como master y slave a la vez
« Respuesta #9 en: 17 de Noviembre de 2005, 10:43:00 »
Estamos mareando la perdiz, la arquitectura master-slave esta para lo que esta, un maestro manda o recaba información de los esclavos y no es una comunicación dual al mismo nivel. Si se quiere hacer otra cosa hay otros protocolos que estan para eso como por ejemplo RS232, RS485 o teniendo en cuenta que el módulo MSSP (MASTER SYNCHRONOUS SERIAL PORT) puede trabajar como SPI (Serial Peripheral Interface) que permite transmitir y recivir al mismo tiempo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado hqv

  • PIC12
  • **
  • Mensajes: 70
RE: utilizar pic como master y slave a la vez
« Respuesta #10 en: 17 de Noviembre de 2005, 16:49:00 »
alguien tiene el codigo relacionado con el slave utilizando la interrupcion int_ssp()

y lo que no me dijieron es si la interrupcion por i2c es = a la de usart, es decir al llegar un dato entra en el codigo relacionado con la interrupción rda.

gracias
hqv

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
RE: utilizar pic como master y slave a la vez
« Respuesta #11 en: 18 de Noviembre de 2005, 02:26:00 »
En el hilo:

http://miarroba.com/foros/ver.php?foroid=46840&temaid=3939531

tienes como se maneja la irq de un esclavo I2C.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús


 

anything