-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.n
eostrada.pl!news.neostrada.pl.POSTED!not-for-mail
From: "Robbo" <n...@g...com>
Newsgroups: pl.misc.elektronika
Subject: Grafika znika z ekranu wyświetlacza LCD pod wpływem zakłóceń
Date: Mon, 21 Nov 2011 12:20:30 +0100
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
X-RFC2646: Format=Flowed; Original
X-Antivirus: avast! (VPS 111121-0, 2011-11-21), Outbound message
X-Antivirus-Status: Clean
Lines: 69
Message-ID: <4eca33fb$0$2198$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.24.137.92
X-Trace: 1321874427 unt-rea-a-01.news.neostrada.pl 2198 83.24.137.92:3542
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.misc.elektronika:620675
[ ukryj nagłówki ]Witam uprzejmie,
Używam wyświetlacza graficznego LCD 192x64 typu LCD-AG-192064G-BIW W/B-E6
PBF. Wyświetlacz sterowany jest przez mikrokontroler ATmega128. Pojawił się
problem polegający na tym, że pod wpływem zakłóceń (jonizator skonstruowany
specjalnie w celu sprawdzania naszych urządzeń; włączanie wyłącznika
głównego prostownika impulsowego 600A, w którym siedzi wyświetlacz; moment
rozpoczęcia generowania impulsów przez prostownik) wykreślona na
wyświetlaczu grafika znika. Na ogół znika cała grafika, a czasami tylko z
któregoś z trzech "segmentów" -- obszar wyświetlacza podzielony jest na trzy
logiczne segmenty, między którymi należy się przełączać, aby móc wykreślać
grafikę w danym obszarze wyświetlacza. W znacznym stopniu pomogły
kondensatory przed transformatorem na zasilaniu 230V (150nF/275VAC między L
a PE oraz 150nF między N a PE oraz 100nF między N a L; PE jest połączony z
obudową) oraz kondensator 1nF między metalową obudową urządzenia, a masą
elektroniki. Niemniej zabiegi te nie wyeliminowały problemu w 100% -- raz na
jakiś czas problem się zdarza.
Wysłanie komendy do wyświetlacza poprzedzone jest sprawdzeniem (odczytem
stanu wyświetlacza), czy wyświetlacz nie jest zajęty. Wystąpienie zakłócenia
powoduje najprawdopodobniej, że przez moment wyświetlacz nie odpowiada i
program główny dłużej oczekuje w pętli oczekującej na odpowiedź kontrolera
wyświetlacza, informującej o tym, że ten gotowy jest do przyjęcia komendy.
Tu nie mam pewności, gdyż nie ja badałem oscyloskopem ten efekt, a jedynie
słyszałem od kolegi.
Żeby przywrócić działanie wyświetlacza, wystarczy użyć procedury
inicjalizacyjnej wklejonej poniżej (nie trzeba od nowa odrysowywać grafiki
na wyświetlaczu). W efekcie w programie głównym wywołuję tę funkcję kilka
razy na sekundę, tak na wszelki wypadek.
Ciekawi mnie, dlaczego zakłócenie działa właśnie w ten sposób, że nie
zakłóca wykreślania grafiki (że na ekranie zaczyna się robić "kaszanka"),
ale po prostu wyłącza obraz? Niemniej ten obraz (poprawny) jest nadal w
pamięci wyświetlacza i wystarczy przeprowadzić inicjalizację wyświetlacza,
aby grafika znów pojawiła się na ekranie.
Ponadto, może opisany przeze mnie sposób reakcji wyświetlacza na zakłócenie
pozwoli komuś z Was określić, jak zakłócenie "przenika" do kontrolera
wyświetlacza i jak je wyeliminować. Będę wdzięczny za rady.
Pozdrawiam,
Robbo
cbi(KS0108_CONTROL_PORT, KS0108_CONTROL_RS);
cbi(KS0108_CONTROL_PORT, KS0108_CONTROL_RW);
/* left part of the display */
cbi(KS0108_CONTROL_PORT, KS0108_CONTROL_CSA);
cbi(KS0108_CONTROL_PORT, KS0108_CONTROL_CSB);
KS0108_writeCommand(0x3E /* display turn off */ | 0x01);
KS0108_writeCommand(0xC0 /* set z address */ | 0x00);
/* right part of the display */
sbi(KS0108_CONTROL_PORT, KS0108_CONTROL_CSA);
cbi(KS0108_CONTROL_PORT, KS0108_CONTROL_CSB);
KS0108_writeCommand(0x3E /* display turn off */ | 0x01);
KS0108_writeCommand(0xC0 /* set z address */ | 0x00);
/* middle part of the display */
sbi(KS0108_CONTROL_PORT, KS0108_CONTROL_CSB);
cbi(KS0108_CONTROL_PORT, KS0108_CONTROL_CSA);
KS0108_writeCommand(0x3E /* display turn off */ | 0x01);
KS0108_writeCommand(0xC0 /* set z address */ | 0x00);
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
- jak szybko plynie prad
- Płytki Milkv-Duo
- Światłowód między budynkami
- POtrzebny bufor 3.3<>5V, jedonkieruowy, trójstanowy, wąski
- retro
- Bezprzewodowe polączenie Windows z projektorem
- rozklejanie obudowy
- Prośba o identyfikację komponentu
- Smart gniazdko straciło na zasięgu wifi?
- Smart gniazdko straciło zasięg wifi?
- nurtuje mnie
- dziwna sprawa...
Najnowsze wątki
- 2024-11-11 Wyważanie kół rowerowych
- 2024-11-11 Kosz, gdzie??
- 2024-11-11 Coraz mniej ludzi robi prawo jazdy
- 2024-11-11 Opole => SAP HANA Cloud Dev / Data Engineer <=
- 2024-11-11 Warszawa => Spedytor Międzynarodowy <=
- 2024-11-11 Lublin => Senior PHP Developer <=
- 2024-11-11 Marki => Senior PHP Symfony Developer <=
- 2024-11-11 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-11-11 Gliwice => Specjalista ds. public relations <=
- 2024-11-11 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-11 Gdańsk => Head of International Freight Forwarding Department <=
- 2024-11-11 Warszawa => Sales Development Representative (in German) <=
- 2024-11-11 Marsz niepodległości
- 2024-11-08 Belka
- 2024-11-09 pierdolec na punkcie psa