From df6a4c2b5711ba7cda3cadd91d4b625c7a06da9d Mon Sep 17 00:00:00 2001 From: Joshua Drake Date: Thu, 2 May 2024 20:10:00 -0500 Subject: Potentially fixed issues with reading SPI bus, and cleaned up code. --- SPI.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'SPI.c') diff --git a/SPI.c b/SPI.c index 1a1b8b6..a6590b4 100644 --- a/SPI.c +++ b/SPI.c @@ -31,7 +31,7 @@ if (Ohm_150 > 15) Ohm_150 = 15; if (Ohm_68 > 5) Ohm_68 = 5; //WriteBuffer[0] = WriteBuffer[2] = WriteBuffer[4] = (write << 8) | (!write << 7) | 0b000000; - WriteBuffer[0] = WriteBuffer[2] = WriteBuffer[4] = 0b10000000; + WriteBuffer[0] = WriteBuffer[2] = WriteBuffer[4] = 0x80; //WriteBuffer[1] = 0xFF >> (15-Ohm_150); //WriteBuffer[3] = 0xFE << (7-(Ohm_150-8)) | (Ohm_68 - 4); //2WriteBuffer[1] = 0x0F << (4-(Ohm_68 - 1)) | (testLED << 7); @@ -41,23 +41,28 @@ WriteBuffer[5] = 0xff >> (15-Ohm_150); //WriteBuffer[1] = 0xFF; //if (Ohm_68 == 5) WriteBuffer[3]|= 0b10000000; + SPI_slaveSelect(); readData = MSSP1_SPI_Exchange8bitBuffer(WriteBuffer, 6, ReadBuffer); + SPI_slaveDeselect(); } - int active150() + void active(uint8_t *ohm150, uint8_t *ohm68) { WriteBuffer[0] = WriteBuffer[2] = WriteBuffer[4] = 0x40; WriteBuffer[1] = WriteBuffer[3] = WriteBuffer[5] = 0x02; + SPI_slaveSelect(); readData = MSSP1_SPI_Exchange8bitBuffer(WriteBuffer, 6, ReadBuffer); - return bitcount(ReadBuffer[2]&0x7F) + (bitcount(ReadBuffer[4])); //+ bitcount(ReadBuffer[3] << 1)); - } - int active68() - { - WriteBuffer[0] = WriteBuffer[2] = WriteBuffer[4] = 0x40; - WriteBuffer[1] = WriteBuffer[3] = WriteBuffer[5] = 0x02; + SPI_slaveDeselect(); + WriteBuffer[0] = WriteBuffer[2] = WriteBuffer[4] = 0x00; + WriteBuffer[1] = WriteBuffer[3] = WriteBuffer[5] = 0x00; + SPI_slaveSelect(); readData = MSSP1_SPI_Exchange8bitBuffer(WriteBuffer, 6, ReadBuffer); - return ((ReadBuffer[2] & 0x80) + bitcount(ReadBuffer[0] & 0x0f)); + SPI_slaveDeselect(); + ohm150 = bitcount(ReadBuffer[3]&0x7F) + bitcount(ReadBuffer[5]); //+ bitcount(ReadBuffer[3] << 1)); + //ohm150 = bitcount(ReadBuffer[3]);// + ReadBuffer[5] + ReadBuffer[3] + ReadBuffer[1]; + ohm68 = ((ReadBuffer[3] & 0x80)>>7) + bitcount(ReadBuffer[0] & 0x0f); } + void Message_BIM(uint8_t outputs[3]) { WriteBuffer[0] = WriteBuffer[2] = WriteBuffer[4] = (write << 8) | (!write << 7) | 0b000001; @@ -114,16 +119,13 @@ WriteBuffer[5] = outputs[2]; } - void Message_HWCR(uint8_t outputs[3]) - { - //WriteBuffer[0] = WriteBuffer[2] = WriteBuffer[4] = (write << 8) | (!write << 7) | 0b001100; - //WriteBuffer[1] = outputs[0]; - //WriteBuffer[3] = outputs[1]; - //WriteBuffer[5] = outputs[2]; - - WriteBuffer[0] = 0b10001100; - WriteBuffer[1] = 0b10000000; - readData = MSSP1_SPI_Exchange8bitBuffer(*WriteBuffer, 2, *ReadBuffer); + void Message_HWCR() + { + WriteBuffer[0] = WriteBuffer[2] = WriteBuffer[4] = 0x8C; + WriteBuffer[1] = WriteBuffer[3] = WriteBuffer[5] = 0xC0; + SPI_slaveSelect(); + readData = MSSP1_SPI_Exchange8bitBuffer(WriteBuffer, 6, ReadBuffer); + SPI_slaveDeselect(); } void Message_HWCROCL(uint8_t outputs[3]) -- cgit v1.2.3