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

Atmega128 - Bascom: Błędy wyświetlania na LCD 128x64, jak je naprawić?

sundayman 07 Kwi 2013 22:45 3225 8
  • #1 12170625
    sundayman
    Poziom 26  
    Jest sobie Atmega128 z podłączonym monochromatycznym wyświetlaczem LCD (128x64).

    Oto schemat podłączenia :

    Atmega128 - Bascom: Błędy wyświetlania na LCD 128x64, jak je naprawić?

    Wyświetlacz jest standardowo konfigurowany :

    
    Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce1 = 1 , Ce2 = 0 , Cd = 3 , Rd = 4 , Reset = 2 , Enable = 5
    


    Dane graficzne wyświetlam głównie za pomocą SHOWPIC,
    natomiast informacje tekstowe za pomocą tej procedury :

    http://evertdekker.com/Joomla/index.php?option=com_content&task=view&id=49&Itemid=86

    Generalnie wszystko jest ok, natomiast od czasu do czasu zdarzają się błędy wyświetlania : zawartość LCD "rozjeżdza się" - niby wszystko dalej działa, ale zawartość ekranu jest "poprzesuwana".

    Czasem INITLCD przywraca poprawną pracę, a czasem - mimo użycia tej instrukcji - zawartość pozostaje "skaszaniona". Dopiero reset procesora (bez wyłączania zasilania) przywraca poprawną pracę.

    Czy jest jakaś możliwość, żeby wykorzystać pin RESET wyświetlacza ?
    Po użyciu CONFIG GRAPHLCD niestety próby zmiany poziomów na pinie C3 (czyli RS)
    nic nie dają...

    Niestety nie mogę zastosować najprostszego rozwiązania, czyli odcinania zasilania wyświetlacza. Pozostają tylko opcje programowe...

    Macie jakiś pomysł ?
  • #2 12174074
    jousto
    Poziom 17  
    Czy nie zamieniłeś Ce1 = 1 , Ce2 = 0?
  • #3 12174294
    rekinisko
    Poziom 22  
    A reset atmegi podciągnięty do plusa opornikiem?
  • #4 12175174
    sundayman
    Poziom 26  
    Cytat:
    Czy nie zamieniłeś Ce1 = 1 , Ce2 = 0?


    Wow. Ale jajka :)
    Jest tak - faktycznie, pomyliłem się - ale kiedy robię "prawidłowo", to wtedy
    wszystko działa źle - czyli strony są "pozamieniane" lewa z prawą.

    Czyli - niby się pomyliłem, ale akurat tak jest dobrze (może jakiś błąd w datasheecie wyświetlacza ?).

    Zresztą, problem , o którym piszę (rozjechanie się obrazu), zdarza się sporadycznie bardzo - w 99% czasu wszystko jest ok.
    Sam problem wynika jednak nie z jakiegoś "zakłócenia" elektrycznego, a jest spowodowany softwareowo i wydarza się to w dość określonych momentach (przypuszczam, że to jakaś niedoskonałość biblioteki , albo coś z przerwaniami, itp).

    Nie udało mi się na razie dojść, ale sprawę by rozwiązało skuteczne "resetowanie", które można by zrobić z programu. INITLCD przeważnie pomaga, no ale właśnie nie zawsze.

    Reset ATMEGI chyba podciągnięty (nie pamiętam) - ale program działa dobrze (nie wywala się) - problem dotyczy tylko sporadycznych błędów wyświetlania.
    Kiedy taki błąd się wydarzy, to procesor nadal działa poprawnie (program chodzi OK).
  • #5 12177983
    morswin89
    Poziom 23  
    Miałem podobny problem przyczyna było przerwanie które wcinało się podczas komunikacji z wyświetlaczem, szczególnie widoczne podczas wyświetlania grafiki. Rozwiązałem ta wyłączając przerwania na czas wyświetlania na ekranie i włączając zaraz po.

    Dodano po 1 [minuty]:

    https://www.elektroda.pl/rtvforum/topic2515460.html#12021001
  • #6 12178730
    jousto
    Poziom 17  
    A... przypomniałem sobie, że jak robiłem obsługę wyświetlacza T6963 to też wyłączałem przerwania na czas obsługi wyświetlacza i sprawa się uspokoiła.
  • #7 12240480
    sundayman
    Poziom 26  
    Dziwna sprawa.

    Okazało się, że winne błędom wyświetlania było przerwanie od timer3, ale co bardzo dziwne, wyłączenie (na czas wyświetlania) przerwań poprzez DISABLE/ENABLE INTERRUPTS nie pomaga, a wyłączenie przez DISABLE/ENABLE TIMER3 - pomaga.

    Czyli jak to - DISABLE INTERRUPTS nie działa ?
    A może - nie działa "od razu", czy jak ?

    Bardzo to dziwne.
  • #8 12244565
    piotrva
    VIP Zasłużony dla elektroda
    Taki jest Bascom niestety.
    Wiele rzeczy w tym kompilatorze czasem powoduje bardzo dziwne zachowanie, bo W TEORII enable disable interrupts powinno zablokować wszystkie przerwania...
  • #9 13086697
    sundayman
    Poziom 26  
    Tak jak wspomniałem, problemem są przerwania z timerów - wyłączenie pomaga.
REKLAMA