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

[ATmega32][bascom]Próba uruchomienia wyświetlacza 16*2

Markosław 06 Paź 2009 15:24 2229 11
REKLAMA
  • #1 7096700
    Markosław
    Poziom 10  
    Witam, mam problem, z którym męczę się już dłuższy czas i poza zasięgnięciem pomocy tutaj, nic innego nie przychodzi mi już do głowy...
    Mianowicie, do portu A w ATmega32 mam podłączony wyświetlacz 16*2 (zgodny z hd44780), zewnętrzny kwarc 16 MHz.
    Podłączenia LCD:
    db4 - portA.4 ... db7 - portA.7,
    RS - portA.2,
    E - portA.3.
    RW zwarte do masy,
    Vss - GND,
    Vdd - +5V,
    V0 - do potencjometra.

    Kod programu w bascomie wygląda tak:
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
    
    Config Lcd = 16 * 2
    
    Cls
       Upperline
       Lcd "test"
       Lowerline
       Lcd "12345678"
    End
    


    Po wgraniu programu pojawia się czarny górny rząd - z tego wynikałoby, że ze sprzętem wszystko ok, wina po stronie oprogramowania. Ale gdzie tu błąd, tym bardziej, że program jest napisany na podstawie jednego z sampli bascoma?
    Czy nie mogę stosować do wyświetlacza portu A? Spotkałem się gdzieś z czyjąś wypowiedzią, że nie można używać tego portu do LCD, ale tam była mowa o ATmega8...
    Jakie jeszcze mogą być przyczyny niewłaściwej pracy? (działanie samych portów sprawdzałem - wszystko ok)
  • REKLAMA
  • #2 7096780
    dawid512
    Poziom 32  
    Podstawowe pytanie połączenia są w 100% prawidłowe? Żadnych zwarć, przerwań obwodu? Kolejne pytanie: fuse bity ustawione na zew. kwarc 16MHz? Czy tylko go podłączyłeś i myślisz że jest cacy. Po za tym po cls proponuję dać "home" lub skorzystać z locate.
  • #3 7096875
    Markosław
    Poziom 10  
    Fuse bity ustawione raczej prawidłowo, wgrywałem "program" migania diody :) i działał poprawnie. Połączenia sprawdziłem właśnie setny raz...
  • REKLAMA
  • Pomocny post
    #4 7097749
    janbernat
    Poziom 38  
    Spróbuj wpisać na początku "Config Porta = Output" i sprawdź czy AVCC (pin30) ma zasilanie.
    I czy na nóżce 31 jest masa.
  • REKLAMA
  • #5 7097918
    Markosław
    Poziom 10  
    Dodanie "Config Porta = output" nie pomogło.
    Na AVCC jest 5V, na AGND jest 0...
  • Pomocny post
    #6 7098132
    wader_669
    Poziom 28  
    Czy nie uzyte piny lcd podlaczyles do masy? Zmieniles fusebity jak chcesz uzywac zew. 16mhz ? Nie pomyliles pinow? Sprawdz miernikiem czy wszystko jest ok. Masa wspolna? zasilasz lcd i avr z 5V?
  • REKLAMA
  • #7 7098159
    Konto nie istnieje
    Poziom 1  
  • #8 7098222
    janbernat
    Poziom 38  
    No dobrze, sprawdziłem.
    Płytka EVBavr05.
    Bascom 1.11.9.5
    Port A, Twój kod.
    Chodzi.
    W pierwszej linijce napis test.
    w drugiej 12345678.
    Nie trzeba ustawiać config output.
    Bascom sam to robi.

    Dodano po 6 [minuty]:

    Może to nie jest 16*2 ?
    Może ma trochę inaczej wyprowadzone piny?
    Ponieważ Twój kod skopiowałem to raczej nie ma błędów w przecinkach itp.
  • #9 7098476
    Markosław
    Poziom 10  
    To jest 16*2, piny ma wyprowadzone chyba standardowo, z resztą i tak podłączałem wg opisu pinów na wyświetlaczu.
    Nieużywane piny miałem niepodłączone, ale po podłączeniu ich do masy nic się nie zmieniło.
    Do tego teraz coś zaczął mi szwankować układ, bo nie za każdym razem udaje się mu odczytać fuse bity. Ale przy programowaniu zawsze weryfikacja przebiega pomyślnie, więc to chyba nie jest przyczyną problemu...
    No nic sprawdzam ciągle układ czy może jednak jakiegoś przebicia nie ma, albo przerwy nie ma (choć robiłem to już wielokrotnie...).
    Janbernat, dzięki za przetestowanie programu.
  • Pomocny post
    #10 7098598
    janbernat
    Poziom 38  
    No ja mam wyświetlacz np. taki że mam piny 16, 15 a potem 1-14.
    Nawet nie sprawdziłem czy 2*16 czy np. 2*40.
    A drugi 4*20 z wyjściem w dwóch rzędach.
    Troszkę popracowałem zanim do tego doszedłem.
    Tak że może sprawdź na 16*1 lub 16*1A.
    Tzn. kup jak nie masz.
    Program jest dobry, coś z podłączeniem albo rodzajem wyświetlacza.
    No bo program działa bez problemu.
  • Pomocny post
    #11 7100034
    marco47
    Poziom 41  
    Witam kolegów!
    Kolego Markosław
    A gdzie masz konfigurację portów procka
    Kolego janbernat
    Konfiguracja pinów jest wymagana bez względu na to czy robi to Bascom .Lepiej mieć pełną kontrolę nad pisanym programem.
    Config Porta = &B11111111    'ustawione piny jako wyjścia
           Porta = &B00000000     'ustawione na pinach niski poziom  

    Jest to osobne urządzenie czy układ testowy?
    Nie podłączać wolnych pinów LCD do masy
    Jeśli masz możliwośc to po wgraniu programu resetuj kilka razy procka.
    Często się zdarza przy tego typu minimalistycznym programie nie zadziałanie LCD ,chociaż teoretycznie wszystko jest O.K
    Pozdrawiam
  • #12 7100368
    Markosław
    Poziom 10  
    Ok, już wszystko działa. A przyczyny problemów były dwie. Pierwsza: na zacisku (wtyku) taśmy zrobiło się zwarcie dwóch linii i to takie, które raz było, a raz nie, przez co trudno było go odkryć. A druga: mikrokontroler odmówił posłuszeństwa.
    Teraz mam nową atmegę i wtyczkę i rozkoszuję się napisem "test 1235678" na wyświetlaczu :D
    Dzięki wszystkim za pomoc! :)
REKLAMA