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

Atmega 16A + wc1602a0-sfylync0 - nie znikające prostokąty- błąd inicjalizacji?

adik_milion 27 Sty 2013 00:51 2286 5
  • #1 11846643
    adik_milion
    Poziom 1  
    Witam,
    jestem nowy na forum i postaram sie opisać zwięźle i dokładnie. Mam pewien problem z Atmegą 16A i wyświetlaczem wc1602a0-sfylync06. Otóż było już kilka tematów związanych z tym wyświetlaczem ale mnie już sprawa przerasta. Podłączenie jest dokładnie takie samo jak na stronie radzia:
    Link
    korzystam tak samo z tyhc samych bibliotek i wyświetlacz jest podłączony do PA 2-7.
    Uprzedzam pytania: contrast podłączony przez potencjometr i D0-D3 nie podłączone do masy.
    Oto plik HD44780.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

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

    i na koniec mój kod
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Jak macie jakieś pomysły to bardzo proszę o informacje bo już opadam z sił, z góry dzięki za odpowiedzi
  • #2 11846801
    dondu
    Moderator na urlopie...
    Witaj.

    Po pierwsze lekceważysz warningi, które wyrzuca Ci kompilator, stąd stoisz na 10 stopniu piekiełka.

    Po drugie definiujesz w kodzie F_CPU po wcześniejszym linkowaniu pliku delay.h.

    Po trzecie nie definiuj F_CPU w kodzie ponieważ: http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html

    Na naszym forum kody programów wklejamy w znaczniku SYNTAX, a nie CODE. Wtedy kod jest kolorowany i łatwiej go analizować.
  • #3 11847025
    BlueDraco
    Specjalista - Mikrokontrolery
    Procedury LCD_write i LCD_Initialize to jakaś radosna twórczość, całkowicie niezgodna z wymaganiami HD44780. Ja bym się raczej zdziwił, gdyby one działały.

    Nie wiem, skąd się biorą takie potworki. W Datasheet HD44780 jest opisane bardzo dokładnie, jak to się robi, a co tydzień na tym forum ktoś pokazuje jakiś bzdurny kod i pyta, dlaczego nie działa.

    Jakieś 2..3 tygodnie temu wrzuciłem na forum mój kod napisany na podstawie dokumetacji HD44780 - znajdź i korzystaj.
  • #5 11847756
    BlueDraco
    Specjalista - Mikrokontrolery
    Może na zasadzie "koledze działają, to i u mnie powinny". :) Jak ja to lubię.. Nieważne, że nie mają prawa działać - komuś działały, więc muszą działać i u mnie.

    Timingi szyny HD44780 są dość dobrze określone - dane mają być stabilne PRZED zmianą stanu E na wysoki, minimalny czas trwania stanu wysokiego/niskiego E to 500 ns. W radosnych bibliotekach zwykle dane zmieniane są w czasie, gdy E jest wysoki, a opóźnienia pomiędzy poleceniami sekwencji inicjującej są dobrane wg. fantazji piszącego, a nie wg. manuala HD44780.

    Zauważ, że Radosny Radzio konsekwentnie zmienia dane przy E wysokim, a zaraz po ustawieniu ostatniego bitu zmienia E na 0; odczekiwania pomiędzy zmianą na 0 i powtórną na 1 nie ma wcale, bo działanie kodu opiera się na nadziei, że procesor będzie bardzo wolny. A co, jak nie jest? - Sukcesów życzę...

    Oczywiście problem może też być znacznie bardziej prozaiczny - niepewne połączenia, złe wysterowanie wejścia kontrastu.
  • #6 11848101
    dondu
    Moderator na urlopie...
    Oczywiście masz rację, ja tego nie podważam, tym bardziej, że jak napisałem nie analizowałem ich :)

    Natomiast w tym wypadku błąd podstawowy wykazałem autorowi w pierwszym poście.
    Mam nadzieję, że autor tematu się odezwie.
REKLAMA