TFT 3,5" и Ардуино

slider
Offline
Зарегистрирован: 17.06.2014

ну или расписать  PORTD |=  как в файле  pin_magic.h библиотеки Adafruit_TFTLCD

 #define write8inline(d) { 
    PORTD = (PORTD & B00000011) | ((d) & B11111100); 
    PORTB = (PORTB & B11111100) | ((d) & B00000011); 
.....
- это пример для раскидывания дисплейных пинов DB0-DB7 на соответственно D8 D9 (portD )  D2 D3 D4 D5 D6 D7 (portB)
 
считываются данные с порта , накладывается маска  тех битов что будете пользовать  ваш байт с его маской .
 
 
// м.б. так
    PORTD = (PORTD & B00001111) | (ch & B11110000); 
    PORTB = (PORTB & B11110000) | (ch & B00001111); 

 

kipriyan
Offline
Зарегистрирован: 13.06.2017

Спасибо. По последнему варианту (как в Адафруит) заработало.

rdh90
Offline
Зарегистрирован: 10.01.2020

_BadWolf_ пишет:

sdkf70 пишет:

Какие библиотеки используете , если не секрет ?

https://github.com/prenticedavid/MCUFRIEND_kbv универсальная....... жизни, сейчас ковыряю ее, чтобы перенести дата-пины на другой порт блюпила. (разпиновку можно узнать в файле utills/mcufriend_shield.h в разделе своего МК)

Здравствуйте, аналогичная задача стоит по переносу пинов на меги2560, на пины с21 по 53, дабы скетч уже есть готовый под такой  экран, китаеза подсунул.. Вы писали. """Он такой же Судя по фотографии у вас шилд на 3.5 дюймов на контроллере ILI9486 (как и у меня)""

Прошу Вас поделиться наработками по этому делу ( изменения в библиотеке, скетче.. и т.д.). Буду очень благодарен. 

_BadWolf_
Offline
Зарегистрирован: 24.04.2019

Там все сугубо инливидуально под каждой случай свое. utills/mcufriend_shield.h вот тут нужно найти под мегу настройки и поменять под себя там функции read8() read16() и write8() write16()

rdh90
Offline
Зарегистрирован: 10.01.2020

_BadWolf_ пишет:

Там все сугубо инливидуально под каждой случай свое. utills/mcufriend_shield.h вот тут нужно найти под мегу настройки и поменять под себя там функции read8() read16() и write8() write16()

Спасибо, с наскоку так и не понял, если на STM32, подробно обозначены пины, то на МЕГУ2560, две строчки..

может со временем разберусь. . Папка умня только"" utility " , может библиотека другая, хотя с ней примеры пашут.. .Глянуть бы практически, как у вас выполнено, мне только данные переташить, аналоговые пусть сидят на месте.

_BadWolf_
Offline
Зарегистрирован: 24.04.2019

https://github.com/prenticedavid/MCUFRIEND_kbv/blob/master/utility/mcufriend_shield.h#L68
 

 вот на 68 строке для меги. переделать под свои нужды эти функции.

b707
Offline
Зарегистрирован: 26.05.2017

rdh90 пишет:

мне только данные переташить, аналоговые пусть сидят на месте.

что-то вы какую-то ерунду делаете.

причем тут вообще аналоговые пины, если вы подключаете дисплей?

rdh90
Offline
Зарегистрирован: 10.01.2020

_BadWolf_ пишет:

Там все сугубо инливидуально под каждой случай свое. utills/mcufriend_shield.h вот тут нужно найти под мегу настройки и поменять под себя там функции read8() read16() и write8() write16()

#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__)       //regular UNO shield on MEGA2560
#define RD_PORT PORTF
#define RD_PIN  0
#define WR_PORT PORTF
#define WR_PIN  1
#define CD_PORT PORTF
#define CD_PIN  2
#define CS_PORT PORTF
#define CS_PIN  3
#define RESET_PORT PORTF
#define RESET_PIN  4
 
#define EMASK         0x38
#define GMASK         0x20
#define HMASK         0x78
#define write_8(x)   {  PORTH &= ~HMASK; PORTG &= ~GMASK; PORTE &= ~EMASK; \
                        PORTH |= (((x) & (3<<0)) << 5); \
                        PORTE |= (((x) & (3<<2)) << 2); \
                        PORTG |= (((x) & (1<<4)) << 1); \
                        PORTE |= (((x) & (1<<5)) >> 2); \
                        PORTH |= (((x) & (3<<6)) >> 3); \
}
 
#define read_8()      ( ((PINH & (3<<5)) >> 5)\
                      | ((PINE & (3<<4)) >> 2)\
                      | ((PING & (1<<5)) >> 1)\
                      | ((PINE & (1<<3)) << 2)\
                      | ((PINH & (3<<3)) << 3)\
                      )
#define setWriteDir() { DDRH |=  HMASK; DDRG |=  GMASK; DDRE |=  EMASK;  }
#define setReadDir()  { DDRH &= ~HMASK; DDRG &= ~GMASK; DDRE &= ~EMASK;  }
#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))
 
 
 
выложил кусок библиотеки, может так виднее будет. из папки utilty/mcufriend_shield.h
rdh90
Offline
Зарегистрирован: 10.01.2020

я имею ввиду это пусть сидит на месте. 

#define RD_PIN  0
#define WR_PORT PORTF
#define WR_PIN  1
#define CD_PORT PORTF
#define CD_PIN  2
#define CS_PORT PORTF
#define CS_PIN  3
#define RESET_PORT PORTF
#define RESET_PIN  4