Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega128+GLCD - Nie wyświetla mimo prawidłowej kompilacji

Jablonaack 23 Lis 2016 00:08 690 5
  • #1 23 Lis 2016 00:08
    Jablonaack
    Poziom 7  

    Mój problem polega na tym, że przykładowy program do obsługi wyświetlacza GLCD umieszczonego na płycie rozwojowej Uni-DS3 firmy MikroElektronika nic nie wyświetla mimo bezproblemowej kompilacji w Atmel Studio 7.

    Kod programu:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod




    Wyświetlacz jest podłączony zgodnie z dokumentacją, którą załączam w pliku:

    uni_ds3_m..al.pdf Download (3.59 MB)

    Podejrzewam, że jest to problem z adresowaniem portów ale jestem na tyle początkujący, że nie wiem jak to sprawdzić i ewentualnie poprawić.

    0 5
  • #3 23 Lis 2016 08:16
    krisRaba
    Poziom 25  

    Poprawna kompilacja, to tylko pół sukcesu. Dobrze, jeśli nic się nie wysypuje, ale oznacza to jedynie, że kod jest poprawny z punktu widzenia języka, czyli nie zgubiłeś nigdzie końcowego średnika, składnia poprawna itp.
    Najważniejsze w używaniu tego typu bibliotek jest właśnie zdefiniowanie jakich zasobów sprzętowych biblioteka ma użyć. Bo jeśli wystawiasz dane na inny port niż ten, gdzie podpięto wyświetlacz, to raczej nie zadziała ;) Takie rzeczy określane są w nagłówkach .h, które załączasz poprzez #include do swojego kodu. Nie załącza się natomiast w ten sposób plików .c, które z kolei powinny znaleźć się w lokalizacji znanej kompilatorowi, czyli jeśli nie jest to główny katalog projektu, to trzeba tę ścieżkę dodać w ustawieniach.

    Rozumiem, że J16 masz w pozycji GRAPH, tak jak piszą na str.17 podanej przez Ciebie dokumentacji.

    Trochę głupio są rozpisane te peryferia, bo widzisz na str.17 jakie sygnały wchodzą na CN11, ale jakiemu pinowi MCU to odpowiada, to już musisz kopać i kopać ;) Nie postarali się. Domyślam się, że jest to związane ze wspólną płytą bazową dla wielu procków.
    Ale jak już się dokopiesz do strony 41, to zobaczysz, że linie danych D0-D7 masz na porcie C, a linie sterujące na porcie A. Sprawdź plik nagłówkowy, czy tak masz ustawione...

    Jakiś domyślny plik h znalazłem na elektrodzie i tam jest:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    czyli inaczej niż potrzebujesz... Ale to właśnie fragment, który powienien Cię interesować.

    Ten fragment CN11 jest tutaj ważny i musisz skorygować według niego powyższe definicje.
    Atmega128+GLCD - Nie wyświetla mimo prawidłowej kompilacji

    0
  • #4 25 Lis 2016 19:47
    Jablonaack
    Poziom 7  

    Kontrast ustawiany więc to nie jego wina.

    Jeśli dobrze zrozumiałem powinna wystarczyć zmiana adresowania na taką?

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Czy jeśli mam LCD_RST przy pinie PA7 to powinienem go ustawić na 1 ? Bo jak widać po komentarzu "RESET na VCC" w układzie, do którego pisany był ten kod LCD_RST był podpięty pod zasilanie.

    0
  • Pomocny post
    #5 25 Lis 2016 20:16
    krisRaba
    Poziom 25  

    Hmm, jeśli rzetelnie robili opisy, to w tym LCD stan wysoki resetuje wyświetlacz. Zobacz, że aktywne w stanie niskim CS1 i CS2 są oznaczone kreską nad nazwą sygnału, a RST nie...
    Co do zmian definicji, to chyba powinno być ok. Nie jestem pewien, czy D_I to faktycznie odpowiednik LCD_RS, ale w sumie tylko to zostało :D

    Tak przy okazji, to świetny przykład, że ludzie nie modyfikują komentarzy przy modyfikacji kodu i samokomentujący się kod jest lepszy :D

    Edit:
    Ok, tutaj na str. 2 jest rozpiska potwierdzająca, że D_I to LCD_RS:
    http://playground.arduino.cc/uploads/Code/GLCD_Documentation.pdf

    0
  • #6 25 Lis 2016 20:36
    Jablonaack
    Poziom 7  

    Działa jak natura chciała :D Adresowanie do lekkiej korekcji, bo wyświetlacze CS1 i CS2 są pozamieniane. Ustawiłem 1 na LCD_RST i poszło.
    Dzięki wielkie za pomoc :)

    0