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

AVR ASM ATMEGA8 - Błędy wyświetlania czcionek na UC1601 z tablicy .db

Szycha082 05 Lip 2014 09:24 1110 4
REKLAMA
  • #1 13768673
    Szycha082
    Poziom 11  
    Witam, mam problem z prawidłowym odczytem z tablicy .db
    Piszę obsługę w ATMEGA8 dla sterownika wyświetlacza graficznego UC1601, nie posiada on wbudowanej czcionki więc wstawiłem w kodzie programy swoją, w woli ścisłości to czcionek mam wstawione kilka.
    Przy wyświetlaniu tekstu kilka znaków się wykrzacza, co ciekawe gdy zwiększę lub zmniejszę wielkość kodu programu to uszkadzają się inne znaki a wczaśniej uszkodzone są ok.
    Myślałem na początku że procesor ma uszkodzoną pamięć w miejscu umieszczonej tablicy .db ale to chyba nie możliwe bo ten problem był gdy kod zajmował 20% pamięci i teraz gdy zajmuje 82%
    Gdyby pamięć była uszkodzone to chyba już bym na nią wszedł kodem operacyjnym i by mi cały procek się wykrzaczał.
    Weryfikacja programu po wgraniu w procesor też przechodzi prawidłowo.

    Sam już nie mam pomysłu czy trzeba jakoś te tablice inaczej wstawiać.
    To fragment tablicy,
    Kod: text
    Zaloguj się, aby zobaczyć kod

    A to kod obsługi tablicy
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 13768687
    excray
    Poziom 41  
    Te 6 linijek kodu to Twój cały kod czy też wytypowałeś w jakiś magiczny sposób że właśnie tam musi kryć się błąd?
  • REKLAMA
  • #3 13768710
    Szycha082
    Poziom 11  
    Chciałem pokazać sposób zapisu jaki użyłem, dodanie paru więcej linijek chyba wiele nie zmieni, ale poprawiłem jeszcze błąd w nazwie wyświetlacza nie MCU6050 tylko uc1601 aczkolwiek MCU6050 też się tu znajduje.
  • REKLAMA
  • #4 13768719
    excray
    Poziom 41  
    Dołożyłeś kilka linijek i jednak się zmieniło. Ściągasz zmienną ze stosu a gdzie ją na ten stos wrzucasz? Poza tym jak operujesz na 16-bitowym adresie to jeśli chcesz go zmniejszyć o 1 to używaj sbiw ZL,1 a nie subi ZL,1.
  • #5 13768732
    Szycha082
    Poziom 11  
    Faktycznie błąd był w odejmowaniu, zamiast użyć operatora 16 bitowego użyłem 8 bitowego.
REKLAMA