Problema con i2c por software para c18

Hola a todos, tengo un problema con un pic18f87j.

Como los puertos que viene para i2c los tengo ocupados para otras cosas, tengo que realizar la conexion cogiendo otros puertos de I/o, para eso e cogido los H0, H1.

Estoy haciendo una prueba, tan sencilla como escribir un dato varias veces, para comprobar que es asi como hay que hacerlo y medir con el osciloscopio que de verdad sale algo, y algo tan sencillo como eso no me sale, solo recibo tanto en la señal de datos como en la de reloj un 1.

Adjunto el codigo y por favor si alguien me puede ayudar, porque seguro q es una tonteria y no la veo.

Gracias de antemano!!!


#include <p18f87j50.h>
#include <sw_i2c.h>

void delay (void)
{
unsigned int i;
for (i = 0; i < 1000 ; i++)
;
}

static int MOT_ACK;
void main()
{

TRISHbits.TRISH1=0; // el puerto rh1 es ahora salida de datos
TRISHbits.TRISH0=0; // el puerto rh0 es ahora salida de reloj

LATH=0;

while(1)
{

TRISBbits.TRISB4=1;
TRISEbits.TRISE0=0;
if(PORTBbits.RB4)
{
PORTEbits.RE0=1;
}
else
{
PORTEbits.RE0=0;
}

SWStartI2C();
SWWriteI2C(0x10);
delay();
SWWriteI2C(0x10);
delay();
SWWriteI2C(0x10);
delay();
SWStopI2C();
}
}


Para ello he entrado en la libreria sw_i2c.h y he cambiado los `puertos de la siguiente forma:

#define DATA_LOW TRISHbits.TRISH1 = 0; // define macro for data pin output: salida de datos
#define DATA_HI TRISHbits.TRISH1 = 1; // define macro for data pin input: entrada de datos
#define DATA_LAT LATHbits.LATH1 // define macro for data pin latch
#define DATA_PIN PORTHbits.RH1 // define macro for data pin

#define CLOCK_LOW TRISHbits.TRISH0 = 0; // define macro for clock pin output: salida del reloj
#define CLOCK_HI TRISHbits.TRISH0 = 1; // define macro for clock pin input:entrada del reloj
#define SCLK_LAT LATHbits.LATH0 // define macro for clock pin latch
#define SCLK_PIN PORTHbits.RH0 // define macro for clock pin


Gracias otra vez a todos
 
Atrás
Arriba