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

[Atmega16][C] - LCD graficzny od Nokii 6100

mopsiok 23 Gru 2011 00:31 2452 4
  • #1 10294033
    mopsiok
    Poziom 14  
    Dobry wieczór (dzień dobry? :D ) wszystkim. Ostatnio postanowiłem się wziąć za obsługę wyświetlacza jak z tematu. Pogrzebałem tu i tam i zmontowałem taki układ:
    [Atmega16][C] - LCD graficzny od Nokii 6100
    Jak widać, nieco namieszałem jeśli chodzi o konwersję napięć z 5V do 3.3V oraz podwyższenie napięcia do podświetlenia wyświetlacza (5V to było za mało jak na dwie diody szeregowo). Jest co zupełna prowizorka, jeśli w ogóle coś z tego wyjdzie to oczywiście zainwestuję w normalniejsze rozwiązania. Ważne jest póki co to, że stabilizator daje 3.3V, logika 5V została zamieniona na 3.3V oraz pod matrycą wyświetlacza pięknie świecą diody.
    Mam jednak problem z czym innym. Ostatnio przerzuciłem się na C, bo Bascom to jednak strasznie człowieka ogranicza. Porobiłem troszkę, doszedłem więc do wniosku że pora na obsługę tego wyświetlacza. Analizując dział poświęcony obsłudze wyświetlacza od S65 w książce pana Borkowskiego, oraz tę dokumentację: http://www.sparkfun.com/tutorial/Nokia%206100%20LCD%20Display%20Driver.pdf , przeniosłem jakoś nowo zdobytą wiedzę na moją Atmegę16. Tak na tę chwilę wygląda kod źródłowy:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Funkcja ClearLCD (zamalowywanie ekranu określonym kolorem) została napisana dla sterownika Epson. Niestety nie działa mi ani funkcja inicjująca sterownik od Philipsa, ani od Epsona. Z początku myślałem, że po inicjalizacji wyświetlacz dalej ma być czarny, choć już wtedy wydawało mi się to dziwne. Brak efektu przy funkcji kolorującej utwierdził mnie jednak w przekonaniu, że coś popsułem :cry:. Pytanie tylko - co? Ma ktoś jakiś pomysł?

    Przede wszystkim prosiłbym o wyrozumiałość, bo z C obcuję od bardzo niedawna i niewiele potrafię...

    Dzięki i pozdrawiam
    mopsiok
  • #2 10294354
    piotrva
    VIP Zasłużony dla elektroda
    Jest w internecie pełno gotowych kodów, poszukaj i porównaj i potestuj. Ponadto czy te dzielniki nie mają za dużej wartości...
  • #3 10294710
    mopsiok
    Poziom 14  
    Właśnie mój problem polega na tym, że wszystkie kody w Internecie są pisane nie dość że na mikrokontrolery ARM, to jeszcze wykorzystują sprzętowe SPI, co - biorąc pod uwagę moją znajomość C na ten moment - uniemożliwia mi dokładne ich zrozumienie. Chciałbym zrealizować to zadanie "ręcznie", czyli bez używania sprzętowego SPI...
    Wszystkie części obwodu testowałem, dzielniki dają 3.3V (z niewielkimi odchyłami). No chyba, że masz na myśli za duże rezystancje w dzielnikach? Czy możliwe jest, że przy takowych rezystancja wejść wyświetlacza mogłaby wpłynąć na wartość dzielnika?
    Ogólnie będę jeszcze próbować, być może jest to również wina wyświetlacza? Kupiony za 15 złotych, do tego jest to drugi model, bo pierwszy był uszkodzony. Diody pod matrycą nie oświetlają równo całego wyświetlacza, tylko jakoś tak:
    [Atmega16][C] - LCD graficzny od Nokii 6100

    Właśnie teraz sprawdziłem napięcie zasilania i okazuje się, że zamiast standardowych 4.8V jest 4.5V. Spowodowane jest to prądem jaki płynie przez cały obwód, który wynosi nieco ponad 170 mA. Pewnie większość idzie na tego prostego "joule thiefa" zasilającego podświetlenie. W wyniku tego na dzielniku napięcia są równe 3V (wychodzi na to, że nie ma się co przejmować rezystancją wejść LCD). Pozmieniam mu rezystancję żeby były te 3.3V i dam znać, chociaż wątpię żeby to coś pomogło...
  • #4 10294973
    piotrva
    VIP Zasłużony dla elektroda
    Nie chodzi o napięcie wyjściowe, ale o wiele innych efektów widocznych przy dużych częstotliwościach. Poza tym ten obwód do generowania rzekomo 7V coś mocno naciągany - stąd takie marne podświetlanie.
    Dalej, skoro jak na razie NIC CI NIE DZIAŁA to ja zawsze robię tak, że wychodzę od kodów gotowych i sprawdzonych, np.: http://thomaspfeifer.net/nokia_6100_display_en.htm (a jest tego multum w internecie) na sprzętowym SPI (nie wiem co trudnego jest w podpięciu paru linii do odpowiednich wyprowadzeń uC). Jak zadziała (co będzie oznaką że wyświetlacz i "konwerter napięć" są sprawne) to możesz podmienić funkcje do wysyłania danych po SPI na ręcznie napisane wysyłające dane na dowolnych pinach. Bo na razie nie jesteśmy wstanie zidentyfikować co jest nie tak - program, wyświetlacz, dzielnik, zasilanie całości, zasilanie części cyfrowej wyświetlacza, ...
    Względnie (sam czasem tak robię, choć wolę C od BASCOMA) uruchom program na gotowych bibliotekach w BASCOM - one działają na 100%, więc wtedy wykluczysz lub potwierdzisz winę programu.
    To zrób wszystko co powiedziałem (najlepiej zacząć od 100% pewnej biblioteki bascoma) i potem będziemy myśleć dalej.
  • #5 10296917
    mopsiok
    Poziom 14  
    Okej, zatem po świętach przelecę do elektronicznego i kupię części do normalnego zasilania, oraz normalny konwerter napięć. Przed chwilą sprawdziłem, jak radziłeś, na gotowej bibliotece Bascoma. Taki oto kod:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Niestety nie działa. Zmieniając bibliotekę na lcd-EPSON.lbx, w ogóle się nie kompiluje (wypluwa że nie znaleziono etykiety _BOX). "Obszedłem" to dopisując na samym końcu "_box:", ale wątpię żeby to w ogóle coś miało dać (tyle, że się skompilowało do końca). Także niestety nie jestem w stanie określić czy to wina programu, czy części elektronicznej. Pozostaje mi chyba poczekać spokojnie aż złożę wszystko tak jak miało być, i dopiero spróbować obsłużyć to w Bascomie - przy okazji modląc się, żeby to nie był sterownik Epson, bo jak widać wyżej jego nie obsłużę.
REKLAMA