Autor Tema: problema al usar interrupcion y I2C  (Leído 1423 veces)

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

Desconectado electroipod

  • PIC16
  • ***
  • Mensajes: 166
problema al usar interrupcion y I2C
« en: 12 de Mayo de 2012, 00:09:26 »
No se porque me sale este error y llevo horas tratando de solucionarlo ojala me puedan ayudar

 Reentrancy is not allowed: function 'I2C1_Start' called from two threads __Lib_I2C_c34.c
 Reentrancy is not allowed: function 'I2C1_Init' called from two threads __Lib_I2C_c34.c
 Reentrancy is not allowed: function 'I2C1_Rd' called from two threads __Lib_I2C_c34.c
 Reentrancy is not allowed: function 'I2C1_Wr' called from two threads __Lib_I2C_c34.c

lo que quiero hacer es un reloj con el ds1307 y cuando pongo esta interrupcion me sale el error de arriba

void leerds1307(void)
{
I2C1_Init(100000);
I2C1_Start();
I2C1_Wr(0xd0);//DIRECCION + ESCRITURA
I2C1_Wr(0);//DIRECCION DE MEMORIA
I2C1_Repeated_Start();
I2C1_Wr(0xd1);//direccion mas lectura
DSSEG=I2C1_Rd(1);//lectura de segundos
DSMIN=I2C1_Rd(1);//lectura de minutos
DSHOR=I2C1_Rd(0);//lectura de horas
I2C1_Stop();
}
void interrupt(void){
if (INTCON.INTF) // aca uso la interrupcion por RB0 conectado al pin sqw/out del ds1307 cuando cambia de estado
{

  leerds1307(); //cuando comento esta linea el programa compila muy bien pero cuando esta asi sale el error de arriba
}

}

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: problema al usar interrupcion y I2C
« Respuesta #1 en: 12 de Mayo de 2012, 00:16:14 »
Crea una bandera en la interrupción y en el while principal llamas a la función al detectar la activación de la bandera.
No contesto mensajes privados, las consultas en el foro