Autor Tema: Recibir 3 bytes por I2C en un pic  (Leído 2355 veces)

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

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Recibir 3 bytes por I2C en un pic
« en: 18 de Julio de 2010, 15:10:15 »
Hola:
Tengo un pic como esclavo que lee un valor analogico y lo envia al master cuando este se lo pide por i2c. Ahora lo que quiero es enviar 3bytes, de 3 variables analogicas, pero no se como hacerlo. Este es el código que utilizaba hasta ahora par un byte:
MAESTRO para solicitar dato
Código: [Seleccionar]
                        i2c_start();
i2c_write(0x0A+1);
tempoB1=i2c_read(0);
i2c_stop();

ESCLAVO para enviar dato cuando el maestro lo solicita
Código: [Seleccionar]
#INT_SSP
void ssp_interrupt()
{
state=i2c_isr_state();
if(state==0x80){
i2c_write(buffer[0x00]);

No se como modificarlo para solicitar/enviar 3 bytes.
Gracias y un saludo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Recibir 3 bytes por I2C en un pic
« Respuesta #1 en: 18 de Julio de 2010, 18:57:06 »
Sencillo, esto debería de funcionar:

MAESTRO:
Código: [Seleccionar]
                        i2c_start();
i2c_write(0x0A+1);
tempoB=i2c_read();
tempoB0=i2c_read();
tempoB1=i2c_read(0);
i2c_stop();

ESCLAVO
Código: [Seleccionar]
#INT_SSP
void ssp_interrupt()
{
state=i2c_isr_state();
if(state==0x80){
i2c_write(buffer[0x00]);
i2c_write(buffer[0x01]);
i2c_write(buffer[0x02]);


Saludos!

No contesto mensajes privados, las consultas en el foro

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Re: Recibir 3 bytes por I2C en un pic
« Respuesta #2 en: 19 de Julio de 2010, 02:51:14 »
Muchas gracias!!!!
Eso lo habia probado, pero me sobraba el "0" que metia en todos los "i2c_read()".

Funciona, muchas gracias.
Un saludo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Recibir 3 bytes por I2C en un pic
« Respuesta #3 en: 19 de Julio de 2010, 15:18:05 »
Siempre es recomendable tener la ayuda de CCS a mano, el 0 se coloca para enviar un No Ack por parte del master y terminar la operación de lectura.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Re: Recibir 3 bytes por I2C en un pic
« Respuesta #4 en: 28 de Julio de 2010, 13:55:30 »
Sigo dando vueltas a esto, ya que simulando en proteus funciona a la perfeccion, pero haciendo el montaje con los pic no funciona. Si envío un solo byte si, pero los 3 de esta forma no.

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Re: Recibir 3 bytes por I2C en un pic
« Respuesta #5 en: 28 de Julio de 2010, 14:32:23 »
Sigo probando, y el primer byte si que se recibe, pero el resto ya no, y se queda pillado el master en segundo i2c_read();

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Recibir 3 bytes por I2C en un pic
« Respuesta #6 en: 22 de Octubre de 2010, 08:46:13 »
Ya se que es muy tarde para preguntar... pero pudiste solucionarlo??

 :( :(


 

anything