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

[mega8][Bascom] Wyświetlacz LCD nie inicjalizuje się...

siwekyhy 21 Cze 2008 18:24 5070 25
  • #1 21 Cze 2008 18:24
    siwekyhy
    Poziom 14  

    Witam

    Kupiłem wyświetlacz lcd 2x16 z niebieskim podświetlaniem i znaki wyświetlają się na biało zgodny z standardem HD44780. Podłączyłem go do atmegi 8 wszystko połączone jak trzeba i poustawiałem. Po odpaleniu wyświetlacz wyświetla tylko jedna całą linie kwadracików... a żadnego napisu który mu wysyłam nie wyświetla... W sklepie jak kupowałem ten wyświetlacz sprzedawca sprawdził go i wszystko ładnie działało. Byłem u kolegi sprawdzić ten wyświetlacz na zestawie uruchomieniowym Zl11AVR na jego wyświetlaczu zielonym który jest w tym zestawie bez podświetlania wszystko działało a mój wyświetlacz udało się tylko raz uruchomić żeby coś wyświetlał i to jakimś "fartem".
    Szukałem po forum odpowiedzi , próbowałem kręcić kontrastem przed i po uruchomieniu programu , wyłączać/włączać podświetlanie , załączyć wyświetlacz chwilę po uruchomieniu programu, użyć atmegi 8 z kwarcem 4 Mhz , z wewnętrznym kwarcem 1 Mhz i nic... :( :( :(

    Za odpowiedzi z góry dzięki :)

    pozdrawiam :)

    0 25
  • #2 21 Cze 2008 19:46
    Chyllus
    Poziom 17  

    Wrzuć kod jeśli możesz. Bo trudno zgadywać w ciemno. Powodów może być wiele.

    0
  • #3 21 Cze 2008 20:31
    Balu
    Poziom 38  

    an na pewno ma wyprowadzone złącza ten nowy jak ten stary?:>

    0
  • #4 21 Cze 2008 21:01
    Freddy
    Poziom 43  

    Już się domyślam co to za wyświetlacz :)
    On ma trochę inaczej sterowanie, piny

    0
  • #5 21 Cze 2008 23:05
    siwekyhy
    Poziom 14  

    W bascomie program jest prosty wygląda tak :

    $regfile m8def.dat

    Lcd " Michał "

    No i na takim programie zadziałał raz na zestawie uruchomieniowym tylko zamiast m8def.dat było attiny 2313. Co do wyprowadzeń to musze być takie same jak w innych wyświetlaczach zgodnych z HD44780 skoro zadziałał na zestawie uruchomieniowym w którym LCD jest wpinany na goldpinach więc nie ma możliwości inaczej rozmieszczonych wyprowadzeń. Męczę się już z tym parę dni i zaczyna mnie to już wkurzać.... :|

    Dodam jeszcze oznaczenie LCD: WC1602ASTBLWNC06

    0
  • #6 21 Cze 2008 23:08
    don diego
    Poziom 32  

    To jest cały program? Chyba trochę krótki, nawet jak na Bascoma:) Jakaś inicjalizacja pewnie by się przydała i poczytanie helpa do Bascoma.

    0
  • #7 21 Cze 2008 23:27
    Chyllus
    Poziom 17  

    :D Serio bardzo krótki.
    Spróbuj coś takiego:

    Code:
    $crystal = 1000000    'deklaracja częstotliwości pracy kwarcu - ustaw tak jak masz u siebie
    
    $regfile "m8def.dat"
    Config Lcd = 16 * 2
    Do
    Cls : Cursor Off : Lcd "test line1"
    Lowerline
    Lcd "test line 2"
    Loop : End

    0
  • #8 22 Cze 2008 00:04
    Tomasz.W
    Poziom 35  

    Tak też nie pójdzie. Wszystko za mało.
    Brak przypisania linii portu procesora do poszczególnych wejść sterujących wyświetlacza. Efekt tego jest taki że programik nie wie gdzie jaki sygnał wystawić

    0
  • #9 22 Cze 2008 00:47
    Chyllus
    Poziom 17  

    U mnie wystarcza. W Bascomie domyślnie przypisane są porty do LCD i dzięki temu nie trzeba w każdym programie wklepywać tych samych linii kodu.
    Bascom wie gdzie jest podpięty LCD a my oszczędzamy czas.
    Musisz zajrzeć do Options>Compiler>LCD.
    A jeśli faktycznie to nie wystarczy to zastosuj to:

    Code:
    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6

    Oczywiście przypisz piny tak jak masz na swojej płytce.
    Pozdrawiam

    0
  • #10 22 Cze 2008 01:15
    Balu
    Poziom 38  

    Bo napisanie tej linijki to skaranie boskie tyle pracy...życzę koledze Chylius powodzenia w życiu programisty... Ale chyba długa droga przed kolegą.

    @autor, przepiszcz kolego nóżki czy coś się nie urwało, oprócz tego upewnij się, że nie próbujesz za szybko z nim gadać. (Zwolnij procek / użyj wait'a po cls'nie).

    0
  • #11 22 Cze 2008 10:37
    Balu
    Poziom 38  

    Nie są to frustracje, tylko lenistwo "programistów" nie znające granic, potem coś Wam nie działa, pytacie co, i wychodzi rozmowa jak ta od początku...
    "Program"

    Code:

    LCD "CZESC"


    Sorry! To ma być program? Nawet w bascomie KONIECZNE jest minimum wkładu. Nie, kompilator NIE może za nas wszystkiego robić.

    Czy naprawdę dopisanie tej linijki od konfiguracji LCD i jego pinów to jest tyle wysiłku?

    Potem jak kiedyś spędzisz dzień lub dwa szukając błedu w programie i znajdziesz go w opcjach, bo Ci się nie chciało czegoś tam napisać bo przecież kompilator to sam robi, wspomnisz moje słowa.

    I żeby nie byłonie mam nic przeciwko wspomagaczom konfiguracji, jeśli chcesz ok, CodeVision ma generator konfiguracji (i to o wiele bardziej rozbudowany niż bascup), Microchip ma generator konfiguracji....
    Ale i jeden i drugi GENERUJE KOD który My programiści możemy przejrzeć. A nie dołącza go gdzieś sam niejwanie.

    Sorry.

    0
  • #12 22 Cze 2008 10:44
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Chyllus napisał:

    Bascom wie gdzie jest podpięty LCD a my oszczędzamy czas.

    to gdzie jest podpiety moj LCD? <:

    4\/3!!

    0
  • #13 22 Cze 2008 10:56
    Chyllus
    Poziom 17  

    Hehehe. Freddie łapiesz mnie za słówka ;)
    Sam osobiście zajrzałem do Bascoma tylko kilka razy bo nie uważam go za coś wartego głębszego poznania. Ale od razu sprawdziłem jak są zdefiniowane w programie piny od LCD i już później mnie to nie interesowało. Myślałem że autor też tak zrobił więc nie pisałem linii z konfiguracją pinów.
    A to nie jest lenistwem z mojej strony tylko skonfigurowaniem programu.
    Po co się kłócić? Linia została dopisana. Niech teraz autor tematu sprawdzi czy działa i zakończmy proszę dalszą dyskusję nie związaną z tematem.
    Pozdrawiam elektronicznych frustratów!

    0
  • #14 22 Cze 2008 11:43
    Freddy
    Poziom 43  

    Osobiście używałem Bascoma kilka razy (używam FastAVR) i nie wierzę żadnemu kompilatorowi w tzw. defaulty. Już się raz naciąłem. Wolę sobie sam ustawić tak jak ja chcę.
    Jednym z błędów kompilatora jest jego "teoretyczne" traktowanie kilku instrukcji w jednej linii. Przykład:

    Code:

     T = T + T1 :  T = T / 10

    to nie jest to samo co
    Code:
     T = T + T1
    
     T = T / 10

    Przekonałem się na własnej skórze.

    0
  • #15 22 Cze 2008 15:26
    siwekyhy
    Poziom 14  

    Napisałem taki programik:
    $regfile "m8def.dat"
    $crystal = 4000000


    Config Portd = Output ' do zapalenia diody żebym wiedział kiedy lcd ma coś wyświetlać
    Portd = 0


    Config Lcd = 16 * 2

    Config Lcdbus = 4

    Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.0 , Rs = Portc.1

    Do

    Wait 1

    Cls

    Wait 1
    Portd = 255 'zapal diode


    Lcd "siema"

    Wait 1

    Portd = 0 'zgaś diode

    Loop

    End

    a tak po kompilacji :
    [/code]
    Report : NONAME23
    Date : 06-22-2008
    Time : 15:15:13

    Compiler : BASCOM-AVR LIBRARY V 1.11.8.3, DEMO Edition
    Processor : M8
    SRAM : 400 hex
    EEPROM : 200 hex
    ROMSIZE : 2000 hex

    ROMIMAGE : 1BA hex -> Will fit into ROM
    ROMIMAGE : 442 dec
    FLASH USED : 5 %
    BAUD : 9600 Baud
    XTAL : 4000000 Hz
    BAUD error : 0.16%

    Stack start : 45F hex
    Stack size : 20 hex
    S-Stacksize : 8 hex
    S-Stackstart : 440 hex
    Framesize : 18 hex
    Framestart : 427 hex
    Space left : 1056 dec

    LCD DB7 : PORTC.2
    LCD DB6 : PORTC.3
    LCD DB5 : PORTC.4
    LCD DB4 : PORTC.5
    LCD E : PORTC.0
    LCD RS : PORTC.1
    LCD mode : 4 bit

    Chylus Twój program też nie zadziałał :( sprawdzałem styki, podłączenia wszystko w porządku. Zmieniłem także procek na Attiny13 i też nie ruszył. brrrrrr :| Próbowałem jeszcze z komendami Lcd ON lcd off i nic :/ Hm Mógłby ktoś z was napisać program w C żeby Lcd byle co wyświetlał i był podpięty pod te piny co są wyżej napisane. Ps. tak trochę poza tematem pytanko czemu jak zmieniłem kwarc z wewnętrznego 1Mhz na zewnętrzny 4Mhz to teraz podczas wykonywania programu "dłużej trwa
    sekunda" ?

    0
  • #16 22 Cze 2008 16:00
    Freddy
    Poziom 43  

    A zmieniłes przy okazji ustawienia fuse ?

    0
  • #17 22 Cze 2008 16:15
    Tomasz.W
    Poziom 35  

    1) narysuj schemacik jak masz to wszystko podłączone
    2) napisz czy kompilator zgłasza jakieś błędy (w to szczerze wątpię)
    3) jakiego programatora używasz
    4) czy programator poprawnie identyfikuje procesor
    5) przepisz wszystko z zakładki programatora "Lock and Fuse Bits"
    Tyle na razie.

    0
  • #18 22 Cze 2008 18:33
    siwekyhy
    Poziom 14  

    1 Link obrazka
    [mega8][Bascom] Wyświetlacz LCD nie inicjalizuje się...
    2 Nie zgłaszają się żadne błędy
    3 STK 200/300 na LPT
    4 Tak
    5 Nie wiem o co wam chodzi z fusami bo jest ustawiony procek na 4 Mhz czy coś więcej trzeba ustawić ? ps obrazek z fusami dorzucę później [/img]

    0
  • #19 22 Cze 2008 19:26
    Tomasz.W
    Poziom 35  

    1) brak kondensatorów przy kwarcu
    2) pin 5 wyświetlacza (R/W) musi być połączony z masą.
    3) 20 pin procesora (Avcc) musi być podłączony do plusa zasilania

    0
  • #20 22 Cze 2008 19:41
    Chyllus
    Poziom 17  

    Oczywiście pin R/W należy podłączyć do masy tak samo jak DB0-DB3

    0
  • #21 22 Cze 2008 19:46
    Tomasz.W
    Poziom 35  

    Chyllus napisał:
    ....podłączyć do masy tak samo jak DB0-DB3...
    Nie ma takiej konieczności. Linie Db0÷Db3 nie muszą być podpięte do masy, mogą "wisieć" nie dopięte do niczego.

    0
  • #22 22 Cze 2008 21:29
    siwekyhy
    Poziom 14  

    No zadziałał :) Nie działało dlatego że nie było podpięte R/W do masy... Ad. 1 Kondensatorów zapomniałem na schemacie dołączyć ale są podpięte do kwarcu :)
    Co do 3 punktu to gdy nie jest połączone Avcc do Vcc do też działa ( po co się to łączy razem? ) Chciałem jeszcze raz zapytać dlaczego czas np wait 1 działa dłużej niż jedna sekunda na zewnętrznym kwarcu 4Mhz niż na kwarcu wewnętrznym na którym działa wszystko normalnie :)

    Db0 - Db3 nie podpinałem do masy

    Co do Bascoma to po skonfigurowaniu Bascoma bez pisania w programie config lcd itd itd Lcd też zadział :)

    Dzięki wszystkim za pomoc :) pozdrawiam :)

    0
  • #23 22 Cze 2008 21:37
    Freddie Chopin
    Specjalista - Mikrokontrolery

    siwekyhy napisał:
    ( po co się do łączy razem? )

    (po co sie czyta datasheeta?)

    odpowiedz -> zeby nie zadawac glupich pytan <-

    4\/3!!

    1
  • #24 22 Cze 2008 21:40
    Chyllus
    Poziom 17  

    Gratuluje :) AVCC jest to zasilanie części analogowej uK (przetwornika analogowo cyfrowego). AVCC łączy się z VCC zazwyczaj poprzez filtr LC w celu minimalizacji zakłóceń.
    Nie ma to jednak najmniejszego znaczenia w przypadku ATMEGA8 gdyż omyłkowo piny te są wewnętrznie połączone z sobą (błąd producenta).
    Co do drugiego pytania to czy definiujesz wartość częstotliwości kwarcu na początku programu?

    0
  • #25 23 Cze 2008 00:14
    Balu
    Poziom 38  

    Tyle, że połączone przez kilka Ohm i tak to ma znaczenie. Nie dziadujmy KONIECZNIE trzeba podłączyć WSZYSTKIE zasilania.

    0
  • #26 23 Cze 2008 09:00
    siwekyhy
    Poziom 14  

    tak definiuję $crystal = 4000000
    a fusy zmieniłem w pony prog na CKSEL3 - bez ptaszka CKSEL2 - bez ptaszka CKSEL1 - ptaszek CKSEL0 - bez ptaszka :) a to obrazek z moimi fusami :
    [mega8][Bascom] Wyświetlacz LCD nie inicjalizuje się...

    0