Autor Tema: :: ESCLAVO i2c :: discrimina paquete ::  (Leído 1018 veces)

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

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
:: ESCLAVO i2c :: discrimina paquete ::
« en: 29 de Junio de 2012, 21:29:17 »
 hola

Implemente un nuevo codigo en el cual un master escribe sobre
un esclavo de direcion especifican pero en el bus hay otro esclavo
con direcion distinta.

en la interrupcion si state == 0x80 le puse

Código: C++
  1. //i2c_write(Dato1);
  2.             output_high(PIN_B3);
  3.             delay_ms(150);
  4.             output_low(PIN_B3);
  5.             delay_ms(150);
  6.             output_high(PIN_B3);
  7.             delay_ms(150);
  8.             output_low(PIN_B3);
  9.             delay_ms(150);
  10.             output_high(PIN_B3);
  11.             delay_ms(150);
  12.             output_low(PIN_B3);
  13.             printf("\n\r Llego dato.");
  14.             break;


¿por que el dato le llega a los dos esclavo si solo deberia de llegarle a uno?
al que coincide su direcion, mediante proteus vi que le llega primero a uno y despues al otro
tambine probe a cambiar la direcion para versi cogia primero al otro y despues al primero
pero no se los manda de forma seguida pero sin identificar direcion.

en la interrupcion del esclavo puse una condicion que verifique el registro SSPADD, creo que ese es donde guarda las direciones... o eso creo yo


la condicion es :

Código: C++
  1. //en cabecera
  2. //#define S1 0xb0
  3. //#define S2 0xB2
  4.  
  5. if( SSPADD==S1){
  6. printf("\n\r state==0 soy s1: %X" SSPADD);
  7. }

 
en el otro esclavo igual pero para S2

¿que esta ocurriendo?

...



« Última modificación: 30 de Junio de 2012, 06:56:13 por pajaro »