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

HD44780 - Wyświetlanie znaków po wył/wł zasilania

Imekxus 23 Sie 2014 15:47 1191 7
REKLAMA
  • #1 13900977
    Imekxus
    Poziom 19  
    Dzień dobry, na początek kod:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Mój problem polega na tym, że jak wgram program to wszystko jest ok, jednak po odłączeniu i dołączeniu zasilania (lub wypięciu/wpięciu programatora usb, bo używam go też do zasilania uC) na ekranie nic się nie pojawia, tj. muszę wcisnąć kilkukrotnie (5~razy) reset aby tekst wpisany w programie się pojawił

    Jeżeli ktoś ma jakieś podejrzenia to chętnie przeczytam
  • REKLAMA
  • #2 13901016
    Alana
    Poziom 37  
    Moim zdaniem cos z ukladem reset.
    Daj schemat podlaczenia mikrokontrolera i przejzyj http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html

    Drugi mozliwy "myk" - brak opoznienia pomiedzy wlaczeniem zasilania a wyslaniem komend na wyswietlacz. W datashetcie do HD44780 jest informacja ze wyswietlacz jest "zajety" [i gluchy] przez 10ms od momentu jak napiecie zasilania wzrosnie powyzej 4.5V.
    Ja w swoich projektach zwykle dawalam 100ms i wiecej opoznienia i dzialalo.
  • REKLAMA
  • #3 13901083
    Imekxus
    Poziom 19  
    Możliwość złego połączenia może dla ułatwienia odrzucę obecnie ze względu na to, że nie chce mi się rysować schematu, uC wykorzystywałem w tej samej konfiguracji do poprzednich ćwiczeń i tak, wiem o minimalnym podłączeniu zasilania Vcc/ADC Vcc itp.
    Co do opóźnień mam przecież na początku jeszcze przed przystąpieniem do inicjalizacji przez przesyłanie półbitów wstawiony delay na 16ms, gdy wrzuciłem na nim 5000ms to uwaga, w ogóle nie chciało wgrywać tekstu.
    Skłaniam się ku temu, że napięcie nie nadąża narosnąć do określonej wartości, ponieważ czasami jak kilkukrotnie odłączę zasilanie i znów załączę to tekst się pojawi, i tak na zmianę jak się uda to się pojawi, jak nie to nie.

    edit
    Obecnie jestem na etapie tego, że jak dodam w nagłówku define F_CPU 1000000UL to wyświetlacz nie działa, a jak dam zamiast 1M 8M to działa tak jak by nie było tej dyrektywy preprocesora (czyli tak jak w 1 poście)
  • Pomocny post
    #4 13901127
    tmf
    VIP Zasłużony dla elektroda
    Ponieważ twój kod wygląda na nieźle "pokręcony" proponuję abyś sprawdził czy wszystko działa używając jakiegoś sprawdzonego kodu - np. z przykładów do mojej książki "Język C..." - są do pobrania za darmo, więc nie ma problemu. Jeśli na tym ruszy bez problemu to przyczyna jest oczywista - błąd w twoim kodzie - najpewniej timingi nie do końca pasujące do LCD. Jeśli kłopoty będą te same to znaczy, że błąd może też być w układzie elektronicznym - jednak schemat byłby wskazany niezależnie co odrzucasz a co nie.
  • REKLAMA
  • REKLAMA
  • #6 13902765
    excray
    Poziom 41  
    Nie zachowujesz minimalnych czasów z noty katalogowej. Wystarczy spojrzeć na funkcję writeData() czy inicjalizację.
  • Pomocny post
    #7 13903431
    nsvinc
    Poziom 35  
    Nie wszystkie wyswietlacze 'zgodne z HD44780' są z faktycznie zgodne; przynajmniej jesli chodzi o timingi. Np. FORDATA z maritexu nie jest. Potrzebuje znacznie dluzszą rozbiegówkę niż definiuje standard. Podobnie jest z niektorymi wyswietlaczami WINSTAR. Bywają tez modele które chodzą z 3.3V... Chinczyczy mają standardy w głębokim poważaniu ;) ;) a zdarza się że ichni hardware ma inne parametry pracy niz podane w ich wlasnym datasheet'cie ;]

    Lepiej na rozruch ustawic czasy 'absurdalne' (rzędu 10 x dluzsze niz podaje datasheet do HD44780), i sprawdzic czy wyswietlacz rusza. Jesli nie, to błąd jest na pewno w sofcie obsługi a nie w timingach. No a jeśli ruszy to wtedy mozna eksperymentalnie czasy skracać, do momentu az przestaje działać ;]
  • #8 13923196
    Imekxus
    Poziom 19  
    Już mnie krew zalewa od tego wyświetlacza, historia jest taka, że najpierw, zanim w ogóle zacząłem kombinować swój kod ściągnąłem sobie tą bibliotekę dla 4bit i R/!W do GND:
    Link do bilbioteki HD44780 by Radzio
    Wtedy jakiś tam kod napisałem, wszystko działało (nie pamiętam tylko, czy występował taki sam problem jak u mnie z tym odłączaniem zasilania, bo jak zobaczyłem tekst od razu wziąłem się do pisania swojego kodu).
    Teraz chciałem na próbę (sprawdzić mój problem jak doradził mi użytkownik tmf) znów wpisać tekst do wyświetlacza za pomocą biblioteki podanej w linku i już nie działa =).

    W każdym razie nie chcę zostawić tematu nie rozwiązanego, na razie sam z tym walczę ale jak ktoś ma jakieś sugestie to chętnie posłucham, później jak sytuacja się mi jeszcze bardziej skomplikuje to spróbuję jeszcze poszukać tych bibliotek od tmf.

    #edit
    jest postęp, znowu mi działa biblioteka Radza, teraz uwaga, działa dobrze ! tj. po wył/wł zasilania tekst pojawia się za każdym razem (a nie losowo jak u mnie), także błąd gdzieś w moim kodzie (ciekawe gdzie), teraz zacznę porównanie mojego kodu oraz kodu z pobranej bilblioteki

    #edit
    problem rozwiązany, chodziło o to, że przy trzykrotnym włączeniu trybu 8 bitowego przy inicjalizacji wyświetlacza i przełączaniu na tryb 4 bitowy, należało najpierw włączyć enable, następnie podać bity tak aby tryb był 4 bitowy i ostatecznie należało pin enable postawić w stan 0

    kod po poprawieniu:
    Kod: text
    Zaloguj się, aby zobaczyć kod
REKLAMA