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

[bascom] Przerwanie timer0 i nieczytelne znaki na LCD w trybie 4-bitowym

BUNNIE 20 Lut 2012 19:17 1383 2
REKLAMA
  • #1 10573551
    BUNNIE
    Poziom 10  
    witam. Napisałem taki oto program. LCD jest podpięty w trybie 4ro bitowym.
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Jest to tylko program testowy, jednak zastanawia mnie jedna rzecz, bowiem:
    Wszystko działa i wyswietlany wynik jest oczywisty jednak w pewnym momencie lcd wyglada tak:
    Za jakiś czas zaś lcd jest pusty. Jeżeli w pętli głównej zmienię waitms 50 na 1000 to program dłuższą chwile wszystko pokazuje dobrze, ale i tak prędzej czy później na lcd pojawiają się krzaczki niczym z matrixa.
    Mój tok rozumowania jest taki; w pewnym momencie gdy lcd dostał ciąg instrukcji z głównej pętli, włącza się podprogram etykieta który zaś wysyła kolejne instrukcje które lcd źle interpretuje i przez to albo wyświetla nie w tym wierszu co potrzeba, albo powstają krzaki. Gdy atmega wraca do przerwanej instrukcji lcd zaś chcąc nie chcąc dostaje dane których się nie spodziewa i tak w kółko.
    Tak więc, jeżeli mam racje (chyba, że jest inaczej :) ) to jak można się ustrzec przed takim zachowaniem? Myślę że jakiś reset lcd w instrukcji przerwania ale nie mogę nic znaleść na ten temat.
    Program to sztuka dla sztuki, jednak zastanawia mnie to :)
  • REKLAMA
  • Pomocny post
    #2 10573590
    pawel_mr
    Poziom 15  
    Wyrzuć obsługę LCD z przerwania, wyświetlanie wykonuj tylko w pętli głównej. W przerwaniu zmieniaj dane, które mają się wyświetlać i ewentualnie ustawiaj jakąś flagę, która da informację w pętli, że trzeba wyświetlić nowe dane. Przerwania powinny trwać jak najkrócej, wstawianie tam wyświetlania LCD, waitów itp. jest złym pomysłem.
  • #3 10573609
    BUNNIE
    Poziom 10  
    Dziękuje :)
REKLAMA