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

Mega8 + LCD (CodeVision) podwójne litery i ogólnie kicha

Costek 06 Lis 2008 10:33 1969 9
  • #1 5707259
    Costek
    Poziom 13  
    Witam !

    Zacząłem zabawę z avrkami - wcześniej dawno bawiłem się picem i asemblerem - teraz wracam w zmienione środowisko.

    Steruję sobie atmegą - diody mi migają, przyciski się wciskają, jednak lcd mnie doprowadza do pasji.

    Mam wszystko podłączone wydaje mi się jak należy - sterowanie 4bitowe, linie sterujące podłączone - wyświetlacz raczej sprawny - wyjęty z działającego urządzenia i teraz zaczyna się jazda.

    Po podłączneniu początkowo nie było nic - podmieniłem wyświetlacz - nic - podłączyłem kontrast :-) wyświetliła się jedna pełna linia - czyli ok.
    zaprogramowałem avr - i zamiast "temperatura" mam tteemmppeerraatt - podwojone litery.
    Kombinuję i kombinuję - przełączyłem na inny port, nic nie dało. Wymieniłem znowu lcd na trzeci - nic nie dało - sprawdziłem połączenia - wszystko ok. Myślę sobie może coś z biblioteką jest nie tak w codevision. zainstalowałem bascoma - po trudach napisałem coś do lcd - podłączam i mam jakieś śmieci - tzn krzaczki. I się załamałem - myślę może procek padł - napisałem miganie diodkami na portach - miga.

    I nie wiem już co to może być - trzy wyświetlacze, dwie at megi, codevision, bascom, i nie mogę wysterować lcd.
    Teraz pomieszałem i sam już nie wiem, bo świeci mi tylko DDDDDDDDDDD:-)

    Kodu nie mam teraz - bo piszę z pracy, ale nic niebywałego - lcd_init(), lcd_putsf("Temperatura"); to wszystko.

    Może ktoś coś podpowie, albo podeśle mi skompilowany działający hex do wyświetlenia czegoś na lcd na porcie d atmega8 ? z opisem podłączenia, bo mnie zaraz coś trafi.

    Co mi przychodzi jeszcze do głowy to:

    1. przyłącza lcd nie są zestandaryzowane i na pinach 1-16 nie ma po kolei gnd, vcc, kontrast linie ssterujące i dalej d0-d7 - i może coś źle podłączam - ale te podwójne litery trochę przeczą, bo coś wyświetla
    2. w desperacji może coś spróbuję napisać do ręcznego strowania lcdkiem, ale dopiero zaczynam programowanie i może to być masakra.

    Pomóżcie koledzy, bo oszaleję - siedzę nad tym już cztery wieczory...

    Pozdrawiam
    Piotrek (Costek)
    piotr(_at_)softel.elblag.pl
  • #2 5707493
    mirekk36
    Poziom 42  
    Wiesz co? żeby pod Bascomem nie działał standardowy wyświetlacz LCD to już trzeba się na prawdę bardzo postarać. Co jak widać ci się udało ;)

    ... w Bascomie - zawsze to ładnie działa, więc przede wszystkim sprawdź swoje połączenia skoro piszesz, że masz je na nietypowych nóżkach. Co ważne - mam nadzieję, że linię R/W podłączyłeś do GND??? (przy standardowym korzystaniu z bascomowskiej biblioteki to jest konieczne) - więc pozostałe sygnały sterujące to RS i E. Poza tym już tylko 4 linie danych D3..D7

    W bascomie użyj polecenia konfiguracji tego wyświetlacza w kodzie - tak jak jest to w helpie pokazane a nie tylko w ustawieniach IDE.

    Podejrzewam, że zarówno twój procek i wyświetlacz są w porządku tylko coś namieszałeś jak nie w kodzie to w połączeniach
  • #3 5707566
    Samuraj
    Poziom 35  
    Pierwsze moje kroki w programowaniu w C też były w CodeVision i po paru próbach odpuściłem sobie. Standardowa biblioteka dodawana do kompilatora też jakieś cuda powodowała u mnie na wyświetlaczu LCD. Rozwiązaniem było napisanie własnej od podstaw, wtedy było już lepiej, lecz pojawiały się problemy przy innych elementach systemu (chyba z I2C). Tak więc po wielu próbach i szukaniu błędów wywaliłem ten produkt i przesiadłem się na AVRStudio. Jak do tej chwili nie widzę z tym problemów (chyba dlatego że biblioteki do elementów piszę sam).
  • #4 5707682
    Costek
    Poziom 13  
    mirekk36 napisał:
    Wiesz co? żeby pod Bascomem nie działał standardowy wyświetlacz LCD to już trzeba się na prawdę bardzo postarać. Co jak widać ci się udało ;)

    ... w Bascomie - zawsze to ładnie działa, więc przede wszystkim sprawdź


    No i właśnie się dziwię, podłączone jak trzeba - do masy też :-) konfiguracja w kodzie zgodnie z helpem. Nie wiem co się dzieje :-(

    poćwiczę jeszcze dziś wieczorem - jak nie to wywalam to w pi...dziec...

    Pozdrawiam
    Piotrek

    Dodano po 1 [minuty]:

    Samuraj napisał:
    Tak więc po wielu próbach i szukaniu błędów wywaliłem ten produkt i przesiadłem się na AVRStudio. Jak do tej chwili nie widzę z tym problemów (chyba dlatego że biblioteki do elementów piszę sam).


    Ale na avrstudio i c ? wtedy co ? winavr ?

    Pzdr
    Piotrek
  • #6 5728623
    rpal
    Poziom 27  
    W tych dywagacjach odnośnie bylejakości Codevision proponuję aby koledzy nie zapędzali się zbytnio. Jeśli któryś z Was używa gotowego zestawu uruchomieniowego krajowej produkcji to należy zwrócić uwagę że Codevision w inny niż reszta sposób konfiguruje elektryczne połączenia LCD. W zasadzie wymaga serowania linią RD która to najczęściej jest na stałe podłączona do masy. Używając kreatora i określając zgodnie z sugestiami programu, prawidłową konfigurację podłączeń żadnych problemów nie będzie. Każdy wybrany port który będzie przeznaczony do obsługi wyświetlacza wymaga takie podłączenia:
    bit0-RS, bit1-RD,bit2-EN,bit4-Dane4,bit5-Dane5,bit6-Dane6,bit7-Dane7.
    Informacje o numerach nóżek są rozpisane łopatologicznie. Niektóre zestawy np. produkcji BTC mają inaczej skonfigurowane wyprowadzenia dla LCD i stąd problemy (np.trzeba ciąć ścieżki). Mało tego, generuje się kod który od razu obsługuje LCD. Wystarczy użyć kreatora i nie zwalać winy na środowisko projektowe. Trzeba tylko nieco ruszyć głową.
    Linia RD czy inaczej R/W w większości środowisk jest zwarta do masy i wymagane opóźnienia w reakcji LCD realizowane są programowo. CodeVision działa nieco inteligentniej bo po prostu sprawdza zajętość wyświetlacza na jego linii R/W (RD) przez co nie wymaga używania zwłoki programowej zwykle definiowanej na wyrost.PZDR
  • #7 5729329
    Costek
    Poziom 13  
    Ja już nie mam siły - to jakieś przekleństwo - nie działa i nie działa. Podłączyłem lcd wyjęty z kasy fiskalnej - na pewno działający. Podłączam do płytki - bascomowy program - nie działa. Winavr - nie działa. W akcie desperacji podmieniłem wsad na ten z codevision - działa !! "test lcd" się wyświetliło.
    Podmieniam lcd na poprzedni mniejszy - ta sama sieczka. Czyli wina jest w lcdku chyba? Z tym, że te tych mniejszych lcdków to mam cztery i na każdym ten sam objaw. Z drugiej strony nie działa na dwóch kodach - tylko na codevision ? Nota katalogowa nic nie mówi szczególnego - połączenia standardowe. Może coś z czasami ? popróbuję jeszcze pozmieniać czasy w bilbliotece.

    Pozdrawiam
    Piotrek
  • #8 5729576
    mirekk36
    Poziom 42  
    Zobacz co pisał kolega powyżej (ja nigdy nie używałem CodeVision) , że on generuje kod dla LCD który korzysta z Pinu R/W czyli trza go podłączyć pod jakiś pin procka - a Bascom w standardowej bibliotece nie obsługuje pinu R/W i wtedy trzeba go do masy.

    Myślę, że ze zdenerwowania poprostu namieszałeś sobie coś w fizycznych połączeniach i stąd te problemy i frustracje - sprawdź to jeszcze raz, i jeszcze raz - aż zadziała
  • #9 5729708
    Costek
    Poziom 13  
    mirekk36 napisał:
    Zobacz co pisał kolega powyżej (ja nigdy nie używałem CodeVision) , że on generuje kod dla LCD który korzysta z Pinu R/W czyli trza go podłączyć pod jakiś pin procka - a Bascom w standardowej bibliotece nie obsługuje pinu R/W i wtedy trzeba go do masy.



    Zmieniam pin RW zależnie od kompilatora :-)
    połączenia są ok - dowodem tego jest to, że jeden lcd w końcu zadziałał a inne nie - na tym samym oprzewodowaniu :-)

    Pozdrawiam
    Piotrek
  • #10 5736111
    rpal
    Poziom 27  
    Costek napisał:
    mirekk36 napisał:
    Zobacz co pisał kolega powyżej (ja nigdy nie używałem CodeVision) , że on generuje kod dla LCD który korzysta z Pinu R/W czyli trza go podłączyć pod jakiś pin procka - a Bascom w standardowej bibliotece nie obsługuje pinu R/W i wtedy trzeba go do masy.



    Zmieniam pin RW zależnie od kompilatora :-)
    połączenia są ok - dowodem tego jest to, że jeden lcd w końcu zadziałał a inne nie - na tym samym oprzewodowaniu :-)

    Pozdrawiam
    Piotrek

    Może wulgarnie odpowiem ale układ jest prosty (patrz powiedzonko o tym czego nie ma we wsi :D) Jeśli LCD działa bo wymontowany został ze sprawnego urządzenia i nie został uszkodzony przy tej okazji musi działać inaczej jest błąd w połączeniach albo w programie. Kup sobie do testów jakiś fabrycznie nowy. Przynajmniej wykluczysz wadę LCD. To nie kosztuje majątku.
REKLAMA