Jak zapobiec problemom z LCD po krótkotrwałym wtapnięciu zasilania w uC?
Tapniecie zasilania, a uklady uC + LCD
From: "Jacek Domański" <jadoone_at_nospam_polbox.com>
Subject: Tapniecie zasilania, a uklady uC + LCD
Date: Sun, 05 May 2002 21:23:26 GMT
Witam!
Zbudowalem sobie ukladzik, ktory w zasadzie jest odporny na zanik napiecia
zasilania (podtrzymanie RTC, dane w EEpromie i RAM'ie od RTC) z jednym
wyjatkiem.
W momencie krotkotrwalego tapniecia napiecia zasilania - na np 1-2sek dzieje
sie rzecz nastepujaca:
Procesor sie resetuje, ale wyswietlacz LCD nie. A poniewaz wczesniej byl
ustawiony w tryb 4-bitowy, a procesor po resecie od nowa wymusza na nim
ustawianie trybu 4-bitowego, wyswietlacz glupieje i pojawiaja sie na nim
tylko dziwne "robaczki".
Czy jest na to jakies lekarstwo? Np. mozliwosc stwierdzenia przez
procesor w jakim trybie pracuje wyswietlacz i nie inicjalizowanie go po raz
drugi po "tapnieciu".
Ew. wykrycie i gdzies zapisanie ze nastapilo tylko tapniecie, a nie dluzsza
przerwa w dostawie pradu. (ustaienie jakiegos bitu - chocby w RTC RAM)
Ma ktos jakies pomysly? :-) - bo czasami takie tapniecia sieci sie zdarzaja.
Pozdrawiam
Jado.
From: "Tomasz Bednarz" <tb_at_nospam_internet.pl>
Subject: Re: Tapniecie zasilania, a uklady uC + LCD
Date: Sun, 5 May 2002 23:32:46 +0200
[...]
Procesor sie resetuje, ale wyswietlacz LCD nie.
[...]
A co znaczy ze LCD sie nie resetuje ?
Jakie LCD ?
Moze zresetuj LCD z procka przy starcie procka !
TB
From: Marek Lewandowski <nospam_at_nospam_poczta.onet.pl>
Subject: Re: Tapniecie zasilania, a uklady uC + LCD
Date: Sun, 05 May 2002 21:41:11 GMT
Jacek Domański wygenerował manualnie w wiadomo¶ci
<iphB8.119650$vc2.1421206_at_nospam_news.chello.at> udostępnionej publicznie
dnia Sun, 05 May 2002 21:23:26 GMT co następuje:
Witam!
Zbudowalem sobie ukladzik, ktory w zasadzie jest odporny na zanik napiecia
zasilania (podtrzymanie RTC, dane w EEpromie i RAM'ie od RTC) z jednym
wyjatkiem.
W momencie krotkotrwalego tapniecia napiecia zasilania - na np 1-2sek dzieje
sie rzecz nastepujaca:
Procesor sie resetuje, ale wyswietlacz LCD nie.
Dokładnie, to masz problem wtedy, gdy proc zdąży zapisać do LCD POŁOWĘ
bajtu. Wtedy Twoja konfiguracja idzie w piach.
SOLUTION:
po resecie robisz tak:
przestawiasz LCD w zapis do Data-RAM, zapisujesz bajt ¶mieci.
Przestawiasz bit S/R i zapisujesz komendy inicjalizacji...
pierwsza operacja powoduje, że je¶li LCD czekał na drugą połówkę
komendy, to o tym zapomni ;-)
drugie przestawienie załatwia sprawę, że LCD czeka na "¶wieżą"
komendę.
Zapisujesz wtedy dwie połówki bajtu konfiguracyjnego i voila...
Aha! Nie zapomnij zaczekać chwili (rzędu 5ms) po "wstaniu" z resetu,
bo LCD może nie nadążać! Je¶li nawet Twój nadąża, nie znaczy to, zę
jak wymienisz na inny, też będzie (przykre do¶wiadczenia własne).
--
Marek Lewandowski ICQ# 10139051
DOUSUNIECIAlocustDOUSUNIECIA_at_nospam_poczta.onet.pl
http://locust.republika.pl
UWAGA! w emailu wycinać DOUSUNIECIA z adresu!
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: Tapniecie zasilania, a uklady uC + LCD
Date: Sun, 5 May 2002 23:53:11 +0200
Użytkownik "Jacek Domański" <jadoone_at_nospam_polbox.com> napisał w wiadomo¶ci
news:iphB8.119650$vc2.1421206_at_nospam_news.chello.at...
Ew. wykrycie i gdzies zapisanie ze nastapilo tylko tapniecie, a nie
dluzsza
przerwa w dostawie pradu. (ustaienie jakiegos bitu - chocby w RTC RAM)
IMHO nie jeste¶ w stanie w stanie stwierdzić czy przerwa 1137ms to tylko
tąpnięcie, czy też już wystarczyło zaniku do wyzerowania LCD. ;-)
Ale zajrzałem do "LCD Module FAQ" i przepisałem proces inicjalizacji dla
trybu 4-bitowego:
Kolejne zapisy do modułu:
0011xxxx - wymusza tryb 8-bitowy
0011xxxx
0011xxxx
0010xxxx - ustawia tryb 4-bitowy
0010 - odtąd już po 4 bity
1Fxx
x = don't care
Pierwsze trzy rozkazy wymuszają tryb 8-bitowy i przywracają kontrolę nad
modułem. Czwarty rozkaz wydany w trybie 8-bitowym przestawia moduł w tryb
4-bitowy. Następne podawane podawane już 4-bitowo konfigurują moduł. W ten
sposób podnosząc procesor po resecie możesz w ciemno zainicjować moduł nie
wiedząc w jakim trybie znajduje się na starcie.
MDz
From: "Jacek Domański" <jadoone_at_nospam_polbox.com>
Subject: Re: Tapniecie zasilania, a uklady uC + LCD
Date: Sun, 05 May 2002 22:10:40 GMT
Użytkownik "Marek Dzwonnik" <mdz_at_nospam_message.pl> napisał w wiadomo¶ci
news:3cd5a92c_at_nospam_news.home.net.pl...
Użytkownik "Jacek Domański" <jadoone_at_nospam_polbox.com> napisał w wiadomo¶ci
news:iphB8.119650$vc2.1421206_at_nospam_news.chello.at...
Ew. wykrycie i gdzies zapisanie ze nastapilo tylko tapniecie, a nie
dluzsza
przerwa w dostawie pradu. (ustaienie jakiegos bitu - chocby w RTC RAM)
IMHO nie jeste¶ w stanie w stanie stwierdzić czy przerwa 1137ms to tylko
tąpnięcie, czy też już wystarczyło zaniku do wyzerowania LCD. ;-)
Ale zajrzałem do "LCD Module FAQ" i przepisałem proces inicjalizacji dla
trybu 4-bitowego:
Kolejne zapisy do modułu:
0011xxxx - wymusza tryb 8-bitowy
0011xxxx
0011xxxx
0010xxxx - ustawia tryb 4-bitowy
0010 - odtąd już po 4 bity
1Fxx
x = don't care
Pierwsze trzy rozkazy wymuszają tryb 8-bitowy i przywracają kontrolę nad
modułem. Czwarty rozkaz wydany w trybie 8-bitowym przestawia moduł w tryb
4-bitowy. Następne podawane podawane już 4-bitowo konfigurują moduł. W ten
sposób podnosząc procesor po resecie możesz w ciemno zainicjować moduł nie
wiedząc w jakim trybie znajduje się na starcie.
MDz
Hej! Dzieki! :-))
Faktycznie - to powinno zalatwic sprawe - o ile mam nadzieje LCD nie
glupieje w jakis inny sposob, nie idzie w krzaki i nie przestaje reagowac na
komendy. Wtedy bede musial odcinac zasilanie dla LCD przez procka na 1-3s,
zeby sie "uspokoil" ;-))
Ale przetestuje i sie przekonam :-))
Pozdrawiam
Jado.