63 lines
2.2 KiB
Plaintext
63 lines
2.2 KiB
Plaintext
/**
|
|
* First stab at a test suite for spi lib.
|
|
*/
|
|
#include <spi.h>
|
|
|
|
void reportError(int line, char *message, uint8_t expected, uint8_t actual)
|
|
{
|
|
Serial.print("Test "); Serial.print(message);
|
|
Serial.print(" failed at line "); Serial.print(line-3);
|
|
Serial.print(", expected="); Serial.print(expected, BIN);
|
|
Serial.print(", actual="); Serial.println(actual, BIN);
|
|
}
|
|
|
|
#define assertEquals(message, expected, actual) \
|
|
if (expected != actual) { reportError(__LINE__, message, expected, actual); return; }
|
|
|
|
|
|
#define test_setup_spi(message, eSPCR, eSPSR, mode, dord, interrupt, clock) \
|
|
setup_spi(mode, dord, interrupt, clock); \
|
|
assertEquals(message, eSPCR, SPCR); \
|
|
assertEquals(message, eSPSR, SPSR & 0x01);
|
|
|
|
|
|
void test_registers()
|
|
{
|
|
// top 4 bits of SPCR - enabled, interrupt, lsb/msb, master/slave
|
|
disable_spi();
|
|
assertEquals("0", 0x00, SPCR);
|
|
|
|
test_setup_spi("1", 0xE0, 0x00, SPI_MODE_0, SPI_LSB, SPI_INTERRUPT, SPI_SLAVE);
|
|
test_setup_spi("2", 0x60, 0x00, SPI_MODE_0, SPI_LSB, SPI_NO_INTERRUPT, SPI_SLAVE);
|
|
test_setup_spi("3", 0x40, 0x00, SPI_MODE_0, SPI_MSB, SPI_NO_INTERRUPT, SPI_SLAVE);
|
|
|
|
// CPOL/CPHA bits - timing mode
|
|
test_setup_spi("4", 0x40, 0x00, SPI_MODE_0, SPI_MSB, SPI_NO_INTERRUPT, SPI_SLAVE);
|
|
test_setup_spi("5", 0x44, 0x00, SPI_MODE_1, SPI_MSB, SPI_NO_INTERRUPT, SPI_SLAVE);
|
|
test_setup_spi("6", 0x48, 0x00, SPI_MODE_2, SPI_MSB, SPI_NO_INTERRUPT, SPI_SLAVE);
|
|
test_setup_spi("7", 0x4C, 0x00, SPI_MODE_3, SPI_MSB, SPI_NO_INTERRUPT, SPI_SLAVE);
|
|
|
|
// clock
|
|
test_setup_spi("9", 0xE0, 1, SPI_MODE_0, SPI_LSB, SPI_INTERRUPT, SPI_MSTR_CLK2);
|
|
test_setup_spi("10", 0xE0, 0, SPI_MODE_0, SPI_LSB, SPI_INTERRUPT, SPI_MSTR_CLK4);
|
|
test_setup_spi("11", 0xE1, 1, SPI_MODE_0, SPI_LSB, SPI_INTERRUPT, SPI_MSTR_CLK8);
|
|
test_setup_spi("12", 0xE1, 0, SPI_MODE_0, SPI_LSB, SPI_INTERRUPT, SPI_MSTR_CLK16);
|
|
test_setup_spi("13", 0xE2, 1, SPI_MODE_0, SPI_LSB, SPI_INTERRUPT, SPI_MSTR_CLK32);
|
|
test_setup_spi("14", 0xE2, 0, SPI_MODE_0, SPI_LSB, SPI_INTERRUPT, SPI_MSTR_CLK64);
|
|
test_setup_spi("15", 0xE3, 0, SPI_MODE_0, SPI_LSB, SPI_INTERRUPT, SPI_MSTR_CLK128);
|
|
}
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(19200);
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
delay(5000);
|
|
Serial.println("Running tests");
|
|
test_registers();
|
|
Serial.println("Run tests");
|
|
while(true);
|
|
}
|