Hola, explicaré un poco más:
El controlador consta de 2 "controladores", al estilo de dos cdj1000 de pionner o algo por el estilo, pero sin los cd, no se si me explico. Bueno, pues uno de ellos lo llamo A y al otro B. El A se comunica con el PC por medio de USB, utilizo un pic 18F2455, y es la comunicación mediante MIDI por USB para el software a controlar. Con el Traktor funciona perfectamente, envía y recibe información, pero con el Virtual Dj, al utilizar los VDJScripts, algo me falla, pero bueno, si con el Traktor funciona ya es suficiente.
Por otro lado, el controlador B es igual que el A, pero va conectado al A, no al PC, y consta de un pic 16F873A. Le envía la información al A por medio de I2C, y el A se encarga de enviar por USB la información de ambos. Entre el A y el B hay comunicación I2C.
Ahora mismo estoy estancado en esta comunicación I2C. El A lee 1 byte perfectamente de B por I2C en las pruebas, pero en la realidad tengo que leer 3bytes del B y aqui es donde me falla, porque no se que hago mal que no hace la comunicación.
En el master, el A, tengo el siguiente codigo para leer los bytes:
i2c_start();
i2c_write(0x0A+1);
tempoB1=i2c_read();
TB1=i2c_read();
TB2=i2c_read(0);
i2c_stop();
En la interrupción del esclavo, el B, tengo lo siguiente:
#INT_SSP
void ssp_interrupt()
{
state=i2c_isr_state();
if(state==0x80){
i2c_write(buffer[0x00]);
i2c_write(buffer[0x01]);
i2c_write(buffer[0x02]);
}
return;
}
Esto es lo que me falla por el momento.
¿Alguna idea? Un saludo y gracias