From f00c4e24e16c304359b1c1989e5962d93c209374 Mon Sep 17 00:00:00 2001 From: Paul Goeser Date: Sat, 11 Dec 2010 18:33:06 +0100 Subject: [PATCH] debugging of spi. status: master no longer freezes, still no response from slave via usb --- firmware/masterchip/Makefile | 2 ++ firmware/masterchip/main.c | 7 +++++++ firmware/masterchip/spi_config.h | 2 +- firmware/shared/spi.c | 4 ++-- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/firmware/masterchip/Makefile b/firmware/masterchip/Makefile index 41d1edd..6630a39 100644 --- a/firmware/masterchip/Makefile +++ b/firmware/masterchip/Makefile @@ -27,6 +27,8 @@ flash: all fuses: avrdude -c usbasp -p m88 -U lfuse:w:0xdf:m -U hfuse:w:0xde:m # external oscillator +reset: + avrdude -c usbasp -p m88 ## what are the source dependencies %.d: %.c diff --git a/firmware/masterchip/main.c b/firmware/masterchip/main.c index 3068bea..632788a 100644 --- a/firmware/masterchip/main.c +++ b/firmware/masterchip/main.c @@ -61,6 +61,13 @@ int __attribute__((noreturn)) main(void) { softinit(); usbInit(); + //hard-reset usb for debugging ease #TODO:remove + cli(); + usbDeviceDisconnect(); + _delay_us(100); + usbDeviceConnect(); + sei(); + for(;;){ usbPoll(); diff --git a/firmware/masterchip/spi_config.h b/firmware/masterchip/spi_config.h index 08250e4..6cb5a59 100644 --- a/firmware/masterchip/spi_config.h +++ b/firmware/masterchip/spi_config.h @@ -1,5 +1,5 @@ -#define SPI_BAUDRATE 1000000 +#define SPI_BAUDRATE 10000 #define SPI_MASTER #define SPI_SS_PORT D #define SPI_SS_PIN 7 diff --git a/firmware/shared/spi.c b/firmware/shared/spi.c index 281c020..d5adbee 100644 --- a/firmware/shared/spi.c +++ b/firmware/shared/spi.c @@ -37,7 +37,7 @@ void spi_init(){ */ #define D_VAL (F_CPU / SPI_BAUDRATE) #if ((D_VAL >> 8) > 0 ) -#warning "spi baudrate too slow, cannot be set" +#warning "spi baudrate too slow, cannot be set (clamped to minimum)" #endif d = spi_clock_divisor(); @@ -86,7 +86,7 @@ void spi_mst_end_packet(){ #endif } -#define SPI_WAIT while(SPSR & _BV(SPIF)){;} +#define SPI_WAIT while(!(SPSR & _BV(SPIF))){;} void spi_mst_write(uint8_t len, uint8_t *data){ while(len>0){