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.

wyświetlacz ST7565R - nie działa na moim Atxmega128

Paros 14 Mar 2015 12:28 969 10
  • #1 14 Mar 2015 12:28
    Paros
    Poziom 11  

    Witam.

    Pytanie raczej do tych z Was, którzy ćwiczyli obsługę w/w wyświetlacza z książki TMF "układy peryferyjne".

    Mam ten wyświetlacz (a nawet dwa, sprawne, bo po podłączeniu do Raspberry Pi z biblioteką w Pythonie wszystko działa) oraz stary "Xplain" Atmela z Atxmega128. W książce zastosowany był Atxmega256.
    Jedyne zmiany jakie poczyniłem, to wyjście CS wyświetlacza podłączyłem na PORTA - 2 (nie mam wyprowadzonego portu F jak w Xplained) - oczywiście zmieniłem odpowiedni kod.

    Niestety nie działa żaden z przykładów dołączonych do książki. Wyświetlacz po prostu nie reaguje wcale.
    Moje pytanie: czy xmega128 różni się w jakiś sposób od xmega256 na tyle, by uniemożliwić mu pracę z tym kodem (nie wiem, może USART nie pracuje w trybie SPI jak należy, albo coś takiego)? Podłączenia sprawdzane wielokrotnie, analizator stanów pokazuje na wszystkich wyjściach jakieś przebiegi. Powinienem szukać problemów w sprzęcie czy programie? Nie wiem, czy dobrze to rozumiem - wyświetlacz podbija sobie potrzebne napięcie sam, czy robi się to programowo? Gdzie zmierzyć to napięcie i ile powinno wynosić?

    0 10
  • #2 14 Mar 2015 15:18
    Mateusz@
    Poziom 17  

    Paros napisał:
    czy xmega128 różni się w jakiś sposób od xmega256

    Z tego co napisałeś to można powiedzieć tylko tyle, że różni się ilością pamięci ważne jest co jest dalej w oznaczeniu mikroprocesora. To nie atmega, ważne jest z jakiej rodziny jest.

    Paros napisał:
    Powinienem szukać problemów w sprzęcie czy programie?

    Wróżę z fusów, że w programie, ale to tylko wróżba bo niczego nie dodałeś.

    Paros napisał:
    oczywiście zmieniłem odpowiedni kod

    A może nie we wszystkich miejscach?

    1
  • #3 14 Mar 2015 16:14
    tmf
    Moderator Mikrokontrolery Projektowanie

    Gdzieś musiałeś popełnić błąd, bo ten kod działa na każdej XMEGA, ba, nawet na ATMega. Przede wszystkim sprawdź, czy poprawnie jest generowane napięcie polaryzacji matrycy. Bez niego LCD wydaje się być martwy, bo nic nie wyświetla, pomimo, że działa. Także podaj więcej informacji - używasz modułu z elementami dodatkowymi w module, czy to "goły" LCD i układ powielacza napięcia robisz sam? Pokaż schemat elektryczny. Często jest tak, że człowiek przez kilka dni patrzy i nie widzi błędu, a ktoś spojrzy i widzi go od razu.

    0
  • #4 14 Mar 2015 18:42
    Paros
    Poziom 11  

    schemat dokładnie stąd: http://artronic.com.pl/o_produkcie.php?id=1144?

    kondensatory "zwykłe" elektrolity 1uF. Przypomnę, że na Raspberry działa. Do jakiego poziomu i na których pinach powiino podskoczyć napięcie po podbiciu? Czy wysokość tego napięcia zależy od programu? Przypomniałem sobie coś jeszcze - musiałem zakomentować funkcję obsługującą podświetlanie - kompilator zakwestionował konfigurację timera (pwm). Niestety dziś już nie mam dostępu do tego układu, ale może to jakiś trop?

    0
  • #5 14 Mar 2015 20:13
    tmf
    Moderator Mikrokontrolery Projektowanie

    Ten moduł ma inną konfigurację kondensatorów z pompy ładunkowej i wymaga zapewne innej konfiguracji rejestru odpowiedzialnego za generowanie napięcia polaryzacji. Na szybko możesz sprawdzić czy reszta działa poprawnie podając 12V na pin napięcia polaryzacji LCD - powinieneś wtedy zobaczyć obraz. Druga możliwość to konfiguracja rejestru kontrastu LCD.

    0
  • #6 14 Mar 2015 20:23
    Paros
    Poziom 11  

    a który to jest pin napięcia polaryzacji?

    0
  • #7 14 Mar 2015 21:12
    tmf
    Moderator Mikrokontrolery Projektowanie

    Napięcie podłączasz pod pin Vout - nie przejmuj się, że jest oznaczony jako output. W tym układzie dajesz tylko kondensatory pomiędzy masę a Vo, V1, V2, V3, V4. Nie dajesz kondensatorów pompy ładunkowej.
    BTW, pamiętaj, żeby częstotlwość interfejsu SPI nie była za wysoka - kilka MHz to max.

    0
  • #8 16 Mar 2015 10:15
    Paros
    Poziom 11  

    Teraz działa, po niewielkich przeróbkach kodu (których nie bardzo rozumiem). Mój wyświetlacz - bez żadnych zmian w sprzęcie - wymagał zmian w funkcji inicjującej st7565r_init():

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dziwne, bo nigdzie w kodzie TMF'a nie znalazłem komendy dla wyświetlacza "A3", w PDF do tego wyświetlacza też czegoś takiego nie było. W komentarzu do wykorzystanego wyżej kodu w nawiasie autor napisał st7565V - może tu jest problem, bo ja opierałem się na st7565R.

    0
  • #9 05 Mar 2018 19:37
    wolderb
    Poziom 9  

    W moim wyświetlaczu zmiana biasu na 1/9 duty 65 wprowadziła najlepszy możliwy kontrast ( to jest 0xA3) a kierowałem się zamieszczonymi na stronie 71 noty rekomendowanymi ustawieniami. Natomiast nie znalazłem w nocie kontrolera ST7565R aby dla ustawien biasu była komenda o kodzie 0xA1 a jest taka w przykładzie z książki.

    0
  • #10 05 Mar 2018 20:17
    tmf
    Moderator Mikrokontrolery Projektowanie

    Dlatego warto ściąganąć najnowsze wersje przykładów z repozytorium - tam są poprawione kody z poprawionym drobnym błędem dotyczącym biasu.

    0
  • #11 05 Mar 2018 20:26
    BlueDraco
    Specjalista - Mikrokontrolery

    Ustawienia kontrastu zależą od konkretnego typu wyświetlacza - nie ma tu jednej uniwersalnej wartości. Są trzy parametry, które są różne dla różnych typów wyświetlaczy.

    0