From 89781839e4fdc0bc5337075528ba40b60378189c Mon Sep 17 00:00:00 2001 From: prenticedavid Date: Tue, 9 Oct 2018 10:36:37 +0100 Subject: [PATCH] rearrange Due timing macros. add extra WR_IDLE for Due --- utility/mcufriend_shield.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/utility/mcufriend_shield.h b/utility/mcufriend_shield.h index 289ff4f..bcabc73 100644 --- a/utility/mcufriend_shield.h +++ b/utility/mcufriend_shield.h @@ -147,6 +147,9 @@ //####################################### DUE ############################ #elif defined(__SAM3X8E__) //regular UNO shield on DUE +#define WRITE_DELAY { WR_ACTIVE; } +#define IDLE_DELAY { WR_IDLE; } +#define READ_DELAY { RD_ACTIVE;} // configure macros for the control pins #define RD_PORT PIOA #define RD_PIN 16 @@ -186,10 +189,11 @@ PMC->PMC_PCER0 = (1 << ID_PIOB)|(1 << ID_PIOC);\ PIOB->PIO_ODR = BMASK; PIOC->PIO_ODR = CMASK;\ } -#define write8(x) { write_8(x); WR_ACTIVE2; WR_STROBE; } +#define write8(x) { write_8(x); WRITE_DELAY; WR_STROBE; IDLE_DELAY; } #define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); } -#define READ_8(dst) { RD_STROBE; RD_ACTIVE; dst = read_8(); RD_IDLE; RD_IDLE; } +#define READ_8(dst) { RD_STROBE; READ_DELAY; dst = read_8(); RD_IDLE; RD_IDLE; } #define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); } + // Shield Control macros. #define PIN_LOW(port, pin) (port)->PIO_CODR = (1<<(pin)) #define PIN_HIGH(port, pin) (port)->PIO_SODR = (1<<(pin)) @@ -425,7 +429,7 @@ void write_8(uint8_t x) #elif defined(STM32F446xx) #define WRITE_DELAY { WR_ACTIVE8; } -#define IDLE_DELAY { WR_IDLE;WR_IDLE;WR_IDLE; } +#define IDLE_DELAY { WR_IDLE2;WR_IDLE; } #define READ_DELAY { RD_ACTIVE16;} #define GPIO_INIT() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOCEN; } #define PIN_OUTPUT(port, pin) PIN_MODE2((port)->MODER, pin, 0x1)