Witam uprzejmie
W układzie zastosowałem wyświetlacz 192x64 LCD-AG-192064G-BIW W/B-E6 PBF. Pod wpływem zakłóceń (na przykład spowodowanych zapalarką piezoelektryczną) grafika potrafi zniknąć z ekranu wyświetlacza; podświetlenie nadal jest. Wystarczy w programie wywołać funkcję displayOn(), aby grafika ponownie pojawiła się na ekranie (nie trzeba ponownie odrysowywać grafiki). Byłbym wdzięczny, gdyby ktoś na podstawie przedstawionych objawów mógł wyjaśnić, co takiego może dziać się z wyświetlaczem pod wpływem zakłócenia, że znika grafika i ponownie pojawia się po przesłaniu odpowiednich poleceń. W jaki sposób zakłócenie może w tym przypadku oddziaływać na wyświetlacz (przez linie sygnałowe, przez powietrze, przez zasilanie)?
Pozdrawiam Robbo
Postać funkcji displayOn():
#define DISPLAY_TURN_ON_OFF 0x3E #define DISPLAY_SET_Z_ADDRESS 0xC0
void displayOn() { cbi(RS_OUTPUT_PORT, RS_OUTPUT_PIN); cbi(RW_OUTPUT_PORT, RW_OUTPUT_PIN);
cbi(CSA_OUTPUT_PORT, CSA_OUTPUT_PIN); cbi(CSB_OUTPUT_PORT, CSB_OUTPUT_PIN);
writeCommand(DISPLAY_TURN_ON_OFF | 0x01); writeCommand(DISPLAY_SET_Z_ADDRESS | 0x00);
sbi(CSA_OUTPUT_PORT, CSA_OUTPUT_PIN); cbi(CSB_OUTPUT_PORT, CSB_OUTPUT_PIN); writeCommand(DISPLAY_TURN_ON_OFF | 0x01); writeCommand(DISPLAY_SET_Z_ADDRESS | 0x00);
sbi(CSB_OUTPUT_PORT, CSB_OUTPUT_PIN); cbi(CSA_OUTPUT_PORT, CSA_OUTPUT_PIN); writeCommand(DISPLAY_TURN_ON_OFF | 0x01); writeCommand(DISPLAY_SET_Z_ADDRESS | 0x00); }
void writeCommand(uint8_t cmd) { busyWait(); cbi(RS_OUTPUT_PORT, RS_OUTPUT_PIN); cbi(RW_OUTPUT_PORT, RW_OUTPUT_PIN); DATA_OUTPUT_PORT = cmd; sbi(EN_OUTPUT_PORT, EN_OUTPUT_PIN); delay(); cbi(EN_OUTPUT_PORT, EN_OUTPUT_PIN); }