From 257d9fbebde52aedce0779517bf52431719b46ce Mon Sep 17 00:00:00 2001 From: prenticedavid Date: Sun, 31 Dec 2017 21:16:48 +0000 Subject: [PATCH] add driver for mega1284P Bobuino --- utility/mcufriend_shield.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/utility/mcufriend_shield.h b/utility/mcufriend_shield.h index 38b7250..e2bd756 100644 --- a/utility/mcufriend_shield.h +++ b/utility/mcufriend_shield.h @@ -8,6 +8,7 @@ #if !defined(USE_SPECIAL) || defined (USE_SPECIAL_FAIL) #if 0 +//################################### UNO ############################## #elif defined(__AVR_ATmega328P__) //regular UNO shield on UNO #define RD_PORT PORTC #define RD_PIN 0 @@ -35,6 +36,7 @@ #define PIN_HIGH(p, b) (p) |= (1<<(b)) #define PIN_OUTPUT(p, b) *(&p-1) |= (1<<(b)) +//################################### MEGA2560 ############################## #elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) //regular UNO shield on MEGA2560 #define RD_PORT PORTF #define RD_PIN 0 @@ -183,6 +185,7 @@ #define PIN_HIGH(port, pin) (port)->PIO_SODR = (1<<(pin)) #define PIN_OUTPUT(port, pin) (port)->PIO_OER = (1<<(pin)) +//################################### LEONARDO ############################## #elif defined(__AVR_ATmega32U4__) //regular UNO shield on Leonardo #define RD_PORT PORTF #define RD_PIN 7 @@ -234,6 +237,36 @@ void write_8(uint8_t x) #define PIN_HIGH(p, b) (p) |= (1<<(b)) #define PIN_OUTPUT(p, b) *(&p-1) |= (1<<(b)) +//################################### UNO SHIELD on BOBUINO ############################## +#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) //UNO shield on BOBUINO +#warning regular UNO shield on BOBUINO +#define RD_PORT PORTA +#define RD_PIN 7 +#define WR_PORT PORTA +#define WR_PIN 6 +#define CD_PORT PORTA +#define CD_PIN 5 +#define CS_PORT PORTA +#define CS_PIN 4 +#define RESET_PORT PORTA +#define RESET_PIN 3 + +#define BMASK 0x0F // +#define DMASK 0x6C // +#define write_8(x) { PORTB = (PORTB & ~BMASK) | ((x) >> 4); \ + PORTD = (PORTD & ~DMASK) | ((x) & 0x0C) | (((x) & 0x03) << 5); } +#define read_8() ( (PINB << 4) | (PIND & 0x0C) | ((PIND & 0x60) >> 5) ) +#define setWriteDir() { DDRB |= BMASK; DDRD |= DMASK; } +#define setReadDir() { DDRB &= ~BMASK; DDRD &= ~DMASK; } +#define write8(x) { write_8(x); WR_STROBE; } +#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); } +#define READ_8(dst) { RD_STROBE; dst = read_8(); RD_IDLE; } +#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); } + +#define PIN_LOW(p, b) (p) &= ~(1<<(b)) +#define PIN_HIGH(p, b) (p) |= (1<<(b)) +#define PIN_OUTPUT(p, b) *(&p-1) |= (1<<(b)) + //####################################### TEENSY ############################ #elif defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__) // regular UNO shield on a Teensy 3.x #warning regular UNO shield on a Teensy 3.x @@ -456,6 +489,7 @@ void write_8(uint8_t x) #define READ_8(dst) { RD_STROBE; READ_DELAY; dst = read_8(); RD_IDLE; } #define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); } +//################################### ESP32 ############################## #elif defined(ESP32) //regular UNO shield on TTGO D1 R32 (ESP32) #define LCD_RD 2 //LED #define LCD_WR 4