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

Mruganie wyświetlacza 2*16

mradamf1985 04 Paź 2010 20:28 2273 25
REKLAMA
  • #1 8583825
    mradamf1985
    Poziom 12  
    Witam!


    Od bardzo niedawna zająłem się programowanie mikro kontrolerów (na razie atmega 8). Kupiłem książkę zapewne wszystkim znaną Pana Wiązani, i rzuciłem się od razu na głęboką wodę, tzn. napisałem sterownik do moich terrariów. I o dziwo od razu ruszyło i działa bardzo fajnie tak jak chciałem gdyby nie to że zawsze mrugał mi wyświetlacz. Na początku się tym nie przejmowałem myślałem że znajdę jakoś rozwiązanie ale niestety. Nie jest to wina kodu bo wgrywając dowolny program jest to samo. Nie jest to jakieś strasznie widoczne ale jednak widoczne. Wygląda to tak jakby mrugnął około 8-10 razy na 2 sekundy po czym się zatrzymuje i świeci ładnie stabilnie. Trudno mi to określić ponieważ jest to bardzo szybko. Jeśli mój opis nie pomoże mogę umieścić filmik. Bardzo proszę o pomoc ponieważ nie znam nikogo kto by się zajmował czymś takim a nigdzie nie mogę znaleźć na necie a nie chce sam po omacku szukać.
    Zegarek ma zewnętrzny kwarc 32768 a atmega jest na internal clock 8mhz tak jest też w programie $crystal = 8000000.
  • REKLAMA
  • #2 8583893
    Krzysiek_Z
    Poziom 11  
    Może gdzieś na początku w programie zwierasz np wyjscie w stanie '1' do masy i przez to robi sie jakieś zwarcie które powoduje, że diody w podświetleniu świecą przez nie trochę słabiej?
  • REKLAMA
  • #3 8584008
    elektroziom
    Poziom 20  
    A w jaki sposób podłączyłeś podświetlenie do uP? przez jakiś klucz na tranzystorze czy bezpośrednio do portu? Na pewno masz dobrze skonfigurowaną końcówkę poru sterującego podświetleniem?
  • #4 8584009
    Pittt
    Poziom 32  
    Może słaby zasilacz.
    A właściwie to miga podświetlanie czy tekst ?
  • #5 8584046
    sulfur
    Poziom 24  
    Ja też obstawiam zasilacz i/lub brak kondensatorów. No ale bez schematu to sobie możemy pogadać o zeszłorocznym śniegu.
  • REKLAMA
  • #6 8584084
    mradamf1985
    Poziom 12  
    To nie diody mrugają a wyświetlane dane. Wszystkie używane przeze mnie wyjścia są podłączone przez uln 2003apg. Sprawdzałem też na zasilaczu warsztowym i to samo. Takich usterek raczej bym się dopatrzył. Dziwne jest to że im krótszy napis tym bardziej miga, i to mruganie jest tak jak pisałem ok 8 razy i stabilnie świeci ale dzieje się to w ciągu około 2sek. Nie znalazłem takiego przypadku na elektrodzie. Wygląda jak za wolne odświerzanie ale nie widziałem w bascom konfiguracji czegoś takiego na innym wyświetlaczu jest to samo.
  • #7 8584155
    Pittt
    Poziom 32  
    Te inne programy są też są twoje czy z książki ?
  • #8 8584163
    mradamf1985
    Poziom 12  
    Oryginalne pobrane ze strony wydawnictwa nie chciało mi się przepisywać :P
  • #9 8584490
    elektroziom
    Poziom 20  
    mradamf1985 napisał:
    To nie diody mrugają a wyświetlane dane. Wszystkie używane przeze mnie wyjścia są podłączone przez uln 2003apg.


    A przypadkiem nogi od kontrastu nie wpakowałeś do ULN2003? zamiast do podkówki 10k? w jaki sposób sterujesz kontrastem?
  • Pomocny post
    #10 8584720
    manekinen
    Poziom 29  
    Pewnie używasz polecenia "cls" do czyszczenia wyświetlacza, i pewnie robisz to źle.
  • #12 8585181
    Pittt
    Poziom 32  
    Sprawdź może jeszcze raz ustawienia zegara.
  • #13 8585185
    mirekk36
    Poziom 42  
    manekinen napisał:
    Pewnie używasz polecenia "cls" do czyszczenia wyświetlacza, i pewnie robisz to źle.


    Wg mnie to dokładnie o to chodzi a nie o żadne uszkodzenia LCD. Oczywiście prawidłowe zasilanie i filtracja to także podstawa. Proponuję pokazać te fragmenty kodu gdzie kolega użył CLS-ów i sprawa się od razu wyjaśni ;)
  • #15 8585358
    mradamf1985
    Poziom 12  
    Noga od kontrastu jest połączona z zasilaniem przez 10k, tu jest na pewno dobrze. Inny wyświetlacz, innej firmy miał to samo. To może pokaże kawałek swojego kodu który najbardziej mruga:

    Sub Menu1
    Do
    Cls
    Cursor Off Noblink
    Lcd "Ust Zegara"
    Lowerline
    Locate 2 , 8
    Lcd Chr(1)                                     'znak strzałki w dół
    Debounce P2 , 0 , Menu2
    Debounce Menu , 0 , Ust_godz
    Debounce Wyjdz , 0 , Wysw_czas
    Loop
    End Sub


    Chyba nic nie trzeba tłumaczyć. Co do zasilania to jest to samo na obydwu zasilaczach warsztatowych i 3A i * wiec raczej prądu mu nie brakuje :P. Wersje bascoma postaram się zmienić i zobaczę.
  • #17 8585377
    mirekk36
    Poziom 42  
    mradamf1985 napisał:
    Chyba nic nie trzeba tłumaczyć. .


    Tak jak już była mowa, to nie żadna wina zasilacza, wersji bascoma itp...

    Pewnie, że nie trzeba tłumaczyć, bo to my już od kilku postów ci tłumaczymy, że na pewno masz babola w związku z używaniem polecenia CLS.

    Jak powiedział kolega powyżej przemyśl to ;) ... a najlepiej pozbądź się go całkowicie. Możesz wyrzucić to przed pętlę zresztą tak samo jak to wyłączanie migania kursora.

    Chciałem napisać, żebyś zapoznał się z poleceniem Locate, ale widzę, że masz to już użyte raz w programie tyle że chyba po prostu przepisane a nie przemyślane. Dlatego poczytaj do czego ono służy i zastąp to swoje CLS właśnie tym ;)
    .... a problemy z miganiem znikną jak "ręką odjął"
  • #18 8585398
    mradamf1985
    Poziom 12  
    Do przemyśla to mam niedaleko ale jakoś mi to nie pomaga :P. Będę strzelał: za dużo napchałem do pętli do i zanim to sprawdzi mija jakiś czas i to jest to "mrugnięcie"? Jak tak to poprosił bym jak to ma poprawnie wyglądać. Sam wymyśliłem to "locate" chodziło mi o to żeby moja strzałka była w drugiej lini na środku.
  • #20 8585412
    Pittt
    Poziom 32  
    mradamf1985 napisał:
    Oryginalne pobrane ze strony wydawnictwa nie chciało mi się przepisywać :P


    I po co oszukiwać. Od razu powinieneś powiedzieć że wprowadziłeś poprawki.
  • #21 8585437
    mradamf1985
    Poziom 12  
    Dobra już wiem o co chodzi już nie mruga wywaliłem cls przed pętle "do" w w pętli dałem locate 1 , 1 do pierwszej lini w drugiej ak jak było i jest git. Co do oryginalnego programu z książki pozwole się zapytać czemu jest tak:

    Do
    cls
    lcd Time$
    lowerline 
    lcd date$
    waitms 100
    loop


    Chodzi mi o to że cls jest w pętli i dodatkowo na końcu opóźnienie 100ms. Odnośnie kodów ze strony wydawcy tam też są babole ja znalazłem kilka chociażby informacje z boku nie są oddzielone czyli są też "kodem" programu.
    Myślę że mój problem już został rozwiązany jako że mruganie ustało. Bardzo dziękuje za duże zainteresowanie tematem, nie spodziewałem się aż takiego. Mam jednak nadzieje że na moich błędach będą się uczyć następni. Dobrze że jest się kogo zapytać o takie rzeczy bo wg książki (mimo że moim zdaniem jest świetna) pewnie bym nie doszedł co jest nie tak, i pewnie tak bym zostawił zwłaszcza że sam kod działa poprawnie.
  • REKLAMA
  • #23 8586375
    mirekk36
    Poziom 42  
    adi84_84 --> twój sposób wcale nie jest szczęśliwy, a wręcz bardzo kiepski. Takie Home zajmuje prawie tyle czasu co CLS, zatem z punktu widzenia rozwoju programu i prawidłowego wykorzystywania pętli głównej bez żadnych opóźnień to jest kicha :(

    Zdecydowanie lepiej posługiwać się poleceniem Locate, które nie dość że działa duuuużo szybciej niż Home i CLS to jeszcze można spokojnie pozycjonować tekst gdzie ci się żywnie podoba. Polecam ci także poczytać na temat Locate a o Home w ogóle zapomnieć.
  • #24 8611974
    mradamf1985
    Poziom 12  
    I teraz się pojawił kolejny problem. Wszystko by było w porządku tylko że od czasu do czasu wyświetlacz głupieje. Zamiast wyświetlacz to co powinien latają jakieś chińskie znaczki. Gdzieś wyczytałem że jak się nie da żadnego opóźnienia w pętli to tak się właśnie dzieje. Czy o to chodzi? Jeśli tak to jak to dobrać Eksperymentalnie? Bo przecież jedna pętla działa szybciej inna wolniej, jak się to powinno zrobić aby nie mrugał wyświetlacz.
  • #25 8612273
    elektroziom
    Poziom 20  
    Jak nie dasz opóźnienia to przeważnie nic nie zobaczysz.. a jak wyświetla CI chińskie znaki to możesz mieć źle skonfigurowaną magistralę danych i sterującą. Wykorzystujesz 4 czy 8bitowy interfejs danych?
  • #26 8612969
    mradamf1985
    Poziom 12  
    Nie rozumiem dlaczego nic nie zobacze skoro jest to pętla która wyswietla cały czas to samo? Mam skonfigurowane rs, e, db4, db5, db6 ,db 7 , jak było cls zamiast locate było gites tylko mrugal lekko teraz ładnie wyświetla tylko że co jakiś czas głupieje. Czasem po dłuższym czasie czasem krótszym, zdarza się nawet że jak lecą te krzaczki i nacisne jakiś przycisk wraca do normalnej pracy po czym np znowu głupieje. Chyba że ja znowu coś źle pisze:

    Sub Menu1
    Cls
    Cursor Off Noblink
    Do
    Locate 1 , 1
    Lcd "Ust Zegara"
    Lowerline
    Locate 2 , 8
    Lcd Chr(1)
    Debounce P2 , 0 , Menu2
    Debounce Menu , 0 , Ust_godz
    Debounce Wyjdz , 0 , Wysw_czas
    Loop
    End Sub

    Przykładowy kod.

    Ciekawe bo po dłuższych testach stwierdzam że to problem związany z przyciskami. Nawet w pętli głównej jeśli przycisnę przycisk który nawet nie jest używany za którymś razem zaczyna głupieć. Do tej pory myślałem że to wina skoku po podprogramach. Jakieś pomysły??
REKLAMA