I have used 9-bit, but not for sending *all* of my packets as 9-bits.
The address is 9-bits. This issues a wake-up call to all slaves on a common serial bus by generating the hardware interrupt.
All slaves are interrupted, but only the one with the matching address responds.
The addressed slave then turns off 9-bit address detection (ADEN = 0), drops into a receive *data* routine, receives & buffers data until an EOM (end of message) marked is received.
All other slave leave 9-bit address detection ON so they will ignore all data being sent to the salve that was addressed.
Then the addressed slave re-sets back to 9-bit for auto address detection, and carries on until interrupted again.
Are you sending *all* of your data from the PC in 9-bit packets with a 1 in bit position 8? Or only the first byte, then clearing this position to 0 for the remainder of your packets?
If you are, are you clearing ADEN after the address to receive data?
Bookmarks