Hej,
W programie podczas pracy musze zmieniać na żądanie definiowalne znaki wyświetlacza. Wszystkie LCD jakie mam nie sprawiają problemów, problem zaczyna się gdy chcę zmienić znaki w wyświetlaczu VFD. Po wysłaniu wszystkich i wysłaniu polecenia CLS wyświetlacz nieraz zmieni znaki, nieraz pokaże kilka krzaków i wróci do poprzednich znaków, a nieraz wykrzaczy się program. Do komunikacji używam linii RW i biblioteki lcd4busy.
Próbowałem dodawać wszelakie opóźnienia, na nowo inicjować, nawet wyłączać i włączać na czas zmiany znaków (komendy 08H i 0FH) i żadnych zmian... z resztą jest o wiele szybszy niż lcd więc to chyba nie kwestia zbyt szybkiego wysyłania. Działa prawidłowo z innymi znakami jeśli wrzuce je na początku programu. Ponadto wyświetlacz ma problem z ustawieniem znaku w komórce zero pamięci ram, ciągle jest "_". Wyświetlacz to noritake CU20029ECPB-W1J. Producent nie udostępnia nawet pełnej noty od niego. Może ktoś walczył z podobnymi wyświetlaczami? Po za regulacją jasności nie posiada żadnych dodatkowych komend.
Fragment kodu
DODANO
Dodałem wszystko co mogłem z dużym zapasem czasowym, wyłaczam co niepotrzebne, teraz w ten sposób przygotowuje wyświetlacz:
Później włączam wszystko co powyłączałem. Jest już stabilniejszy, mogę zmienić znaki kilkukrotnie ale po tych kilku razach to program się wysypuje a nie wyświetlacz - bo wystarczy zresetować procka i rusza. Opóźnienie po włączenie lcd komendą mogę dać nawet 1s i nic to nie zmienia. Już nie mam pojęcia jak mu jeszcze moge życie ułatwić
Całość chodzi na 16MHz ale nie ma to znaczenia skoro i tak korzystam z linii RW, z resztą podczas normalnego wyświetlania nie ma najmniejszego błędu a sam wyświetlacz jest bardzo szybki.
W programie podczas pracy musze zmieniać na żądanie definiowalne znaki wyświetlacza. Wszystkie LCD jakie mam nie sprawiają problemów, problem zaczyna się gdy chcę zmienić znaki w wyświetlaczu VFD. Po wysłaniu wszystkich i wysłaniu polecenia CLS wyświetlacz nieraz zmieni znaki, nieraz pokaże kilka krzaków i wróci do poprzednich znaków, a nieraz wykrzaczy się program. Do komunikacji używam linii RW i biblioteki lcd4busy.
Próbowałem dodawać wszelakie opóźnienia, na nowo inicjować, nawet wyłączać i włączać na czas zmiany znaków (komendy 08H i 0FH) i żadnych zmian... z resztą jest o wiele szybszy niż lcd więc to chyba nie kwestia zbyt szybkiego wysyłania. Działa prawidłowo z innymi znakami jeśli wrzuce je na początku programu. Ponadto wyświetlacz ma problem z ustawieniem znaku w komórce zero pamięci ram, ciągle jest "_". Wyświetlacz to noritake CU20029ECPB-W1J. Producent nie udostępnia nawet pełnej noty od niego. Może ktoś walczył z podobnymi wyświetlaczami? Po za regulacją jasności nie posiada żadnych dodatkowych komend.
Fragment kodu
If Tryb = 0 Then
Incr Efekt
If Efekt = 5 Then Efekt = 0
Gosub Lcdchr
'Efekt_eepr = Efekt
Waitms 10
End If
[...]
Lcdchr:
Select Case Efekt
Case 0:
Deflcdchar 0 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 31
Deflcdchar 1 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31
Deflcdchar 2 , 32 , 32 , 32 , 32 , 32 , 31 , 31 , 31
Deflcdchar 3 , 32 , 32 , 32 , 32 , 31 , 31 , 31 , 31
Deflcdchar 4 , 32 , 32 , 32 , 31 , 31 , 31 , 31 , 31
Deflcdchar 5 , 32 , 32 , 31 , 31 , 31 , 31 , 31 , 31
Deflcdchar 6 , 32 , 31 , 31 , 31 , 31 , 31 , 31 , 31
Deflcdchar 7 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31
Case 1 :
Deflcdchar 0 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 27
Deflcdchar 1 , 32 , 32 , 32 , 32 , 32 , 32 , 27 , 27
Deflcdchar 2 , 32 , 32 , 32 , 32 , 32 , 27 , 27 , 27
Deflcdchar 3 , 32 , 32 , 32 , 32 , 27 , 27 , 27 , 27
Deflcdchar 4 , 32 , 32 , 32 , 27 , 27 , 27 , 27 , 27
Deflcdchar 5 , 32 , 32 , 27 , 27 , 27 , 27 , 27 , 27
Deflcdchar 6 , 32 , 27 , 27 , 27 , 27 , 27 , 27 , 27
Deflcdchar 7 , 27 , 27 , 27 , 27 , 27 , 27 , 27 , 27
[...itd...]
End Select
Return
DODANO
Dodałem wszystko co mogłem z dużym zapasem czasowym, wyłaczam co niepotrzebne, teraz w ten sposób przygotowuje wyświetlacz:
Lcdchr:
Stop Watchdog
Stop Timer1
Disable Interrupts
Gosub D_off
Waitms 100
Gosub D_on
Waitms 100
Initlcd
Waitms 10
Initlcd
Cls
Cursor Off
Waitms 10
Select Case Efekt
[...]
End Select
Waitms 100
Initlcd
Waitms 100
Initlcd
Cursor Off
Waitms 100
Start Watchdog
Start Timer1
Enable Interrupts
Return
Później włączam wszystko co powyłączałem. Jest już stabilniejszy, mogę zmienić znaki kilkukrotnie ale po tych kilku razach to program się wysypuje a nie wyświetlacz - bo wystarczy zresetować procka i rusza. Opóźnienie po włączenie lcd komendą mogę dać nawet 1s i nic to nie zmienia. Już nie mam pojęcia jak mu jeszcze moge życie ułatwić
