It is been a while since I have worked with SPI and I need a refresher.
Datasheet says:
Each MSSP module consists of a Transmit/Receive
Shift register (SSPxSR) and a Buffer register
(SSPxBUF). The SSPxSR shifts the data in and out of
the device, MSb first. The SSPxBUF holds the data that
was written to the SSPxSR until the received data is
ready. Once the 8 bits of data have been received, that
byte is moved to the SSPxBUF register. Then, the Buffer
Full (BF) detect bit (SSPxSTAT<0>) and the interrupt
flag bit, SSPxIF, are set. This double-buffering of the
received data (SSPxBUF) allows the next byte to start
reception before reading the data that was just received.
Any write to the SSPxBUF register during transmission
or reception of data will be ignored and the Write
Collision Detect bit, WCOL (SSPxCON1<7>), will be set.
User software must clear the WCOL bit so that it can be
determined if the following write(s) to the SSPxBUF
register completed successfully.
It says WCOL needs to be cleared. When? I assume this is before I transmit?
Datasheet says:
Each MSSP module consists of a Transmit/Receive
Shift register (SSPxSR) and a Buffer register
(SSPxBUF). The SSPxSR shifts the data in and out of
the device, MSb first. The SSPxBUF holds the data that
was written to the SSPxSR until the received data is
ready. Once the 8 bits of data have been received, that
byte is moved to the SSPxBUF register. Then, the Buffer
Full (BF) detect bit (SSPxSTAT<0>) and the interrupt
flag bit, SSPxIF, are set. This double-buffering of the
received data (SSPxBUF) allows the next byte to start
reception before reading the data that was just received.
Any write to the SSPxBUF register during transmission
or reception of data will be ignored and the Write
Collision Detect bit, WCOL (SSPxCON1<7>), will be set.
User software must clear the WCOL bit so that it can be
determined if the following write(s) to the SSPxBUF
register completed successfully.
It says WCOL needs to be cleared. When? I assume this is before I transmit?