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.

mega88 - CLK procka a sterowanie wyświetlaczem G-LCD

zbynio_k 08 Wrz 2015 18:36 429 4
  • #1 08 Wrz 2015 18:36
    zbynio_k
    Poziom 10  

    witam,
    mam problem z wysterowaniem wyświetlacza G-LCD
    przykład trywialny z 'biblii' T. Francuza
    używam AVRStudio 4.17
    steruję wyświetlaczem przez mega88, oscylator wewnętrzny
    1. dla częstotliwości taktowania procka 1MHz wszystko hula
    2. po przetaktowaniu na 8MHz, G-LCD się 'zawiesza' (fuse bit CKDIV8 i oczywiście zmieniam w opcjach projektu na 8MHZ) - flaga SLOW_TEXT nie ma wpływu
    NIC nie zmieniam w połączeniach tylko w opcjach programu

    sądzę, że gdzieś popełniam błąd bo jak sądzę można wysterować wyświetlacz dla taktowania 8MHz, chyba, że się mylę
    P.S używam wyświetlacza WG12864B (Winstar Display - pewnie chińszczyzna)

    0 4
  • #2 08 Wrz 2015 18:59
    tmf
    Moderator Mikrokontrolery Projektowanie

    Przykład jest z I, czy II wydania książki? Jeśli z drugiego to raczej należy skompilować w AS z najnowszym toolchainem. Opisz dokładniej na czym polega to "zwieszanie się". Który przykład wykorzystujesz? Kompilacja nie generuje żadnych ostrzeżeń? F_CPU jak wnioskuję masz ustawione na 8000000UL? Postaraj się ustalić do jakiego miejsca program dochodzi i pokaż kod.

    0
  • #3 08 Wrz 2015 19:18
    zbynio_k
    Poziom 10  

    książka
    ISBN: 978-83-246-3732-4
    Nr katalogowy: 7042
    Copyright © Helion 2011.

    rozdział 17 przykład LCD-KS0108
    F_CPU w projekcie na 8000000, fuse bit CKDIV8 nie ustawiony

    kod dokładnie jak w przykładzie powyżej - nic nie zmieniałem
    toolchain WinAVR-20100110 jeśli o to chodzi, kiedyś sprawdzałem wersję pod CMD, ale zapomniałem jak się to robi

    nie testowałem pracy w debugger'rze

    zawieszanie polega na pozostaniu w miejscu, w którym był wyświetlacz przed wgraniem nowego programu (tj. z F_CPU 8MHz)

    więc nie tyle zawiesza się co po prostu nie rusza

    P.S. może to ważne .... jeśli zmienię TYLKO CKDIV na 1MHZ (odznaczę) - bez zmiany kompilacji, i prześlę do procka - wyświetlacz 'rusza'

    0
  • Pomocny post
    #4 08 Wrz 2015 19:56
    tmf
    Moderator Mikrokontrolery Projektowanie

    W przykładzie w pliku KS0108.c masz w funkcjach sekwencje:

    Kod: c
    Zaloguj się, aby zobaczyć kod
    , np.:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dla częstotliwości taktowania 1 MHz realizują one opóźnienie równe 1 us wymagane przez kontroler. Przy wyższej częstotliwości (8MHz) to opóźnienie skraca się do 125 ns, czyli 8x krócej niż wymaga tego kontroler LCD. Wstaw w te miejsca _delay_us(1) i powinno być ok.

    1
  • #5 08 Wrz 2015 20:33
    zbynio_k
    Poziom 10  

    na razie dzięki, przetestuję jutro ....
    BTW musi zadziałać

    Dodano po 26 [minuty]:

    jednak temat nie dał mi spokoju ... więc już sprawdziłem
    DZIAŁA :)
    z tym, że oczywiście wyświetlanie .... kółka działa 8x szybciej :)
    jeszcze raz dzięki

    0