From ff09314ab84b23ab44384c71f054b2c59c385615 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Wed, 5 Dec 2012 17:15:49 -0800 Subject: [PATCH] AP_HAL_AVR: SPI debugging --- libraries/AP_HAL_AVR/SPIDevice_SPI0.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/AP_HAL_AVR/SPIDevice_SPI0.cpp b/libraries/AP_HAL_AVR/SPIDevice_SPI0.cpp index 9d059189ad..42b5b0f557 100644 --- a/libraries/AP_HAL_AVR/SPIDevice_SPI0.cpp +++ b/libraries/AP_HAL_AVR/SPIDevice_SPI0.cpp @@ -16,6 +16,8 @@ extern const AP_HAL::HAL& hal; AVRSemaphore AVRSPI0DeviceDriver::_semaphore; +static volatile bool spi0_transferflag = false; + void AVRSPI0DeviceDriver::init() { hal.gpio->pinMode(SPI0_MISO_PIN, GPIO_INPUT); hal.gpio->pinMode(SPI0_MOSI_PIN, GPIO_OUTPUT); @@ -50,12 +52,18 @@ void AVRSPI0DeviceDriver::cs_release() { } uint8_t AVRSPI0DeviceDriver::transfer(uint8_t data) { + if (spi0_transferflag) { + hal.console->println_P(PSTR("PANIC: SPI0 transfer collision")); + } + spi0_transferflag = true; SPDR = data; if (SPSR & _BV(WCOL)) { hal.console->println_P(PSTR("PANIC: SPI0 write collision")); return 0; } while(!(SPSR & _BV(SPIF))); - return SPDR; + uint8_t read_spdr = SPDR; + spi0_transferflag = false; + return read_spdr; }