> These are the register values that I can see in a simulation session by > Mplab: > Address Symbol Value > 93 SSPADD B'10100100' > 14 SSPCON B'00111110' <<<<< Is This value > rigth? Yes, that's right if you want to be interrupted on any Bus START or STOP condition. Your ISR must handle the START and STOP events. These will occur even if your slave is not addressed! So if your ISR is expecting an address byte on the first interrupt, it will not be there yet. I use SSPCON = B'00110110' so that I get interrupt on each byte, but not for every START and STOP. More details in the datasheet. > 13 SSPBUF B'00000000' > 39 SLAVE B'10100100' "SLAVE" must be one of your variables in RAM? It isn't a special function register. > 03 STATUS B'00111100' > 87 TRISC B'00011000' > 94 SSPSTAT B'00000000 > Thisi is the register image that I see when the PIC is waiting for a I2C > message, and another PIC (Programmed as Master) or a PC (that trys with > every possible address to catch an ack, scanning for active devices on the > bus) are sending their message > What do you think about it? I think that its hard to simulate an I2C message in MPSIM, and I wonder if the interrupt routine is doing what you expect when the address byte arrives. > And I'm waiting to obtain the use of an emulator, by which > I think to see the complete real register situation of the micro during > program esecution, to see where is the problem. > May be that the PIC doesn't sense the START condition? You said you checked that on the 'Scope. Is the START valid and meeting all the setup times? When you do your test program, if you want to handle the START interrrupt, you could signal that, too, to confirm it was detected. ------------ Barry King, KA1NLH Engineering Manager NRG Systems "Measuring the Wind's Energy" Hinesburg, Vermont, USA www.nrgsystems.com