Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

Markosław 06 Paź 2009 15:24 1986 11
  • #1 06 Paź 2009 15:24
    Markosław
    Poziom 9  

    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:

    Code:
    $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)

    0 11
  • Arrow Multisolution Day
  • #2 06 Paź 2009 15:48
    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.

    0
  • Arrow Multisolution Day
  • #3 06 Paź 2009 16:14
    Markosław
    Poziom 9  

    Fuse bity ustawione raczej prawidłowo, wgrywałem "program" migania diody :) i działał poprawnie. Połączenia sprawdziłem właśnie setny raz...

    0
  • Pomocny post
    #4 06 Paź 2009 19:49
    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.

    0
  • #5 06 Paź 2009 20:23
    Markosław
    Poziom 9  

    Dodanie "Config Porta = output" nie pomogło.
    Na AVCC jest 5V, na AGND jest 0...

    0
  • Pomocny post
    #6 06 Paź 2009 21:01
    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?

    0
  • #7 06 Paź 2009 21:06
    atom1477
    Poziom 43  

    Może:

    Code:

    Config Porta = Output

    Cls
       Locate 1, 1
       Lcd "test"
    Do
    Loop


    A jak kręcisz potencjometrem to co się dzieje?

    0
  • #8 06 Paź 2009 21:24
    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.

    0
  • #9 06 Paź 2009 22:01
    Markosław
    Poziom 9  

    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.

    0
  • Pomocny post
    #10 06 Paź 2009 22:27
    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.

    0
  • Pomocny post
    #11 07 Paź 2009 12:41
    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.

    Code:
    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

    0
  • #12 07 Paź 2009 14:35
    Markosław
    Poziom 9  

    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! :)

    0