mirror of
https://github.com/YuzuZensai/MCUFRIEND_kbv.git
synced 2026-01-06 04:32:38 +00:00
simplify SPECIAL delays
This commit is contained in:
@@ -1,11 +1,4 @@
|
|||||||
//#define USE_SPECIAL //check for custom drivers
|
//#define USE_SPECIAL //check for custom drivers
|
||||||
#if defined(USE_SPECIAL)
|
|
||||||
#include "mcufriend_special.h"
|
|
||||||
#if !defined(USE_SPECIAL_FAIL)
|
|
||||||
#warning WE ARE USING A SPECIAL CUSTOM DRIVER
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#if !defined(USE_SPECIAL) || defined (USE_SPECIAL_FAIL)
|
|
||||||
|
|
||||||
#define WR_ACTIVE2 {WR_ACTIVE; WR_ACTIVE;}
|
#define WR_ACTIVE2 {WR_ACTIVE; WR_ACTIVE;}
|
||||||
#define WR_ACTIVE4 {WR_ACTIVE2; WR_ACTIVE2;}
|
#define WR_ACTIVE4 {WR_ACTIVE2; WR_ACTIVE2;}
|
||||||
@@ -15,6 +8,14 @@
|
|||||||
#define RD_ACTIVE8 {RD_ACTIVE4; RD_ACTIVE4;}
|
#define RD_ACTIVE8 {RD_ACTIVE4; RD_ACTIVE4;}
|
||||||
#define RD_ACTIVE16 {RD_ACTIVE8; RD_ACTIVE8;}
|
#define RD_ACTIVE16 {RD_ACTIVE8; RD_ACTIVE8;}
|
||||||
|
|
||||||
|
#if defined(USE_SPECIAL)
|
||||||
|
#include "mcufriend_special.h"
|
||||||
|
#if !defined(USE_SPECIAL_FAIL)
|
||||||
|
#warning WE ARE USING A SPECIAL CUSTOM DRIVER
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if !defined(USE_SPECIAL) || defined (USE_SPECIAL_FAIL)
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
//################################### UNO ##############################
|
//################################### UNO ##############################
|
||||||
#elif defined(__AVR_ATmega328P__) //regular UNO shield on UNO
|
#elif defined(__AVR_ATmega328P__) //regular UNO shield on UNO
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
#define setReadDir() { VPORT2.DIR = 0x00; }
|
#define setReadDir() { VPORT2.DIR = 0x00; }
|
||||||
#define write8(x) { write_8(x); WR_STROBE; }
|
#define write8(x) { write_8(x); WR_STROBE; }
|
||||||
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
||||||
#define READ_8(dst) { RD_STROBE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; dst = read_8(); RD_IDLE; }
|
#define READ_8(dst) { RD_STROBE; RD_ACTIVE2; RD_ACTIVE; dst = read_8(); RD_IDLE; }
|
||||||
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
||||||
|
|
||||||
#define PIN_LOW(p, b) (p).OUT &= ~(1<<(b))
|
#define PIN_LOW(p, b) (p).OUT &= ~(1<<(b))
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
// ST7789 says tRC=160ns for ID and tRC=450ns for Frame Memory
|
// ST7789 says tRC=160ns for ID and tRC=450ns for Frame Memory
|
||||||
// ILI9341 says tRC=160ns for ID and tRC=450ns for Frame Memory. They are FASTER
|
// ILI9341 says tRC=160ns for ID and tRC=450ns for Frame Memory. They are FASTER
|
||||||
#define WRITE_DELAY { }
|
#define WRITE_DELAY { }
|
||||||
#define READ_DELAY { RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; }
|
#define READ_DELAY { RD_ACTIVE4; }
|
||||||
#define write_8(x) { VPORT2.OUT = x; }
|
#define write_8(x) { VPORT2.OUT = x; }
|
||||||
#define read_8() ( VPORT2.IN )
|
#define read_8() ( VPORT2.IN )
|
||||||
#define setWriteDir() { PORTCFG.VPCTRLA=0x10; PORTCFG.VPCTRLB=0x32; VPORT2.DIR = 0xFF; }
|
#define setWriteDir() { PORTCFG.VPCTRLA=0x10; PORTCFG.VPCTRLB=0x32; VPORT2.DIR = 0xFF; }
|
||||||
@@ -566,7 +566,7 @@ static __attribute((always_inline)) void write_8(uint8_t val)
|
|||||||
}
|
}
|
||||||
#define write8(x) { write_8(x); WR_ACTIVE; WR_STROBE; WR_IDLE; }
|
#define write8(x) { write_8(x); WR_ACTIVE; WR_STROBE; WR_IDLE; }
|
||||||
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
||||||
#define READ_8(dst) { RD_STROBE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; dst = read_8(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
#define READ_8(dst) { RD_STROBE; RD_ACTIVE4; dst = read_8(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
||||||
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
||||||
// Shield Control macros.
|
// Shield Control macros.
|
||||||
#define PIN_LOW(port, pin) (port)->PIO_CODR = (1<<(pin))
|
#define PIN_LOW(port, pin) (port)->PIO_CODR = (1<<(pin))
|
||||||
@@ -595,7 +595,7 @@ static __attribute((always_inline)) void write_8(uint8_t val)
|
|||||||
#define setReadDir() { PMC->PMC_PCER0 = (1 << ID_PIOD); PIOD->PIO_ODR = DMASK;}
|
#define setReadDir() { PMC->PMC_PCER0 = (1 << ID_PIOD); PIOD->PIO_ODR = DMASK;}
|
||||||
#define write8(x) { write_8(x); WR_ACTIVE; WR_STROBE; WR_IDLE; WR_IDLE; }
|
#define write8(x) { write_8(x); WR_ACTIVE; WR_STROBE; WR_IDLE; WR_IDLE; }
|
||||||
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
||||||
#define READ_8(dst) { RD_STROBE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; dst = read_8(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
#define READ_8(dst) { RD_STROBE; RD_ACTIVE4; dst = read_8(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
||||||
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
||||||
// Shield Control macros.
|
// Shield Control macros.
|
||||||
#define PIN_LOW(port, pin) (port)->PIO_CODR = (1<<(pin))
|
#define PIN_LOW(port, pin) (port)->PIO_CODR = (1<<(pin))
|
||||||
@@ -631,7 +631,7 @@ static __attribute((always_inline)) void write_8(uint8_t val)
|
|||||||
#define setReadDir() { PMC->PMC_PCER0 = (1 << ID_PIOC); PIOC->PIO_ODR = CMASK; }
|
#define setReadDir() { PMC->PMC_PCER0 = (1 << ID_PIOC); PIOC->PIO_ODR = CMASK; }
|
||||||
#define write8(x) { write16(x & 0xFF); }
|
#define write8(x) { write16(x & 0xFF); }
|
||||||
#define write16(x) { write_16(x); WR_ACTIVE; WR_STROBE; WR_IDLE; WR_IDLE; }
|
#define write16(x) { write_16(x); WR_ACTIVE; WR_STROBE; WR_IDLE; WR_IDLE; }
|
||||||
#define READ_16(dst) { RD_STROBE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; dst = read_16(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
#define READ_16(dst) { RD_STROBE; RD_ACTIVE4; dst = read_16(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
||||||
#define READ_8(dst) { READ_16(dst); dst &= 0xFF; }
|
#define READ_8(dst) { READ_16(dst); dst &= 0xFF; }
|
||||||
|
|
||||||
// Shield Control macros.
|
// Shield Control macros.
|
||||||
@@ -668,7 +668,7 @@ static __attribute((always_inline)) void write_8(uint8_t val)
|
|||||||
#define setReadDir() { PMC->PMC_PCER0 = (1 << ID_PIOC); PIOC->PIO_ODR = CMASK; }
|
#define setReadDir() { PMC->PMC_PCER0 = (1 << ID_PIOC); PIOC->PIO_ODR = CMASK; }
|
||||||
#define write8(x) { write16(x & 0xFF); }
|
#define write8(x) { write16(x & 0xFF); }
|
||||||
#define write16(x) { write_16(x); WR_ACTIVE; WR_STROBE; WR_IDLE; WR_IDLE; }
|
#define write16(x) { write_16(x); WR_ACTIVE; WR_STROBE; WR_IDLE; WR_IDLE; }
|
||||||
#define READ_16(dst) { RD_STROBE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; dst = read_16(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
#define READ_16(dst) { RD_STROBE; RD_ACTIVE4; dst = read_16(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
||||||
#define READ_8(dst) { READ_16(dst); dst &= 0xFF; }
|
#define READ_8(dst) { READ_16(dst); dst &= 0xFF; }
|
||||||
|
|
||||||
// Shield Control macros.
|
// Shield Control macros.
|
||||||
@@ -746,8 +746,8 @@ static __attribute((always_inline)) void write_8(uint8_t val)
|
|||||||
}
|
}
|
||||||
#define write8(x) { write16(x & 0xFF); }
|
#define write8(x) { write16(x & 0xFF); }
|
||||||
// ILI9486 is slower than ILI9481
|
// ILI9486 is slower than ILI9481
|
||||||
#define write16(x) { write_16(x); WR_ACTIVE; WR_ACTIVE; WR_STROBE; }
|
#define write16(x) { write_16(x); WR_ACTIVE2; WR_STROBE; }
|
||||||
#define READ_16(dst) { RD_STROBE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; dst = read_16(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
#define READ_16(dst) { RD_STROBE; RD_ACTIVE4; dst = read_16(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
||||||
#define READ_8(dst) { READ_16(dst); dst &= 0xFF; }
|
#define READ_8(dst) { READ_16(dst); dst &= 0xFF; }
|
||||||
|
|
||||||
// Shield Control macros.
|
// Shield Control macros.
|
||||||
@@ -801,9 +801,9 @@ static __attribute((always_inline)) void write_8(uint8_t val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ILI9486 is slower than ILI9481. HX8357-D is slower
|
// ILI9486 is slower than ILI9481. HX8357-D is slower
|
||||||
#define write8(x) { write_8(x); WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_STROBE; WR_IDLE; WR_IDLE; }
|
#define write8(x) { write_8(x); WR_ACTIVE4; WR_STROBE; WR_IDLE; WR_IDLE; }
|
||||||
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
||||||
#define READ_8(dst) { RD_STROBE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; dst = read_8(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
#define READ_8(dst) { RD_STROBE; RD_ACTIVE4; dst = read_8(); RD_IDLE; RD_IDLE; RD_IDLE; }
|
||||||
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
||||||
|
|
||||||
// Shield Control macros.
|
// Shield Control macros.
|
||||||
@@ -937,9 +937,9 @@ static __attribute((always_inline)) void write_8(uint8_t val)
|
|||||||
#define setWriteDir() {GPIOA_PDDR |= AMASK;GPIOC_PDDR |= CMASK;GPIOD_PDDR |= DMASK; }
|
#define setWriteDir() {GPIOA_PDDR |= AMASK;GPIOC_PDDR |= CMASK;GPIOD_PDDR |= DMASK; }
|
||||||
#define setReadDir() {GPIOA_PDDR &= ~AMASK;GPIOC_PDDR &= ~CMASK;GPIOD_PDDR &= ~DMASK; }
|
#define setReadDir() {GPIOA_PDDR &= ~AMASK;GPIOC_PDDR &= ~CMASK;GPIOD_PDDR &= ~DMASK; }
|
||||||
|
|
||||||
#define write8(x) { write_8(x); WR_ACTIVE; WR_ACTIVE; WR_STROBE; }
|
#define write8(x) { write_8(x); WR_ACTIVE2; WR_STROBE; }
|
||||||
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
||||||
#define READ_8(dst) { RD_STROBE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; dst = read_8(); RD_IDLE; }
|
#define READ_8(dst) { RD_STROBE; RD_ACTIVE4; RD_ACTIVE; dst = read_8(); RD_IDLE; }
|
||||||
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
||||||
|
|
||||||
#define PASTE(x, y) x ## y
|
#define PASTE(x, y) x ## y
|
||||||
|
|||||||
Reference in New Issue
Block a user