logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Podłączenie dwóch wyświetlaczy ILI9486 do Atmega 2560: układ połączeń i konfiguracja

Pawello 04 Paź 2023 13:55 351 10
REKLAMA
  • #1 20758066
    Pawello
    Poziom 11  
    Witam
    Chcę podłaczyć 2 wyświetlacze ILI 9486 tryb 8bit do atmegi 2560 . I mam pytanie , bo mam problem następującej treści.
    Układ połaczeń jest taki :

    ATMEGA - LCD
    PORTC LCD_D0 - D7 bei 8Bit Mode
    ' PORTG.0 LCD_Reset
    ' PORTG.1 LCD_CS
    ' PORTD.7 LCD_RS
    ' PORTG.2 LCD_WR

    Rs_disp Alias Portd.7 'Display DC RS
    Cs_disp Alias Portg.1 'Display CS
    Res_disp Alias Portg.0 'Display Reset
    Wr_disp Alias Portg.2 'Display WR
    Port_wr Alias Portg 'WR Port
    Const Wrpin = 2 'WR Pin Nr
    'RD Pin pull it high to 3,3V
    Config Rs_disp = Output
    Config Cs_disp = Output
    Config Wr_disp = Output
    Config Res_disp = Output

    Połączyłem 2 wyświetlacze równolegle do atmegi i puściłem demo . Na obu wyświetla się bez problemu obraz , oczywiście taki sam.

    Z ustawień wynika , że transmisja sterowania i danych obrazu wyświetlacza idzie w jednym kierunku- Atmega -> LCD i to jakby potwierdza powyższy wniosek.

    Koncepcje mam taką , na jednym z wyświetlaczy ustawie RD na 0 logiczne i wtedy na tym drugim ( na którym RD jest 1 ) wyswietlę wymagany obraz . Po wyświetleniu tego obrazu, RD ustawię na 0 i zamrożę obraz , a na drugim wyswietlaczu ustawie RD na 1 - i wyswietlę coś innego.
    Założyłem , że ustawienie RD na 0 wymusza brak reakcji na bity sterujące oraz bajt z obrazem. Koncepcja się jednak nie sprawdza. Wymuszenie 0 na RD jednego z wyswietlaczy powoduje stop programu i biały ekran na obu LCD , co przeczy koncepcji transmisji jednokierunkowej.
    Będe wdzięczny za jakieś sugestie , moze mozna zrobic to prosciej
    Pozdrawiam
  • REKLAMA
  • #2 20758074
    gps79
    Poziom 35  
    Do wyboru wyświetlacza służy zwykle pin CS (chip select). Do sprawdzenia w datasheet.
  • #3 20758084
    Pawello
    Poziom 11  
    Czyli CS na Atmedze steruje wyborem wyświetlacza ? To nie SPI
  • REKLAMA
  • #4 20758246
    gps79
    Poziom 35  
    CS w ILI9486, a nie w Atmedze. Poslaczasz dwa wyświetlacze do Atmegi. Wszystkie piny poza CS są wspólne.
    Stan niski na pinie CS wybiera odbiorcę komend (wyswietlacz).
    Niestety nie wiem, czy biblioteka z Bascoma obsługuje więcej niż jeden wyświetlacz.

    Kolejny raz odsyłam do datasheetu ILI.
    Rozdział 7.1.2 8080-Series Parallel Interface.
  • #5 20758879
    Pawello
    Poziom 11  
    Biblioteka niestety nie obsługuje. Temat chciałem rozwiązać w praktyczny sposób.
    Przy wyswietlaczach graficznych 128x64 np ST9720 sprawdzało się odcięcie pinów sterujących z procesora za pomocą zwykłych kluczy 4066 i podłaczenie w tym czasie tych wyprowadzen do innego wyświetlacza. Obraz na 1 lcd został zamrożony , a nowa tresc pojawiała sie na drugim. Trik prosty i skuteczny. Niestety tu nie działa .
  • #6 20759009
    gps79
    Poziom 35  
    Jeśli biblioteka przechowuje aktualny stan wyświetlacza (jakiekolwiek dane), to nie widzę sposobu na obejście problemu sprzętowo.
    Pierwsze, co trzeba zrobić, to analiza biblioteki. Czy posiadasz i możesz udostępnić jej źródła?
  • REKLAMA
  • Pomocny post
    #7 20759127
    bart-projects
    Poziom 29  
    W tej bibliotece prawie nie korzystają z pinu "Cs_disp" i tylko ustawiają ten pin cały czas w stan niski. To normalne jeśli zakłada się, że wyswietlacz będzie tylko jeden.
    Równie dobrze mogliby zaoszczędzić pin mikrokontrolera, ale to było napisane do shielda.

    Skonfiguruj sobie dwa piny jako wyjściowe Disp1 i Disp2
    Odłącz Cs_disp od pinu PORTG.1 bo biblioteka cały czas bedzie ten pin i tak ustawiać w stan niski.

    Teraz jak chcesz coś zrobić na jednym wyswietlaczu to najpierw ustawiasz niski stan na Disp1, wydajesz komendę i z powrotem podnosisz Cs:

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    I gotowe....
  • #8 20759128
    Pawello
    Poziom 11  
    Dziękuję za radę, będę dziś walczył:)
  • Pomocny post
    #9 20759136
    bart-projects
    Poziom 29  
    Gdybyś chciał odzyskać ten pin na PORTG.1 lub jakikolwiek który ustawisz jako ten Cs_disp to musisz otworzyć ILI984x_functions8.inc
    Na otwartym pliku klikasz CTRL+R czyli "Replace"
    W nowootwartym okienku wpisujesz "Cs_disp" a niżej " ' Cs_disp".
    Ten myk zakomentuje używanie pinu Cs_disp w całym pliku i nie przeoczysz żadnego.

    Podłączenie dwóch wyświetlaczy ILI9486 do Atmega 2560: układ połączeń i konfiguracja
  • REKLAMA
  • #11 20759851
    Pawello
    Poziom 11  
    Problem rozwiązał Bart-Projects
    Dziekuje
REKLAMA