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

[atmega8][C] Sterowanie wyświetlaczem LCD na ST7032i po I2C

zuraf 22 Sie 2011 10:56 4768 8
  • #1 9849826
    zuraf
    Poziom 14  
    Witam.

    Zaciekawił mnie wyświetlacz na tym sterowniku. Dostępny jest na tej aukcji zyscom-lcd-2x8-orange-neg-fstn-iic-i2c-i1764790684.html. Niestety jest bardzo mało informacji w sieci. Nawet wyszukiwarka elektrody nic o nim nie mówi... Moje pytanie brzmi: czy miał z nim ktoś do czynienia? Czy sprawia problemy? Znajdę gdzieś przykłady kodu w C?

    Pozdrawiam
  • #3 9849902
    zuraf
    Poziom 14  
    Dokładnie tak. ST7032. Głupia pomyłka...

    Piszę w C.

    Lecz nie wiem czy zaglądałeś na aukcją, która podałem, ale tamta wersja ma wyprowadzenia tylko dla protokołu i2c.
    Nota: http://www.zyscom.pl/katalog/ym0802Di2c.pdf
  • #5 9860128
    zuraf
    Poziom 14  
    Walcze z uruchomieniem tego wyświetlacza. Znalazłem bibliotekę do jego obsługi i zacząłem sklejać własny program korzystając z napisanego dawniej programu do TWI (stąd różnojęzyczne nazwy procedur). W pętli głównej umieściłem miganie LEDem, co by wiedzieć czy nie utknął w którymś z while'ów w obłudze TWI. Początkowo się zawieszał, coś pozmieniałem i przechodziło. Uznałem więc że komunikacja działa i przystąpiłem do prób uruchomienia. Po pewnym czasie zorientowałem się, że program dochodzi do pętli głównej, nawet przy rozłączonych przewodach od transmisji. No właśnie, dlaczego? Przecież nie powinien... Rezystory podciągające 2k. Podejrzewając je zmieniłem z 10k. Połączenia miedzy procesorem a wyświetlaczem mają ok 30cm.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Znalazłem też nieco bardziej rozbudowaną dokumentacje: http://www.good-lcd.com/upfile/product/2009331133028694.pdf Zgłupiłem przy napięciu zasilania... W jednym miejscu piszą, że max 7V, w innym 3V. Obecnie zasilam go z 3V i mam podłączone kondensatory monolityczne 1uF wg tego schematu:

    [atmega8][C] Sterowanie wyświetlaczem LCD na ST7032i po I2C Czy jeśli chodzi o część sprzętową, jest ok?
  • #6 9861959
    Suchy
    Poziom 17  
    Jakiego mikrokontrolera używasz? Jak ma wbudowane TWI (I2C) to użyj sprzętowego, będziesz miał pewność że na pewno się komunikują, następnie możesz zacząć walkę z przesyłaniem danych do wyświetlacza. To taki mały sposób na zmniejszenie potencjalnych problemów przy uruchamianiu i projektowaniu nowych rzeczy. Jak już będzie wszystko chulało to możesz przejść na biedniejszy mikrokontroler i napisać samemu obsługę TWI (I2C).

    7V masz podane jako napięcie maksymalne w tabeli z wartościami maksymalnymi czyli nie jest to zalecane napięcie.

    W tabeli poniżej natomiast nominalne napięcie to 3.0V dla układów logicznych oraz 4.8V dla zasilania LCD.

    [atmega8][C] Sterowanie wyświetlaczem LCD na ST7032i po I2C


    Pozdrawiam,
    Michał.
  • #7 9863320
    zuraf
    Poziom 14  
    Używam atmege8 i korzystam ze sprzetowego TWI. Czyli gdybym zasilił logikę i LCD z 5V nic złego nie powinno się stać? Ale jak sądze wtedy te kondensatory byłyby nie potrzebne, a do VLCD należałoby podać również 5V?

    edit: Podłączyłem zwykły wyświetlacz na HD44780 i wyświetlam zawartość rejestru TWSR. Po wysłaniu adresu mam kod 0x20- wysłano adres, nie otrzymano ACK. Zatem komunikacjia nie żyje. Fuck...

    edit2: Komunikacja ruszyła...prawie. Mam następującą pętlę główną:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dostaję na zmianę wartości 0x20 i 0x18... Przy czym zmiany następują w równych odstępach czasowych. Zmieniałem prędkość transmisji, obecnie mam TWBR=0xff, prescaler=1.
  • #8 9864799
    zuraf
    Poziom 14  
    Dziwne zjawisko... mam takiego while'a:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Na wyświetlaczu na HD44780 wyświetlam zawartość rejestru TWSR wraz z ze zmienna licznikowa. Co zauważyłem: Przy opóźnieniu 500ms jest to zazwyczaj 4-6 transmisji zakończonych odebraniem ACK i ok 3 zakończone nieodebraniem. Przy innym opóźnieniu wychodzi inaczej. Jeśli chcę wysłać adres+komendę transmisja kończy się powodzeniem raz na 4 próby. Co ciekawe, w miarę upływu czasu następuje zwiększenie sukcesów. Po kilkunastu sekundach proceror zawiesza się... Ja już naprawdę zgłupiałem... Robiłem układ oparty o PCF8583 i nie było problemów z TWI...
  • #9 9880026
    zuraf
    Poziom 14  
    Rozwiązano. W sumie to meczyłem się przez własne lenistwo... nie chciało mi się podłączyć sygnału reset i dokładnie przeanalizować (jak się później okazało) działającego kodu. Swoją drogą całkiem fajna alternatywa dla standardowych wyświetlaczy na HD44780. Przedewszystkim tylko 3linie z procesora, zamiast siedmiu. Dosatkowo znacznie bardziej kompaktowy.
REKLAMA