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

ATmega16A 3,3V - Brak reakcji LCD HD44780 z buforem 74HC244 5V

maly_elektronik 31 Lip 2012 08:57 3160 23
  • #1 11160600
    maly_elektronik
    Poziom 23  
    Witam,
    kolejnym problemem z którym się niestety napotkałem to brak reakcji ze strony LCD na obsługę bufor :(
    Układ zasilany jest napieciem 3,3V (atmega16a pracuje od 2,7V przy 16MHz).
    Zastosowany przeze mnie bufor to 74HC244 zasilany napięciem 5V.
    Niestety po zaprogramowaniu LCD nawet nie drgnął (widać tylko standardowe czarne kwadraciki co oznacza że zasilony jest dobrze).
    Oto kawałek schematu:
    ATmega16A 3,3V - Brak reakcji LCD HD44780 z buforem 74HC244 5V

    P.S Kod jest poprawy gdyż działa na tym wyświetlaczu na płytce prototypowej (napięcie zasilania 5V)
  • #2 11160711
    hajy
    Poziom 21  
    Witam

    A jak ustawiłeś fusebity szczególnie BODLEVEL i BODEN.
    Sprawdzałeś czy w ogóle procek startuje dodaj leda na jakiś port i mrugaj nim będziesz miał pewność że procek i program działa.
    Poza tym nie widzę żadnych elementów filtrujących koło procesora, mam nadzieje że to tylko dlatego żeby poprawić czytelność schematu.

    Pozdrawiam Romek.
  • #3 11160724
    tmf
    VIP Zasłużony dla elektroda
    Niewykorzystane linie D0-D3 z LCD powinny być połączone z masą, nie mogą wisieć w powietrzu. Sprawdź też poprawność połączeń.
  • Pomocny post
    #4 11160762
    xamrex
    Poziom 28  
    tmf napisał:
    Niewykorzystane linie D0-D3 z LCD powinny być połączone z masą, nie mogą wisieć w powietrzu. Sprawdź też poprawność połączeń.


    http://radzio.dxp.pl/hd44780/hd44780_avr_4-bit_norw_c.htm

    http://mirekk36.blogspot.com/2012/04/lcd-hd4478-jak-podaczac.html
    Cytat:
    Pamiętaj jednak, że obojętnie jak byś nie podłączał pinu R/W to nie daj się zwieść innym poradnikom czy schematom ale także (o zgrozo książkom!!!!), w których zobaczysz, że nie wykorzystywane piny D0...D3 podczas gdy stosujemy magistralę 4-bitową - ktoś podłącza do GND! TAK NIE MOŻNA !!!


    I komu tu wierzyć ?

    tmf Mógłbyś podać info w dokumentacji 44780, która mówi, że przy użyciu 4bitowej magistrali danych należy te pozostałe 4 piny podłączyć do masy
  • #5 11160815
    eleproject

    Poziom 17  
    Mi jeszcze do głowy przychodzi jedno. Możliwe, że wejściowy stan wysoki nie jest interpretowany jako wysoki. Wysoki z procka ma coś poniżej 3.3 V. Zaglądając do dokumentacji np. tutaj można zauważyć, że przy Vcc 4,5 V napięcie Vih wynosi 3.15 V, przy 6 V - 4.2 V. Ty masz Vcc 5 V - może 3.3 V to za mało by było odebrane jako stan wysoki na wejściu przez 74HC244.
  • #6 11160828
    piotrva
    VIP Zasłużony dla elektroda
    No właśnie Kol. xamrex mnie ubiegł w pytaniu.
    Sam osobiście wyznaję szkołę zostawiać wiszące w powietrzu i też słyszałem o tym opinie wielu osób, które tak je podłączają. Co ciekawe ostatnio dostałem 2 urządzenia do napisania oprogramowania i w jednym D0-D3 były zwarte do masy a w drugim wisiały w powietrzu ;-)
  • #7 11160861
    maly_elektronik
    Poziom 23  
    Oczywiście jest prosty filtr ale go pominąłem. Piny wiszą w powietrzu (gdy kiedyś podpialem je do masy lcd się grzal) procek działa poprawnie bo migalem LEDem, a HC chyba interpretuje stany poprawnie bo migalem diodka na jego wyjściu... Jest może jakąś alternatywa dla tego układu żeby go podmienic bo może przy wysokich F nie wyrabia:?:
  • #8 11160867
    mirekk36
    Poziom 42  
    xamrex napisał:


    http://radzio.dxp.pl/hd44780/hd44780_avr_4-bit_norw_c.htm

    http://mirekk36.blogspot.com/2012/04/lcd-hd4478-jak-podaczac.html
    Cytat:
    Pamiętaj jednak, że obojętnie jak byś nie podłączał pinu R/W to nie daj się zwieść innym poradnikom czy schematom ale także (o zgrozo książkom!!!!), w których zobaczysz, że nie wykorzystywane piny D0...D3 podczas gdy stosujemy magistralę 4-bitową - ktoś podłącza do GND! TAK NIE MOŻNA !!!


    I komu tu wierzyć ?


    Jak to komu wierzyć - zdrowemu rozsądkowi i podstawowym prawom fizyki. Podłączanie nie używanych linii I/O D0..D3 wyświetlacza LCD to tak jak byś podłączał wyjścia nie używanych buforów np: 74245 czy jakichkolwiek innych dwukierunkowych buforów do GND. No jak chcesz to prześlę ci nawet 74245 do testów - podłącz jedną stronę we/wy do GND a z drugiej strony na tych samych pinach wystaw stan wysoki - i popatrz sobie ile czasu scalak wytrzyma takie tortury ;) ile czasu będziesz potrzebował żeby poczuć swąd palonego scalaka.

    Linie D3..D0 wyświetlacza LCD nawet jeśli nie używane to nadal są liniami I/O (wejścia/wyjścia) .... wystarczy że sama inicjalizacja pójdzie nie tak jak trzeba ale też podczas odczytu z LCD na tych pinach sterownik wystawi odpowiednie stany logiczne i mogą być różne. Jeśli akurat trafi zero a piny zwarte do GND to nic się nie stanie ale jeśli trafi na JEDYNKĘ czyli wyjście będzie wprost bez rezystora zwarte do GND to trzeba dużo się zastanawiać co się stanie ? Sorry ale ja w ogóle nie widzę nawet miejsca nad czym się tu zastanawiać.

    Dodano po 9 [minuty]:

    Proszę zresztą bardzo rysunek z PDF'a sterownika HD44780 pracującego w trybie 4-bitowym

    ATmega16A 3,3V - Brak reakcji LCD HD44780 z buforem 74HC244 5V

    gdzie tu ktoś widzi zalecenie zwierania wyjść (tak WYJŚĆ bo D0..D3 to także wyjścia a nie tylko wejścia) .... proszę wcześniejszy rysunek schematu wnętrza sterownika:

    ATmega16A 3,3V - Brak reakcji LCD HD44780 z buforem 74HC244 5V

    w większości przypadków nic się nie dzieje, ponieważ zwarcia te są krótkotrwałe i nie zdąży przepłynąć większy prąd, tak jak to się dzieje zresztą w mikrokontrolerach i wielu innych układach tego typu. Ale łatwo sobie wyobrazić że może dojść do dłuższego zwarcia w wyniku nie wiem np zawieszenia się układu itp ... a wtedy kapliczka i pytania na forach co i rusz

    "a dlaczego mi niektóre znaki się nie wyświelają?" albo "a dlaczego niektórych znaków nie widać albo są mniej wyraźne?" albo "a dlaczego pojawiają mi się krzaki w niektórych miejscach znaków a w niektórych widać OK?"
  • #10 11160952
    maly_elektronik
    Poziom 23  
    Niestety nie posiadam oscyloskopu... Może jakas inna propozycja?
  • #11 11160959
    tmf
    VIP Zasłużony dla elektroda
    xamrex napisał:
    tmf napisał:
    Niewykorzystane linie D0-D3 z LCD powinny być połączone z masą, nie mogą wisieć w powietrzu. Sprawdź też poprawność połączeń.


    http://radzio.dxp.pl/hd44780/hd44780_avr_4-bit_norw_c.htm

    http://mirekk36.blogspot.com/2012/04/lcd-hd4478-jak-podaczac.html
    Cytat:
    Pamiętaj jednak, że obojętnie jak byś nie podłączał pinu R/W to nie daj się zwieść innym poradnikom czy schematom ale także (o zgrozo książkom!!!!), w których zobaczysz, że nie wykorzystywane piny D0...D3 podczas gdy stosujemy magistralę 4-bitową - ktoś podłącza do GND! TAK NIE MOŻNA !!!


    I komu tu wierzyć ?

    tmf Mógłbyś podać info w dokumentacji 44780, która mówi, że przy użyciu 4bitowej magistrali danych należy te pozostałe 4 piny podłączyć do masy


    A do tego jest potrzebna specjalna dokumentacja? Jako ogólną zasadę należy przyjąć, że wszystkie niewykorzystane wejścia, a szczególnie wejścia o dużej impedancji muszą mieć wymuszony potencjał - masy lub Vcc. W przeciwnym przypadku będą pływać i łapać zakłócenia, a także będą w stanie przejściowym, co spowoduje znaczny pobór prądu (otwarcie obu tranzystorów wejściowych). Bzdurą jest pisanie o jakiś rzekomych zwarciach w czasie odczytu itd. Wybranie trybu 4-bitowego blokuje najmłodsze bity i kontroler nic na nie wystawia. A jak ktoś obawia się, że coś może poplątać to zawsze może je zewrzeć z masą przez rezystor kilka-kilkadziesiąt kom. Poza tym jeśli ktoś korzysta z trybu 4-bitowego i nie wykorzystuje busy flag (a tak robi znakomita większość) to linia R/W może być wysterowana na stałe, dzięki czemu:
    1. Nie ma możliwości dokonania odczytu, więc żaden wyimaginowany konflikt się nie pojawi.
    2. Oszczędzamy kolejny pin IO procka, a przecież o to chodzi w trybie 4-bitowym.
    Jest jeszcze jedna sprawa - kontroler HD44780 ma różne klony, niewiadomo na ile są elektrycznie kompatybilne - im mniej będzie przypadkowości tym lepiej. Zresztą w necie można znaleźć pełno opisów, w których z wiszącymi liniami D0-D3 nie działąło, a po ich umasieniu wszystko ruszyło.

    Dodano po 9 [minuty]:

    Niestety to co pisze Mirek to wyssane z palca bajki. Nawet na pokazanym przez niego rysunku widać, że bufory dla D0-D3 i D4-D7 są rozdzielone. W dokumentacji też piszą, że w trybie 4-bitowym linie D0-D3 są nieużywane. Warto też spojrzeć na tabelę DC characteristics - wydajność prądowa buforów wyjściowych dla stanu wysokiego to kilkadziesiąt mikroAmperów, więc porównywanie takiego wyimaginowanego zwarcia do zwarcia wysokowydajnego bufora 244, który może w zależności od wersji dawać kilkaset mA jest nonsensem.

    Dodano po 3 [minuty]:

    maly_elektronik napisał:
    Oczywiście jest prosty filtr ale go pominąłem. Piny wiszą w powietrzu (gdy kiedyś podpialem je do masy lcd się grzal) procek działa poprawnie bo migalem LEDem, a HC chyba interpretuje stany poprawnie bo migalem diodka na jego wyjściu... Jest może jakąś alternatywa dla tego układu żeby go podmienic bo może przy wysokich F nie wyrabia:?:


    HC244 nie wyrabia? :)
    Odłącz LCD i programowo ustawiaj stany i sprawdź woltomierzem czy na wyjściu HC244 są poprawne. Tak jak poprzednicy pisali, stan wysoki wystawiany przez MCU jest na granicy tolerancji HC244 - min. gwarantowany to 3,15V, jednak IMHO mało prawdopodobne, że to jest problemem. Pokaż jednak kompletny schemat i program sterujący LCD.
  • Pomocny post
    #12 11161062
    LordBlick
    VIP Zasłużony dla elektroda
    tmf napisał:
    Jako ogólną zasadę należy przyjąć, że wszystkie niewykorzystane wejścia, a szczególnie wejścia o dużej impedancji muszą mieć wymuszony potencjał - masy lub Vcc.
    Linie danych w LCD nie są tylko wejściami. Konsensusem będzie tu po prostu pullup lub pulldown, bezpośrednie podłączanie uważam za bezprzedmiotowe - nie ma pewności, że linia R/W będzie miała zawsze dobry kontakt z GND.
    Problem jest z HC244 - minimalny poziom wysoki na wejściu to (Vcc-1,4V), czyli przy 5V będzie to 3,6V.
    Jeśli stosować tego typu bufor to układ z serii HCT - poziom wysoki na wejściu powyżej 2V.
    Inne wyjście to użyć jako bufora ULN2003 i podciągnąć linie wyjściowe do 5V. Oczywiście dane i linie sterujące wystawiane w µC muszą być zanegowane programowo.
  • #13 11161106
    maly_elektronik
    Poziom 23  
    W takim razie bd zmuszony wykorzystać układ HCT ze względu na identyczną pinolgię :)
    Postaram się w najbliższym czasie dać znać czy układ zaczął działać poprawnie :)
  • #14 11161359
    mirekk36
    Poziom 42  
    tmf napisał:
    Jako ogólną zasadę należy przyjąć, że wszystkie niewykorzystane wejścia, a szczególnie wejścia o dużej impedancji muszą mieć wymuszony potencjał - masy lub Vcc.


    Właśnie WEjścia a nie Wyjścia, co się widać tmf'owi dość mocno myli. Bo linie D0..D3 są także WYjściami. A do wyjść takiej zasady się nie stosuje bo to bzdura.

    LordBlick napisał:
    Linie danych w LCD nie są tylko wejściami. Konsensusem będzie tu po prostu pullup lub pulldown,


    Wystarczy że każdy kto używa taki wyświetlacz sprawdzi sobie jaki jest stan na tych liniach, gdy nie są używane, otóż mają one właśnie już PullUp, panuje na każdej z nich śliczny i równy stan wysoki, gdy przełączone są jako WEjścia. A zatem mają stan ustalony na wejściu.

    LordBlick napisał:
    bezpośrednie podłączanie uważam za bezprzedmiotowe


    Dokładnie, jak ktoś chce się upierać to niech sobie podciągnie te wejścia do GND ale przez rezystory, wtedy będzie to bezpieczne i zgodne z ogólnie przyjętymi zasadami.

    LordBlick napisał:
    - nie ma pewności, że linia R/W będzie miała zawsze dobry kontakt z GND.


    To jedno - a drugie to tak jak mówiłem te wszystkie pierwsze próby początkujących, którzy nie mając jeszcze orientacji przy pierwszym w życiu podłączaniu próbują przeróżnych kombinacji jeśli chodzi o linie sterujące w tym RW i nie tylko .....

    Mając to na uwadze każdy już sam sobie oceni kto tu bajki wyssane z palca opowiada.

    Przy czym brawo dla tmf'a który zwykle powołuje się na inżynierów którzy pisali noty PDF a tym razem najcenniejszym źródłem wiedzy dla niego jest ktoś z netu, kto napisał że gdy miał linie D3..D0 wiszące w powietrzu to mu LCD nie działał, natomiast po "umasieniu" ;) LCD ruszył .... no to dopiero źródło wiedzy eeeeeeś , że też wcześniej nie dotarłem do TAAAKICH źródeł. Ale niestety, prawda jest taka, że net najeżony jest takimi opowieściami rodem z Harry Pottera a potem inni je co i rusz powielają.
  • #15 11161392
    tmf
    VIP Zasłużony dla elektroda
    LordBlick napisał:
    tmf napisał:
    Jako ogólną zasadę należy przyjąć, że wszystkie niewykorzystane wejścia, a szczególnie wejścia o dużej impedancji muszą mieć wymuszony potencjał - masy lub Vcc.
    Linie danych w LCD nie są tylko wejściami. Konsensusem będzie tu po prostu pullup lub pulldown, bezpośrednie podłączanie uważam za bezprzedmiotowe - nie ma pewności, że linia R/W będzie miała zawsze dobry kontakt z GND.
    Problem jest z HC244 - minimalny poziom wysoki na wejściu to (Vcc-1,4V), czyli przy 5V będzie to 3,6V.
    Jeśli stosować tego typu bufor to układ z serii HCT - poziom wysoki na wejściu powyżej 2V.
    Inne wyjście to użyć jako bufora ULN2003 i podciągnąć linie wyjściowe do 5V. Oczywiście dane i linie sterujące wystawiane w µC muszą być zanegowane programowo.


    Układ HT244 ma poziom rozpoznawania stanu wysokiego dla zasilania 4,5V min. 3,15V - nota, strona 6, typowo ma 2,4 V - jak pisałem, jest to na granicy, ale nie powinno to stwarzać problemów. Wersja HCT istotnie przy niższym poziomie rozpoznaje stan wysoki, ale zanim pytający wymieni układ proponowałbym jednak zrobić test na tym co ma - jest to chwila a da odpowiedź. Głupio by było gdyby się okazało, że to jednak połączenia są błędne, albo coś jednak jest nie tak z programem.
    Co do odłączenia R/W od masy - jeśli dopuszczamy takie dziwactwa, to musielibyśmy brać pod uwagę również inne małoprawdopodobne rzeczy, np. działanie kosmitów. Jak pisałem wydajność prądowa wyjść tego kontrolera w stanie wysokim jest tak mizerna, że z pewnością nawet jeśli wystawi stan wysoki i go połączymy z masą to nic się nie stanie. Ale owszem, dla "pewności" można łączyć z masą poprzez rezystor.
    Co do wypocin Mirka to nawet nie komentuje, bo nie ma co. W trybie 4 bitowym są to piny nieużywane i tyle. A przy liczbie wariacji tego kontrolera i wykonań modułów LCD na nim opartych, jakiekolwiek założenia co do stanu jego pinów nieużywanych można między bajki włożyć.
  • #16 11161425
    maly_elektronik
    Poziom 23  
    Program jest na 100% dobry, bo w innym układzie działa:-) LCD jest podpiety na przewodach pojedynczych (jak w płytkach prototypowych) więc połączenie jest poprawne:-)
    Zrobiłem prosty test migania diodą i zauważyłem że co jakiś czas przestaje ona rytmicznie migac (na chwilę zamarza więc coś nie tak chyba z tymi pozionami HC)
  • #17 11161429
    LordBlick
    VIP Zasłużony dla elektroda
    mirekk36 napisał:
    otóż mają one właśnie już PullUp
    Ręczysz głową za każdego producenta LCD ? ;)
    tmf napisał:
    W trybie 4 bitowym są to piny nieużywane i tyle.
    Czyż przy podaniu zasilania domyślnie przypadkiem nie jest 8 bit ?
    tmf napisał:
    Układ HT244 ma poziom rozpoznawania stanu wysokiego dla zasilania 4,5V min. 3,15V - nota, strona 6
    Mam wrażenie, że te układy produkuje wielu różnych producentów (nie mamy informacji, od którego konkretnie użyto) i te poziomy mogą się delikatnie różnić...
    maly_elektronik napisał:
    Zrobiłem prosty test migania diodą i zauważyłem że co jakiś czas przestaje ona rytmicznie migac
    Może to oznaczać poprawną pracę watchdoga wskutek zaprogramowania Fusebitu WDTON, lub niewłaściwie ustawionych fusebitów BODLEVEL(na 4V)... ;)
  • #18 11161471
    maly_elektronik
    Poziom 23  
    Fuse bity są ustawione w następujący sposób:
    LOW: 0xEF
    HIGH: 0xDF
  • #19 11161480
    tmf
    VIP Zasłużony dla elektroda
    Owszem, domyślnie jest w trybie 8-bitowym, ale aby wystąpiło takie teoretyczne zwarcie linia R/W musiałaby być w stanie wysokim, podobnie jak linia Enable. Zakładając nawet, że układ jest tak zaprojektowany, że taka sytuacja jest możliwa (a z wielu powodów nie powinna być) to jeszcze linie D0-D3 musiałyby być w stanie wysokim, a nawet wtedy nic by się nie stało z powodu marnej wydajności prądowej. Zresztą w tak zaprojektowanym układzie jeśli MCU zainicjuje LCD to potencjalny problem i tak zniknie. Ale odwrócę pytanie - czy jeśli zostawimy te piny wiszące, na module nie ma żadnego podciągania i będą one sobie powoli pływać w okolicy napięcia przełączania bufora wejściowego kontrolera, to płynący prąd na skutek jednoczesnego częściowego otworzenia górnego i dolnego MOSFETA będzie ok? Z przyjemnością się z tobą zgodzę, że jakiś sueprpedant połączy to z masą przy pomocy rezystorów, ale nie wyobrażam sobie zostawienia wiszących wejść.
    Co do bufora - autor ma 74HC244, a nie HT244. Może stąd rozbieżności?
    Myślę, że gdyby chodziło o bodlevel to układ by w ogóle nie zadziałał, chyba, że napięcie mu pływa. Z WD być może, lepiej gdyby pytający dał pełne informacje :)
  • Pomocny post
    #20 11161499
    LordBlick
    VIP Zasłużony dla elektroda
    No to chyba tylko kod został do sprawdzenia, zwłaszcza, jeśli działał, ale na innej konfiguracji... ;) Czy przypadkiem równocześnie nie jest podpięte jeszcze coś innego do µC, co może powodować zakłócenia ? Programator ?
    Edit: no to tmf wykosił temat - CKOPT na 0 i tak intuicyjnie max. 12 MHz ;)
  • Pomocny post
    #21 11161501
    tmf
    VIP Zasłużony dla elektroda
    maly_elektronik napisał:
    Fuse bity są ustawione w następujący sposób:
    LOW: 0xEF
    HIGH: 0xDF


    Jak spojrzysz do noty ATMega16A to przy napięciu 3,3V w safe operating area nie masz 16 MHz, do tego potrzebne jest co najmniej 4,5V (str. 295). Najpewniej przy 3,3V ruszy, ale kto wie...
    Inna sprawa - CKOPT masz na 1 - dla kwarców >8MHz powinien być na 0, tym bardziej, że pracujesz przy obniżonym napięciu.
  • #22 11161543
    maly_elektronik
    Poziom 23  
    Przestawiłem już fuse bity na wartości odpowiednio:
    Low: 0xEF
    High: 0xCF (wyzerowany bit CKOPT)
    Przy zmianie fusebitów nic nie pomogło, teraz spróbuje zmienić kwarc na 10MHz wiec za chwile pochwale się wynikami.
  • Pomocny post
    #23 11161571
    mirekk36
    Poziom 42  
    LordBlick napisał:
    mirekk36 napisał:
    otóż mają one właśnie już PullUp
    Ręczysz głową za każdego producenta LCD ? ;)

    Oczywiście, że nie więc tym bardziej żadnego podłączania na stałe do GND.
  • #24 11161633
    maly_elektronik
    Poziom 23  
    Problem rozwiązany :)
    Prócz złego ustawienia bitu CKOPT, okazało się że jeden z pinów układu HC siał czym popadnie (owszem mieścił się z timing'ach migania diodą jednak robił coś na kształt PWM'a).
    Problem rozwiązałem dzięki koledze, który użyczył mi cyfrowego oscyloskopu :)
    Po wymianie bufora na IDENTYCZNY problem zniknął :)

    Dziękuje wszystkim za pomoc i udział w dyskusji :)
    Temat chwilowo zostawiam otwarty aby zebrać jeszcze konstruktywne uwagi kolegów, gdy takowy zostanie wyczerpany napiszę podsumowanie i go zamknę :)

    Pozdrawiam maly_elektronik
REKLAMA