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

LPC1114+NT7538H - Brak reakcji wyświetlacza, napięcie na V0-V4 tylko 0,3V

docencior 20 Wrz 2014 17:48 1140 8
REKLAMA
  • #1 13976148
    docencior
    Poziom 10  
    Posty: 77
    Ocena: 9
    Witam

    Chciałem napisać dla siebie własną bibliotekę obsługującą jednokolorowy wyświetlacz 128x64 ze sterownikiem NT7538H i po około 20 godzinach pracy zwątpiłem i postanowiłem poprosić o pomoc.

    datasheet

    Oto datasheet do tego kontrolera. Może zanim wrzucę schemat połączeń i kod zadam jedno pytanie.
    Mój problem polega na tym, że wyświetlacz kompletnie nie reaguje na żaden rozkaz. Jest całkowicie pusty (działa tylko podświetlenie). Dlatego pomyślałem, że jest po prostu wadliwy. Zmierzyłem napięcie z wbudowanego konwertera dc na wyjściach V0-V4 i wskazują jakieś 0,3V. Moje pierwsze pytanie brzmi. Czy podłączając tylko zasilanie do takiego wyświetlacza na wyjściach V0-V4 nie powinno się pojawić napięcie? Jeśli jest to zupełnie normalne zjawisko i wewnętrzny konwerter trzeba uruchomić odpowiednim rozkazem to wrzucę mój kod. Na początku chciałbym się upewnić, że wyświetlacz nie jest wadliwy.


    EDYCJA.

    Plik cr_startup_lpc11xx.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Plik initlcd.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Plik initlcd.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Plik main.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 13976470
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    To pisałeś kod i nie wiesz czy "jakimś rozkazem" trzeba coś uruchomić? To co ty tak naprawdę pisałeś? Pisałeś czy "kopiuj wklej" z netu bez wnikania co ten kod robi?

    Co do twojego pytania to odpowiedź brzmi "TAK". Trzeba wysłać odpowiednie rozkazy żeby wewnętrzny generator napięć zaczął pracować. Jest to związane z trybem oszczędzania energii.
  • REKLAMA
  • #3 13976739
    docencior
    Poziom 10  
    Posty: 77
    Ocena: 9
    W takim razie się poddaje i wrzucam wszystkie funkcje, które według mnie powinny uruchomić wewnętrzny generator. Po wywołaniu funkcji initLCD nic się nie dzieje. Dodam, że pracuje na LPC1114 taktowanym zegarem wewnętrznym 12MHz.
  • REKLAMA
  • #4 13976917
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Czy włączyłeś blok IOCON?
  • #5 13977000
    docencior
    Poziom 10  
    Posty: 77
    Ocena: 9
    BlueDraco napisał:
    Czy włączyłeś blok IOCON?


    Jeśli chodzi o poniższą linie to nie, nie dodałem. Ale już dodaje. Niestety wyświetlacz dalej nie reaguje.
    
    LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);
  • REKLAMA
  • #6 13977026
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    Przede wszystkim wstaw cały kod - inicjalizacja procesora, pętla main, startup, definicje wejść/wyjść (A0L,CSL,D1H...). Będziemy się tutaj wałkować cały tydzień, a okaże się, że błąd jest gdzie indziej.

    I używaj znaczników SYNTAX przy wklejaniu kodu.
    https://www.elektroda.pl/rtvforum/topic349089.html
  • #7 13977472
    docencior
    Poziom 10  
    Posty: 77
    Ocena: 9
    Zgodnie z zaleceniem dodałem cały kod.
  • #8 13977989
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    Skomplikowałeś do granic możliwości ten kod. Ciężko wyłapać w nim jakikolwiek błąd.
    Jeszcze jedną niewiadomą jest sprzętowa konfiguracja tego wyświetlacza na pinach.

    Jako sekwencję inicjalizującą wyświetlacz wyślij do niego zawartość tej tablicy
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #9 13979273
    docencior
    Poziom 10  
    Posty: 77
    Ocena: 9
    Udało się uruchomić wewnętrzny konwerter

    Błąd był tu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Powinno być tak
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Zwykłe gapiostwo z mojej strony...

    Ale wyświetlacz jak był pusty tak jest pusty.
    Stąd kolejne pytanie o wyświetlanie danych. Czy jest potrzebny jakiś trigger żeby dane z RAMu wyświetlacza wysłać na sam wyświetlacz? Datasheet mówi, że jest tam jakiś bufer ale jak zapalić jakieś piksele? Tego już tam nie umieścili...
    Jest tam graf jakiejś prostej sekwencji (write data -> display ON/OFF) ale to nie działa.

Podsumowanie tematu

✨ Użytkownik napotkał problem z jednokolorowym wyświetlaczem 128x64 ze sterownikiem NT7538H, który nie reagował na polecenia, a napięcia na wyjściach V0-V4 wynosiły tylko 0,3V. Po kilku próbach i sugestiach od innych uczestników forum, okazało się, że konieczne jest wysłanie odpowiednich rozkazów do uruchomienia wewnętrznego konwertera napięcia, co jest związane z trybem oszczędzania energii. Użytkownik zaktualizował kod, dodając inicjalizację bloku IOCON, jednak wyświetlacz nadal nie działał. Ostatecznie zidentyfikowano błąd w konfiguracji pinów GPIO, co pozwoliło na uruchomienie konwertera, ale wyświetlacz wciąż pozostawał pusty. Użytkownik zadał pytanie o konieczność wysłania dodatkowych sygnałów do wyświetlania danych z RAM-u, ponieważ dokumentacja nie zawierała wystarczających informacji na ten temat.
Wygenerowane przez model językowy.
REKLAMA