Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 26 cze 2019, o 00:53


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 16 kwi 2019, o 10:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 645
Pomógł: 37

Mam nadzieję że nie dostanie mi się za rozpoczynanie drugiego podobnego wątku ;) temat dotyczy tego posta https://forum.atnel.pl/topic22170.html a ponieważ tam jeden kolega zastanawiał się czy faktycznie ma znaczenie jaki wyświetlacz zastosujemy postanowiłem dla niego i dla siebie przetestować różnie (niestety tylko dwie) opcje. Przygotowałem programik który dokonuje pomiaru czasu zapisu do wyświetlacza. Byłem ciekaw czy wyświetlacze negatywowe potrzebują więcej czasu na obsługę, czy też cienie są winą samej budowy matrycy takiego LCD. Programik załadowany... test i okazało się że wręcz jest na odwrót :!: Lcd standardowy(mam na myśli wszystkie nie negatywowe) Potrzebują nieco więcej czasu na zapis niż ten drugi. Ale co ja będę gadał sami zobaczycie i sprawdzicie. Najpierw programik testowy: Proszę nie zwracać uwagi na te kilka delayów - nie mają one wpływu na działanie pomiaru, tak samo przewijanie mogło być ładniej zrobione ale w tej chwili uważam że nie jest to konieczne. Myślę że kod jest na tyle dobrze opisany że nie powinno być problemów ze zrozumieniem działania.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.





Wnioski: Pomimo że lcd standartowy potrzebuje ciut więcej czasu na zapis to jest dużo lepszy dla wyświetlania tekstu przewijanego, poza tym nie wymaga podświetlenia.

negatyw ~3.409ms
standart ~3.801ms

------------------------ [ Dodano po: 6 minutach ]

Ah i ważna sprawa mikrokontroler jest napędzany kwarcem 20Mhz aby mieć jak najwyższą rozdzielczość pomiaru dla innych f_cpu trzeba użyć innych wartości mnożników tutaj:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 17 kwi 2019, o 19:05 przez zubik, łącznie edytowano 3 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 kwi 2019, o 11:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24464
Lokalizacja: Szczecin
Pomógł: 919

I BARDZO dobry test - widać, że jest tak jak mówiłem odnośnie zwyklaków żółto-zielonych ;) Niebieskie się wprawdzie wszystkim podobają bo kolorek - ale przewijanie czegokolwiek to masakra ;) ... i pięknie widać to na tym teście

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 kwi 2019, o 11:17 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3302
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 86

A myślałem że to tylko różnica w filtrach polaryzacyjnych :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 kwi 2019, o 11:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 645
Pomógł: 37

Ale ciekawe czemu zwykły lcd ma dłużysz czas odświerzania napisu? Kurczę muszę sprawdzić jeszcze na jednym lcd gdzie HD44780 jest normalnie wlutowany w obudowie TQFP czyli pewnie oryginał z początku lat 90.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 kwi 2019, o 11:38 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24464
Lokalizacja: Szczecin
Pomógł: 919

Technologia wytwarzania tych wyświetlaczy żółtozielonych zapewnia lepsze odświeżanie po prostu. Poza tym na zwyklaku widać dane bez podświetlenia a na tych negatywowych ? ;) porażka bo nie widać ;) Ale za to jakie ładne bo na niebiesko świecą ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 kwi 2019, o 16:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1604
Lokalizacja: Lipsko
Pomógł: 115

Ciekawa dyskusja się rozwija :)

zubik napisał(a):
negatyw ~39.367ms
standart ~45.879ms


...to jest właściwie gwoździem do trumny przy bardziej zaawansowanych programach. Taki czas opóźnienia pętli głównej czasem kompletnie rozwala algorytm, który potrzebuje np. co 5ms coś czytać. Niech tylko kilka razy będzie odwołanie do LCD z większą ilością znaków i uzyskanie czasu 45ms to będzie marzeniem w porównaniu np. z 200ms, które to się może uzbierać po drodze. Oczywiście można wspomóc się przerwaniami, ale gdy te już są wyśrubowane to zaczynają się schody. Programy powinny być pisane nieblokująco czyli z ciągłym przelotem przez pętlę główną. Przy takim programie właściwie trzeba zapomnieć o jakimkolwiek delay, a zamiast tego stosować timery programowe. Jak więc przyspieszyć pętlę aby mieć również bezproblemowy podgląd na LCD przy minimalnym opóźnieniu pętli...? :) Odpowiedź jest prosta - ekran buforowany z odświeżaniem cyklicznym. Może brzmi to złowrogo i zawile, ale jest bardzo proste, a dłuższego już czasu każdy mój program ma tylko właśnie taką obsługę LCD.
O co więc chodzi...? Ekran buforowany czyli nie operujemy bezpośrednio na LCD tylko na buforze stworzonym w pamięci RAM (Mirkowym GB jest o czymś bardzo podobnym) i to na tej pamięci dokonuje się wszelkich zmian, a przy końcu pętli głównej wszystkie te zmiany wysyłamy na LCD. No dobra, ale to nadal kupa czasu 16 linii x 2 to dalej wychodzi około 40ms (operacji na RAM nawet nie ma co tu brać pod uwagę, bo wykonują się błyskawicznie). Co więc zrobić...? Posiekać, podrobić i wysyłać po kawałku :) Wystarczy wysyłać nie wszystko na raz, a po jednym znaku do LCD i czas opóźnienia drastycznie spadnie. Przykładowo u mnie pętla pędzi sobie z ciągłym wyświetlaniem na LCD zatrzymując się tylko przy odświeżaniu na jakieś 100us... 8-) Jak widać to trochę mniej niż 40ms
Najciekawsze jest to, że nie muszę NIGDY używać do kasowania ekranu pojedynczych znaków ani systemowych komend CLS, HOME, itd, które są strasznie czasochłonne. Jeśli chcę coś skasować to po prostu tego nie drukuję i w kolejnym obiegu zniknie z ekranu (zrobiłem opcję autoczyszczenia bufora). Jeśli więc zależy wam na szybkości pętli z wyświetlaniem na LCD to polecam zainteresować się tą metodą i nie psioczyć, że LCD muli :)

------------------------ [ Dodano po: 25 minutach ]

Tak mnie jeszcze naszło... czy na pewno @zubik podałeś dobry rząd wielkości, czy przecinek nie powinien być o 1 w lewo??? Jakoś tak dużo za duży mi się wydaje ten Twój wynik.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 kwi 2019, o 16:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 645
Pomógł: 37

Odpowiedź motywuje mnie do przeprowadzenia jeszcze kilku pomiarów ale o tym będzie jak znajdę chwilę. Co do wyników łatwo to sprawdzić gdyż wliczone to jest tak: 1/fcpu * ilość taktów zegara. Czyli 0.00000005*917588=0.0458794s błąd w pomiarach może być ze względu na to że nie uwzględniają obsługi przerwania znaczy wejścia i wyjścia oraz nie jestem pewien czy liczbę przerwań należy mnożyć przez 65536 czy 65535



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 kwi 2019, o 17:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1604
Lokalizacja: Lipsko
Pomógł: 115

Coś jednak musiałeś zawalić. Aż specjalnie wstawiłem pułapkę przy odświeżaniu LCD w projekcie, nad którym aktualnie ślęczę żeby zmierzyć czas poświęcony na drukowanie i oto efekty wizualizacji:

Obrazek

Obrazek

Na pierwszym wykresie to właśnie moje standardowe cykliczne odświeżanie w projektach czyli jeden obieg pętli = jeden znak na LCD. Jak widać jest to 70us(!) +- 2us
Na drugim wykresie przełączyłem "odświeżacz" aby cały bufor (czyli 32 znaki) od razu wywalił na LCD co odpowiada całemu zapełnieniu ekranu. Czas podskoczył do 2,2ms. Co prawda aby było bardziej miarodajnie dla typowej biblioteki to standardowo trzeba by użyć dwóch komend LCD i jeszcze lokowania kursora więc nawet niech by te 3-4ms były dla zwykłej biblioteki to jak widzisz gdzieś musiałeś zbłądzić w obliczeniach i ten przecinek o jeden w lewo umieścić powinieneś :)
Jak by jednak nie patrzył 70us na korzystanie z LCD to już jest czas, który można spokojnie przyjąć bez męki, że coś będzie przyblokowane i właściwie można go nie brać pod większą uwagę* przy pisaniu programu choćby do badania enkodera bez gubienia impulsów w poolingu w pętli głównej :)

*w granicach rozsądku oczywiście ;-)


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2019, o 19:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 645
Pomógł: 37

Więc tak... W programie był poważny błąd bo nie można mnożyć, lecz należało podzielić wynik "total" /5 po tej i innych operacjach wynik był zbliżony do tego co zaprezentował kolega Sylwek(dzięki!) jednak pomimo że wyniki są zbliżone to po pomiarach oscyloskopem okazuje się że błąd pomiarowy nadal jest. Szczerze mówiąc, nie będę dalej tego tematu drążył ponieważ wyniki jak i wasze odpowiedzi wystarczająco poszerzyły moją wiedzę w dziedzinie LCD. Zdawało by się że na temat tych wyświetlaczy zostało już wszystko powiedziane i napisane. A jednak nie widziałem wcześniej aby ktoś zwrócił uwagę że do scrollowania tekstu negatywy się nie nadają, nie miałem też do tej pory świadomości czasów dostępu do sterownika HD44780 jak i ominięcie tych barier (czasowych) w sposób jaki wykazał Sylwek. W prawdzie ja w swoich programach staram się nie obsługiwać LCD "non stop", lecz tylko wtedy kiedy jest to konieczne i z minimalną potrzebną ilością danych. Listing programu w pierwszym poście zostanie poprawiony, być może ktoś zechce przeprowadzić podobne pomiary.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO