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

Błąd wyświetlania "zera"

r06 14 Paź 2009 12:49 1828 16
REKLAMA
  • #1 7127174
    r06
    Poziom 11  
    Witam!

    Mam problem z wyświetleniem na wyświetlaczu 0. Mam typowy układ na Atmedze 16 z wyświetlaczem Hy-1602. Prosty program:
    
    $regfile = "m16def.dat"
    $crystal = 8000000
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portd.7 , Db7 = Porta.7 , E = Portc.3 , Rs = Portc.2
    
    Cls
    Do
    
      Lcd 0
      Wait 1
    
    Loop
    End 



    Po wgraniu na wyświetlaczu pojawiają się w pierwszej linii kwadraty. Jeżeli wpisze zamiast 0 cokolwiek innego to mi się normalnie wyświetla. Mało tego jeżeli użyję funkcji chr(48) gdzie 48 to kod ascii 0 to dzieje się dokładnie to samo.
    Jak to rozwiązać proszę o pomoc.

    Kod, proszę umieszczać w znacznikach [code] - poprawiłem.
    [zumek]
  • REKLAMA
  • #2 7127308
    elektrofil
    Poziom 17  
    spróbuj tego, powinno zapełnić pierwszą linie znakami "x" a następnie zamazać je zerami lub czymkolwiek innym co podstawisz jako zmienną B

    
    $regfile = "m16def.dat"
    $crystal = 8000000
    
    
    Dim A As Byte
    Dim B As Byte
    
    A = 0
    B = 0
    
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portd.7 , Db7 = Porta.7 , E = Portc.3 , Rs = Portc.2
    
    Cls
    Lcd "xxxxxxxxxxxxxxxx"
    
    Locate 1 , 1
    
    For A = 0 To 15
       Lcd B;
       Wait 1
    Next A
    
    Do
    nop
    Loop
    
    End
    
  • REKLAMA
  • #4 7127330
    r06
    Poziom 11  
    Daj zamiast:
    Lcd 0
    to:
    Lcd "0"


    tak już próbowałem. Generalnie wszystko wyświetla ok za wyjątkiem znaku zera.(liczby zero też nie wyświetla)

    Co ciekawe jeśli wpiszę 10 lub 200 ( albo tak "10" ewentualnie tak "200" ) to nie ma problemu i ładnie się pojawia na wyświetlaczu. Już nie wiem o co chodzi. wygląda na to że nie może wyć 0 wyświetlane na pierwszej pozycji.
  • #5 7127343
    lekto
    Poziom 35  
    a daje rade wyświetlić tekst np. "0123"?
  • #6 7127346
    Konto nie istnieje
    Konto nie istnieje  
  • #7 7127416
    r06
    Poziom 11  
    Zarówno

    LCD 01234

    jak i

    LCD "01234"

    wyświetla poprawnie, ale jak zostawiłem samo zero to znowu same kwadraciki.
  • REKLAMA
  • #8 7129104
    r06
    Poziom 11  
    Widzę że nikt nie ma pomysłu jak mi pomóc :(
  • #9 7129392
    janbernat
    Poziom 38  
    Może JTAG nie jest wyłączony?
    Port C 2-5.
    To w Bascomie w fusebitach można wyłączyć.
  • #10 7129764
    elektrofil
    Poziom 17  
    podałem prosty kawałek kodu. czy kopiuj/wklej/kompilacja i zaprogramowanie tak boli? czy może klawiatura gryzie aby odpisać po sprawdzeniu?
    zaprogramuj tym kawałkiem kodu który podałem i podaj odpowiedź, to pewnie będę mógł szukać dalej problemu, wróżyć z niczego nie potrafię.
  • #11 7130693
    Samuraj
    Poziom 35  
    r06 napisał:
    Daj zamiast:
    Lcd 0
    to:
    Lcd "0"


    Lecz nie napisałeś jaki to dało efekt. Działa czy nie. Jeśli wpiszesz Lcd "0" to wyświetla się 0 czy nie.
  • #12 7131501
    r06
    Poziom 11  
    Po wpisaniu:
    Lcd 0
    lub
    Lcd "0"

    Wyświetla kwadraciki w pierwszym rzędzie.

    JTAG jest wyłączony

    Pro wczytaniu programiku podanego przez elektrofila od razu pojawiają się w pierwszym rzędzie kwardaciki.


    Czekam na dalsze propozycje
  • #13 7142435
    elektrofil
    Poziom 17  
    skoro ten kawałek kodu który podałem, dał taki efekt, to przynajmniej u mnie występował w dwóch przypadkach i oba były związane z kwarcem.

    moje sugestie:
    1) upewnij się kilkukrotnie, że masz dobrze ustawiony kwarc w fusebitach, jeżeli kwarc rzeczywisty będzie miał częstotliwość mniejszą niż deklaracja, to dzieją się większe cuda na wyświetlaczu ( przynajmniej z tego co wczoraj sprawdziłem)
    2) wyświetlacz może mieć dłuższy czas inicjalizacji (chińczyk chińczykowi nie równy) aby dać więcej czasu na inicjalizację, przy rzeczywistym kwarcu np 4MHz wpisz w bascomie 5MHz, to oszustwo da wyświetlaczowi więcej czasu na wszystko...

    jak możesz to podaj ustawienie fusebitów jakie masz, jutro sprawdzę na m16 i lcd 2*16 co jest nie tak.
  • REKLAMA
  • #14 7160671
    r06
    Poziom 11  
    Tak wyglądają fusybity"
    Błąd wyświetlania "zera"

    Czekam na sugestie. Kwarc 8 MHz
  • #15 7160979
    Konto nie istnieje
    Poziom 1  
  • #16 7195093
    elektrofil
    Poziom 17  
    ok do pierwszego błędu się przyznaje, lecz co do drugiego cytatu nie pomyliłem się.
    jeżeli podłączysz kwarc 1MHz a w bascomie wpiszesz 8MHz to "wait 1" trwa 8-siem sekund. jest to częsty błąd przeklepywaczy kodu, którzy nie zmieniają fabrycznego ustawienia fusebitów i nie wyłączają clkdiv/8.

    lecz wracając do tematu. fusy masz dobrze ustawione, sprawdź proszę wpisując definicje kwarcu z wartością 9MHz i 10MHZ jak to nie pomoże to proszę prześlij mi skompilowany program, jak chcesz może być bez pliku w bascomie, grunt aby był hex i obj. sprawdzę skompilowany na jtagu i zobacze co pokaże deasemblacja, jak u mnie zadziała na kilku wyświetlaczach to znak że masz walnięty lcd
  • #17 7196931
    Konto nie istnieje
    Poziom 1  
REKLAMA