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

BASCOM Atmega8 i LCD DM157A problem z wystartowaniem

marslod 05 Lip 2006 16:44 3127 14
REKLAMA
  • #1 2793538
    marslod
    Poziom 15  
    Posty: 203
    Ocena: 1
    Witajcie

    Mam problem z prawidłowym wystartowaniem tego LCD, ale po kolei:
    Piszę program na Atmega8 i mam podpięty pod niego wyświetlacz 3x24 DM157A (zgodny z HD44780), problem polega na tym, że gdy włączam zasilanie to bardzo często LCD dziwnie startuje, czasami po włączeniu nic nie wyswietla i nie działa, czasami pokazuje krzaczki lub kawałki dobrego tekstu.

    Ale gdy wyłaczę i włącze zasilanie już jest ok, czasami muszę kilka razy właczyć i wyłączyć zasilanie i LCD wystartuje normalnie, najwiekszy problem to gdy włączam po dłuższym czasie.

    Czytałem o tych DM157A już tu na forum, że są one trochę wolne i warto im dać przed kaźdą instrukcją pare ms opóznienia, ale właściwie u mnie jak już wystartuje to działa normalnie tylko ten problem przy uruchamianiu.

    Dodam, że mam 2 takie LCD i zachowują się tak samo i juz teraz nie wiem, czy chodzi tu o to że domyslne prędkości inicjalizacji z BASCOMA są za szybkie, ale jak je opóznić jak nie mam do nich dostępu, próbowałem dawać waitms przed inicjalizacją LCD ale to i tak nic nie dało :( już nie wiem co jest grane, przecież zasilanie narasta szybko więc już nie wiem co i jak.

    dzieki za pomoc
    Marcin
  • REKLAMA
  • #2 2795256
    xbaj
    Poziom 20  
    Posty: 415
    Pomógł: 17
    Ocena: 16
    Na początku programu zapodaj reset LCD'ka (stan aktywny na wejsciu reset niech trwa min. 20ms).
  • REKLAMA
  • #3 2795550
    marslod
    Poziom 15  
    Posty: 203
    Ocena: 1
    a jak to zadać w BASCOM ? Do procedury inicjalizacji LCD w bascom tak jakby nie mamy dostępu. Czy mam wyprowadzenie reset trzymać programowo do masy ?
  • REKLAMA
  • #4 2795761
    Kuba_eM
    Poziom 24  
    Posty: 655
    Pomógł: 36
    Ocena: 77
    A czy przypadkiem nie pojawia się tu problem ze startem procka? Czasem właśnie tak się układy zachowują...
  • #5 2795780
    marslod
    Poziom 15  
    Posty: 203
    Ocena: 1
    w tym przypadku to niestety nie wina procka, ten startuje normalnie i wykonuje wszystkie operacje prawidłowo pomimo niedziałajacego w tym czasie LCD. Na zwykłym LCD 2*16 zawsze startuje dobrze, tylko z tym DM157 coś sie jaja robią :(
  • #6 2796025
    morph13
    Poziom 25  
    Posty: 987
    Pomógł: 25
    Ocena: 32
    Witaj
    Poczytaj moje posty (dokładnie) na temat tego LCD-ka (szukaj na elce oczywiście), a sprawa powinna się szybko wyjaśnić.
    Tereaz nie będę nic pisał bo nie chcę sie powtarzać bez końca w danym temacie a te LCD-ki sa jak najbardziej do opanowania.......

    Dodam tylko..... pewny init wyświetlacza to w wypadku tego LCD-ka sprawa podstawowa, reszta to tylko "kosmetyka czasowa".

    Co do procka, sprawdz dokładnie czy np. opóznie 1ms to 1ms a nie przez przypadek 1us bo jest "babol" w procedurze, a potem wszystko "dalej się krzaczy" co związane z LCD.
  • REKLAMA
  • #7 2798068
    marslod
    Poziom 15  
    Posty: 203
    Ocena: 1
    dzięki morph13 za zainteresowanie moim problemem, przejżałem wszystkie twoje posty odnośnie DM157 i niestety nie znajduję odpowiedzi na moje pytanie. Oczywiście wiem, że ten lcd ma wydłużone czasy wykonywania instrukcji i to w moim programie już wczesniej uwzględniłem (jak działa to działa, ale jak nie wystartuje to nie działa), ale niestety problemem jest dla mnie inicjalizacja w BASCOM z opóźnieniem. Wiem, że powinienem dac mu czas przed inicjalizacją, ale jak to w BASCOMia załatwić. Oczywiście próby wstawienia opóznienia przed config lcd nic nie dają, tak jakby program i tak wiedział że ma po swojemu zainicjalizować lcd wg wczesniej zdefiniowanych reguł i na moje waitms nie zwraca uwagi,,, jak tu spowolnić inicjalizację ???? mnemonikiem asemblerowym czy jak ?

    Marcin
  • Pomocny post
    #8 2798835
    morph13
    Poziom 25  
    Posty: 987
    Pomógł: 25
    Ocena: 32
    W kwestii BASCOM-a to Ci nie pomogę bo piszę tylko w asm i czasmi w C dla procków AVR, 51, DSP z TI.
    Jednak nie trzymaj się kurczowo zasady, że init LCD ma być jedną z pierwszych procedur po restarcie procka. Nawet lepiej by było gdybyś na poczatku zainicjował inne urządzenia a LCD na końcu. Ten typ ma jeszcze długi "czas podnoszenia się" po podaniu zasilania i wydłużone czasy w init.

    Procedurę init zbuduj w taki oto sposób:
    3 razy (może być w pętli) powtarzasz init dla magistrali 8 (ośmio) bitowej.
    pauza, trzeba poeksperymentować od 100 - 300ms (mili sekund)
    2 razy (petla) powtarzasz init dla magistrali 4 (cztero) bitowej.

    Po tych kombinacjach LCD powinien sie podnieć, ale to nie koniec.
    Musisz go teraz komendami właczyć, ustawić parametry kursora, autoinkrementacji wskaźnika pozycji i tp. A następnie wywołać funkcję kasowania LCD-ka i ona też ma wydłużony czas realizacji (opóźnienie na końcu procedury).

    Imuls na pinie E też nie może być bardzo wąski, ja osobiście załatwiłem jego długość kilkoma "nop"-ami i działa.
    Kolejna uwaga.
    Przy ładowaniu 4 (cztero) bitowym kolejnych kawałków danej, miedzy kolejnymi półbajtami też powinien nastąpić "delikatny wait". Nie od razu 10ms, wystarczy też kilka nop-ów (piszę o języku asm).

    Ewentualne usterki to też mikropęknięcia taśmy do której pewnie masz przylutowane przewody. Ja w LCD 1x24 od razu ją wylutowałem i przylutowałem odpowiedni odcinek "taśmy komputerowaej" a z 3x24 jest już wiekszy problem ale jest i na to metoda. Nie będę jej opisywał bo to jest trochę "babraniny" i dziubania lutownicą z cienkim grotem.

    Problem rozwiązało by zakupienie odpowiedniego gniazda do teśmy, jednak szukałem u dystrybutoró i "dramat" albo nie ma lub jednorazowo mogą sprzedać ponad 1000 sztuk a i to nie byłem pewny czy rozstaw jaki tam był by idealnie pasował do taśmy.

    Tyle moich rad i uwag.
    Powodzenia
  • #9 2799826
    matgaw
    Poziom 15  
    Posty: 198
    Pomógł: 4
    Ocena: 3
    Co do tasiemek to w www.maritex.com.pl w dziale Złącza -> Ziff i Non-Ziff można kupić odpowiednie złącza do tych tasiemek. Tyle tylko że minimalna wartość zamówienia to 30 zł netto więc musiałbyś jeszcze trochę nakupić innych rzeczy ;)
  • #10 2804081
    morph13
    Poziom 25  
    Posty: 987
    Pomógł: 25
    Ocena: 32
    W takim razie coś ostatnio zmienili podejście, ja jak u nich zasięgałem info to min. zamówienie takich złacz to 1000 sztuk i do tego nie mieli ich jeszcze na magazynie.
    Może trzeba będzie zakupic kilka do testów bo LCD-ków 1x24 i 3x24 mam dość sporo :-).
  • Pomocny post
    #11 2807170
    knmp
    Poziom 26  
    Posty: 751
    Pomógł: 85
    Ocena: 31
    marslod z tymi LCD DM157 niema problemu w inicjalizacji BASCOM, mam kilka i tych 3 x 24 i 1 x 24 i wszystkie działają.

    Daj na początek coś takiego i będzie inicjalizował poprawnie...

    Waitms 300

    Config Lcd = 20 * 2

    Waitms 800

    Config Lcd = 16 * 2

    Config Lcdpin = Pin , Db4 = Portd.3 , ....


    Tym 16*2 nie musisz się przejmować, BASCOM prawidłowo adresuje wszystkie komórki znaków dla lcd 3 * 24 pomimo takich deklaracji :)

    Aporpo gniazdek to kiedyś szukałem po sklepach i niestety na taki raster rozstawień pinów nie trafiłem... przylutowałem taśmy od HDD do tych polimerowych z LCD i jest OK

    pozdr KN
  • #12 2809170
    marslod
    Poziom 15  
    Posty: 203
    Ocena: 1
    Dziękuję Panowie za porady, dałem dodatkowo powtórzenie wraz z opóźnieniami i już jest dużo lepiej.

    Dzieki
    Marcin
  • #13 2916040
    marslod
    Poziom 15  
    Posty: 203
    Ocena: 1
    Przepraszam że odgrzewam ponownie ten wątek, ale mam znów problem z tym LCD. Do tej pory wszystko było ok i po dodaniu tych powtórzeń i opóźnień działało fajnie, tylko że ostatnio zmieniałem ułożenie LCD w obudowie i znów mam z nim problemy. Ten LCD jest jakiś strasznie delikatny, dotykanie jego obudowy powoduje problemy, nie startuje dobrze krzaki i błędy. Już myślałem że uszkodziłem taśmę ale zlutowałem drugi taki LCD i podłączyłem do płytki i jest znów problem, czasami coś dobrze wyświetli ale zaraz sie pogubi i znów kaszana. Strasznie coś jest podatny na ułożenie przewodu dotykanie taśmy.

    Tak już myślę że tu nie jest problem z hardwere tylko softem, bo coś mi się wydaje że jednak inicjalizacja w BASCOM jest za szybka albo coś.

    Mam wielką prośbę o procedurę inicjalizacyjną w assemblerze, dał bym ją jako wstawkę do BASCOM i może by wreszcie działało normalnie.

    Dzięki
    Marcin
  • #14 2940426
    mcoola
    Poziom 19  
    Posty: 436
    Pomógł: 22
    Ocena: 9
    A może procek jest za szybko taktowany? Wtedy powstają "krzaczki"
  • #15 2941656
    marslod
    Poziom 15  
    Posty: 203
    Ocena: 1
    taktowany jest tak jak powinien, 8MHz i w programie też tak mam. Wszystkie inne LCD na HD44780 działają dobrze tylko te DM 157 świrują. No można by zwalić na to że jeden jest gupi ale aż 3 ??? Już jest nawet tak, że jak uruchamiam po raz pierwszy to startuje albo nie i czasami podziała chwilkę i zaraz wszystko lata. Jak parę minut tak pochodzi to za chwilę jak wyłączę i włączę to jest ok i działa. A najciekawsze jest to, że jak włączę LCD i zasilacz do gniazdka w ubikacji to zawsze startuje dobrze no może na 99% uruchomień i jest dobrze, ale jak włącze w dowolnym pokoju to jest kaszana. Już nie wiem czy to jakieś zakłócenia działają na niego czy coś, tewn LCD jest taki wrażliwy aż strach i tam myślę że działa na granicy szybkości i coś go wzbudza może i chyba trzeba by go wolniej napędzać

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczy niestabilnego startu wyświetlacza LCD DM157A (zgodnego z HD44780) podłączonego do mikrokontrolera Atmega8 programowanego w BASCOM. Po włączeniu zasilania LCD często nie wyświetla poprawnie, pokazuje krzaczki lub fragmenty tekstu, a poprawna praca następuje dopiero po kilkukrotnym wyłączeniu i włączeniu zasilania. Problem nasila się przy dłuższym wyłączeniu urządzenia. Dyskusja wskazuje, że standardowa inicjalizacja LCD w BASCOM jest zbyt szybka dla tego modelu, który wymaga wydłużonych czasów opóźnień między instrukcjami. Zalecane jest wprowadzenie dłuższych pauz przed i podczas inicjalizacji, powtarzanie sekwencji inicjalizacyjnej (np. 3-krotne inicjowanie magistrali 8-bitowej z opóźnieniami 100-300 ms, następnie 2-krotne inicjowanie magistrali 4-bitowej) oraz wydłużenie impulsu na pinie E. Propozycje obejmują także opóźnienie startu LCD na początku programu (np. waitms 300) przed wywołaniem konfiguracji LCD w BASCOM. Problem może być również związany z wrażliwością taśmy połączeniowej i zakłóceniami elektromagnetycznymi, co powoduje błędy wyświetlania przy dotykaniu obudowy lub zmianie ułożenia przewodów. Niektóre sugestie dotyczą implementacji procedury inicjalizacyjnej w asemblerze jako wstawki do BASCOM, aby lepiej kontrolować czas i sekwencję inicjalizacji. Taktowanie procesora (8 MHz) jest prawidłowe i nie jest przyczyną problemu. Wskazano również na konieczność dokładnego sprawdzenia rzeczywistych czasów opóźnień w programie, aby uniknąć błędów w jednostkach czasu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA