Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: pajaro en 10 de Agosto de 2012, 17:51:57
Título: :: i2c no permite enviar 1 como dato ::
Publicado por: pajaro en 10 de Agosto de 2012, 17:51:57
Hola a todos
llevo varios dias, con un problema en un codigo de ccs por mas que lo miro en el depurado con proteus no encuentro el error..
el caso es como narro a continuación: el master envia un dato al esclavo al pulsar boton, los datos se los paso mediante un vector y los envio por el puerto i2c .
he intentado ponerle retardo por si se atascaba el receptor ... pero no funciono nada....no encontre remedio
con esta funcion envio desde el master por i2c al esclavo
Código: C++
..
void escribe_i2c_01(int8 pic, int8 dato ){
i2c_start();// Condicion Inicio
i2c_write(pic);// Direccion dispositivo
//delay_ms(3); // *** Necesario ***
i2c_write(dato);// dato
//delay_ms(3); // *** Necesario ***
i2c_stop();// Stop
//delay_us(20);
//delay_ms(1000);
}
....
los datos los tengo en un vector:
envio[]=(2,3, 0, 99);
el cual lo cargo con otra funcion:
Código: C++
...
//angulo, inclinacion, envio, posicion de v1,v2 estdo de motor
con este vector (2, 3, 0, 99); parece que funciona pero si le envio algun dato del vector con 1 no envia mas desde ese dato y el master se bloquea, tambine he notado que el sda y el scl se pone azul en el proteus si printeo lo que sucede despues del envio del 1 me saca la direcion del esclavo.
tambien conecte el scl y sda al osciloscopio para ver las señales.. pero aun asi..
Necesitaria alguna ayuda por parte del foro, no logro encontrar el problema o problemas.
gracias por adelantado,..
Título: Re: :: i2c no permite enviar 1 como dato ::
Publicado por: jukinch en 10 de Agosto de 2012, 18:14:57
Pájaro: mirá este hilo quizá te sea útil: http://www.todopic.com.ar/foros/index.php?topic=37028.msg307851#msg307851 saludos. jukinch
Título: Re: :: i2c no permite enviar 1 como dato ::
Publicado por: pajaro en 11 de Agosto de 2012, 16:14:08
Hola gracias jukinch.
yo pienso que mi problema no es el vector, a lo mejor estoy equivocado.. pero uso los vectores asi y me han funcionado pero el i2c...
mi problema creo que es que por alguna razon que aun desconozco o no di con ella, esto es que el envio de datos por i2c desde el master al esclavo se bloquea y creo que es desde el esclavo ademas cuando envia un dato el master y ese dato es 1 con el resto de datos no que no es 1, no se da este comportamineto (si pudiera ver el tramado de SCL y SDA con alguna grafica en proteus para ver como hacen las señales ...) no se si es el ccs o el simulador proteus, o algun error muy tonto en el codigo de i2c.
Si pudiera cargar directamente sobre el pic fisicamante y depurar sobre el pic con el ccs eso seria una maravilla.
Agradezco tu respuesta y el interes que te has tomado, gracias compañero.