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

LCD 4-bit EvB Atmega 16-32

Demovir 27 Gru 2011 16:37 2420 15
REKLAMA
  • #1 10309329
    Demovir
    Poziom 9  
    Mam płytkę ewaluacyjną EvB 16-32.

    Link: http://www.microsense.pl/allegro/EvB_ATmega16-32/manuals/EvB_ATmega16-32_manuals.pdf

    Mam problem z wyświetlaczem LCD. Jak widać na schemacie jest możliwa tylko komunikacja przy pomocy 4-bitowej magistrali.

    Próbuję odpalić program testowy:
    http://www.microsense.pl/allegro/EvB_ATmega16-32/samples/EvB_AT16-32_samples.zip

    Folder asembler -> p5 Wyświetlacz LCD.
    Wiem, że tam jest również obsługa klawiatury matrycowej, ale to nie istotne.

    W każdym razie wpięte jest wszystko tak jak mi mówią stałe i nic się nie dzieje - wyświetlacz się nawet nie zapali. (naciskanie przycisków też nic nie zmienia). Kręcenie potencjometrem też nic nie zmienia.

    Proszę o pomoc :)
  • REKLAMA
  • #2 10309703
    piotrva
    VIP Zasłużony dla elektroda
    A czy przy odpiętych wszystkich liniach LCD przy kręceniu potencjometrem od kontrastu pojawiają się czarne prostokąty?
  • #3 10311829
    Demovir
    Poziom 9  
    Właśnie problem z tym, że nie. Nie jestem w stanie "przekręcić kontrastu".
  • REKLAMA
  • #4 10311870
    mirekk36
    Poziom 42  
    Nie koniecznie wszystkie wyświetlacze LCD muszą pokazać czarne prostokąty w górnej linii przy maksymalnym kontraście, więc to nie musi być w pełni miarodajny test.

    Trzeba sobie wrzucić jakiś najprostszy program, który zainicjalizuje wyświetlacz i coś na nim pokaże. Nawet w Bascomie - jeśli w niczym innym nie masz jeszcze doświadczenia.
  • #5 10312020
    Demovir
    Poziom 9  
    Problem w tym, że mam kilka "podobno" działających programów pod 4-bit i żaden nie działa.
  • #6 10312162
    mirekk36
    Poziom 42  
    Nahprostszy program w bascomie będzi miał ze 4 no może 5 linijek kodu, więc pokaż co ty tam masz za programy. bo obawiam się że masz bardziej problemy z ich kompilacją lub samym wgraniem do procka.
  • REKLAMA
  • #7 10313250
    Demovir
    Poziom 9  
    Powiem tak. LCD na 100% jest sprawny, bo podpinałem go pod inne układy. Tyle, że tam komunikacja była 8-bit.

    W pierwszym poście podałem link do programu jaki próbuję wrzucić (to w sumie jest paczka programów, ale mnie chodzi o ten konkretny P5). Wiem, że on jest długi, ale skoro jest ze strony producenta, to raczej jest dobry. Imo problem mam z hardwarem (w sensie coś źle podpiąłem).

    W instrukcji, którą podałem jest schemat tego lcd. 2 ostatnie piny są od kontrastu i podświetlenia, a stan niski jest stanem aktywnym. Ja te 2 piny zostawiłem nie podłączone. Może tu jest problem?

    Żeby było ciekawiej stałe w programie, że lcd mam podpiąć do portu D, a port D jest częściowo używany przez programator, czy coś tam innego ( w tej instrukcji opisują to dokładniej). Problem może też tkwić tu aczkolwiek lcd podpinałem już do innych portów (ofc stałą w programie też zmieniłem, żeby nie było), ale z zerowym skutkiem.

    PS. Na razie bawię się tylko asemblerem. Moja wiedza o bascomie jest praktycznie zerowa ;)
  • #8 10320345
    Henio83
    Poziom 12  
    Proszę pin BL podpiąć pod GND, wtedy będzie aktywne podświetlenie. Potencjometrem kontrastu doprowadzić do widoczności czarnych pikseli. Dostosować częstotliwość AVR ustawioną w kodzie programu do aktualnej w mikrokontrolerze.
  • #9 10323143
    Demovir
    Poziom 9  
    Niestety, nie działa. Próbowałem chyba wszystkich kombinacji (nawet tych bezsensownych). BL do GND, a CTR zostawić niepodłączone, kombinacja odwrotna etc.

    Moim zdaniem problem tkwi w tym porcie D. Stałe w programie mówią, że RS i E mam podpiąć odpowiednio do pinów D0 i D1. Z drugiej strony instrukcja rzecze tak:

    "Aby wgrać program (plik .hex) do pamięci flash należy podłączyć linię Rx i Tx mikrokontrolera (port D0 i D1) odpowiednio do linii Tx i Rx układu FT232RL..."

    Przez to te 2 piny są cały czas w stanie wysokim i zbocze opadające (chyba) nie ma racji bytu. Logiczne jest więc po prostu przepięcie LCD do innego portu procesora (np. B), tyle że to TEŻ nie działa... JA już nie wiem...
  • #10 10323735
    Henio83
    Poziom 12  
    Tzn. świecenie podświetlenia oraz możliwość regulacji kontrastu do uzyskania widocznych pikseli jest sprawą hardwer'ową. Natomiast to czy widoczny będzie jakiś napis to kwestia programu, i chociażby różnic w samej częstotliwości taktowania AVR...Jeżeli widoczne są piksele to proponuję najpierw napisać kod w Bascomie, w C oraz asemblerze wymagana jest inicjalizacja LCD...
  • #11 10340552
    Henio83
    Poziom 12  
    Jeżeli port D wykorzystywany jest do programowania (UART na D0, D1), nie można równocześnie podpinać pod te linie LCD. Najlepiej wykorzystać port A. Proszę napisać czy działa już coś...
  • REKLAMA
  • #12 10427284
    Demovir
    Poziom 9  
    Przepraszam, że odpisuję bo tak długim czasie, ale nie mnogość zajęć ograniczyła mój czas wolny.

    Otóż coś się ruszyło... Za sprawą ludzi bardziej ode mnie doświadczonych w temacie, powstał kod, który teoretycznie działa. Wyświetlacz wyświetla tekst, który mu przesyłam.

    Niestety pojawił się inny problem. Otóż program miał za zadanie wyświetlenia w pierwszej linii "Hello", a w drugiej "I'm AVR". Niestety wyświetlacz w ogóle nie wyświetla drugiej linii. Nawet jak podkręcę kontrast na maxa,aby pojawiły się pixele, to pojawiają się one tylko w pierwszej linii. Ogólnie wyświetlacz zachowuje się tak, jakby druga linia w ogóle nie została zainicjalizowana.

    Co ciekawe dokładnie ten sam program odpalony na innym zestawie uruchomieniowym (wyświetlacz również był ten sam) działa w 100% dobrze. W drugiej linii pojawia się "I'm AVR".

    Kod tego programu:

    Kod: text
    Zaloguj się, aby zobaczyć kod

    [/code]


    Co ciekawe, jak zamiast przejścia do drugiej linii wyślę wyświetlaczowi procedurę czyszczącą ekran, to wyświetla się tekst "I'm AVR".

    Z góry dziękuję za pomoc
  • #13 10427414
    Henio83
    Poziom 12  
    Witam. A jakie są mikrokontrolery w obydwu zestawach? Atmega32 w obydwu?
  • #14 10427558
    Demovir
    Poziom 9  
    Dokładnie rzecz biorąc i tu, i tu jest procesor Atmega16-32, ale myślę, że to nie ma zbyt wielkiego znaczenia. Dla pewności zmieniłem w kodzie w pierwsze linijki, na:

    .DEVICE ATmega16
    .include "m16def.inc"

    ale efekt jest ten sam!
  • #15 10427625
    Henio83
    Poziom 12  
    Tzn. Atmega16 czy Atmega32. Bo EvB ATmega 16-32 to tylko nazwa płytki ewaluacyjnej. Te płytki są w 3 wersjach: z Atmega16, atmega32, atmega644. I z tego co pamiętam, są drobne różnice w rejestrach Atmegi16 i Atmegi32 i takie same programy mogą się inaczej wykonywać na różnych mikrokontrolerach.
  • #16 10427677
    Demovir
    Poziom 9  
    U mnie jest 16, więc w tamtym układzie też. Jestem pewien, że procesory są te same.
REKLAMA