Skocz do zawartości

Sterowanie wyświetlaczem LCD za pomocą mikrokontrolera.


Pomocna odpowiedź

VSYNC w tym wyświetlaczu nie działa tak prosto jak piszesz... sygnał VSYNC polega na tym, że na ten pin należy dać 0 (0 to synchronizacja) i zrobić jedną poziomą linię, więc nie jest to przerwa w sygnale.

A nawet przy nowej klatce obrazu gdy dam najmniejszy delay to ekran ciągle traci obraz bo wypełnienie na linii CLK musi wynosić 40-60% więc...

 

Cytat

Oczywiście watchdoga można wyłączyć, ale co będzie jeśli program faktycznie wlezie w jakieś while(1){} Albo pochrzanisz coś z mutexami i będzie chciał czekać na dostęp do danych?

Z tym nie ma problemu, poradzę sobie napisać taki kod żeby się nie zawiesił. Tylko jak to wyłączyć na Arduino IDE?

Link do komentarza
Share on other sites

1 godzinę temu, ElektronPL_WiTu napisał:

poradzę sobie napisać taki kod żeby się nie zawiesił.

Też tak kiedyś myślałem... 🙂 Czterdzieści lat siedzenia nad różnego rodzaju klawiaturami nauczyło mnie jednak, że to była bardzo głupia myśl...

A tak przy okazji to właśnie taki kod napisałeś i nawet pokazałeś.

1 godzinę temu, ElektronPL_WiTu napisał:

Tylko jak to wyłączyć na Arduino IDE

Akurat dla ESP32 z poziomu bibliotek Arduino możesz się odwołać do oryginalnych bibliotek Espressifa, więc możesz uzyć ichniejszego podręcznika.

Uprzedzając pytanie: nie, nie wiem, nigdy tego nie robiłem i nie było mi to do szczęścia potrzebne.

1 godzinę temu, ElektronPL_WiTu napisał:

VSYNC w tym wyświetlaczu nie działa tak prosto jak piszesz...

Wiesz... trudno bez specyfikacji wyświetlacza cokolwiek zaproponować, więc najlepiej uznaj moje podpowiedzi za niebyłe i zabierz się za DMA.

Link do komentarza
Share on other sites

Jasne domyślam się, że nie zagłębiając się w datasheet nie da się domyśleć takich rzeczy 😛 

Cytat

...zabierz się za DMA

Mógłbyś przedstawić mi jakieś podstawy jaki jest zamysł tego rozwiązania żebym miał jakiś punkt zaczepienia przy rozpoczęciu pracy nad tym...

DMA to z tego co wyczytałem dostęp bo RAM omijający rdzeń - czyli mam użyć zewnętrznego SRAM'u? (mam kostkę 128KB) aby może ESP32 ma jakiś wsparcie. No zupełnie jestem zielony w tym temacie...

Link do komentarza
Share on other sites

13 minut temu, ElektronPL_WiTu napisał:

DMA to z tego co wyczytałem dostęp bo RAM omijający rdzeń - czyli mam użyć zewnętrznego SRAM'u

Skąd taki pomysł? To w ESP nie ma pamięci do której się można dostać? Weź wyczytaj to sobie porządnie a nie po łebkach, bo wyskakiwanie z takimi pytaniami na forum świadczy nie tyle o braku podstaw (bo to normalne) tylko o braku chęci i pobieżnym tylko zerkaniu do dokumentacji. O ESP napisano bardzo dużo, w dodatku kody wszystkich bibliotek masz na własnym dysku - materiału do czytania masz na miesiąc co najmniej.

Żeby nie było że nie chcę pomóc: używałem DMA na ESP wyłącznie do I2S, do innych celów na razie nie jest mi to potrzebne.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Ja bym proponował zostawić DMA na moment i zacząć od czegoś prostszego, czyli timera. Niezależnie, czy używając DMA, czy CPU i tak konieczne jest ustalenie prędkości transmisji do wyświetlacza - podejście z liczeniem cykli maszynowych się nie sprawdzi, więc proponuję uruchomić timer i na początek programowo go używać. Czyli to co może zrobić DMA najpierw niech robi drugi rdzeń - jest nawet szansa, że to zadziała i DMA nie będzie niezbędne (chociaż zawsze warto czegoś nowego się nauczyć).

Link do komentarza
Share on other sites

Czy mógłbyś dać mi jakiś prosty przykład jak działają timery? Ja nigdy na żadnym sprzęcie ich nie używałem a co ja zobaczyłem w programach do ekranów VGA to się przeraziłem.

Np. żeby na jednym pinie był sygnał o wypełnieniu 50% a na drugim co 3 cykle zegara stan niski a reszta stan wysoki - to bym sobie już rozpracował jak to działa. Albo może miał byś jakiś link który wyjaśnił by w jakiś prosty sposób jak działają timery.

Link do komentarza
Share on other sites

Dobra, z tymi timerami to był zły pomysł - jednak na esp32 jest zupełnie inaczej niż na stm32, a mi się wszystko pomieszało 😞

W każdym razie jak chodzi o gotowca to proponuję popatrzeć na kod biblioteki FabGL: https://github.com/fdivitto/FabGL

Jest tam kod sterownika VGA, który wykorzystuje DMA, ale zamiast jak myślałem GPIO używane jest I2S - pozostaje przeanalizować kod, a może i przetestować.

Tak jako ciekawostka, że ESP32 może faktycznie generować obraz VGA:

 

 

Edytowano przez Elvis
Link do komentarza
Share on other sites

to właśnie analiza tej biblioteki mnie przeraziła xd

Z tego co widzę to mój aktualny kod w 100% by wystarczył, bo gdy wyświetlacz idzie z rdzenia #0 na maksymalnym priorytecie a w tym samym czasie rdzeń #1 na minimalnym priorytecie bez zakłócania sygnału dla wyświetlacza może operować na pinach >31 więc prosta komunikacja jest możliwa (a tylko taka jest mi potrzebna) tylko ten watchdog... Nie umiem go wyłączyć a to 4000ms robi restart a on mi naprawdę nie jest potrzebny. Mimo wszystko chciałbym spróbować z DMA tylko bym musiał znaleźć jakiś poradnik który pokaże jak to wygląda od podstaw.

Link do komentarza
Share on other sites

Nieaktualne, popróbowałem trochę więcej porobić na tym co pisałem i działa to tragicznie. 1 - za wolno, 2 - niestabilnie. (pomijając notoryczny reset) Myślę że DMA rozwiązało by problem tylko muszę to rozpracować.

Kurde ciemny jestem w tym temacie zupełnie. Co ma format przesyłania dźwięku do sterowania wyświetlaczami? Potrzebuje jakiegoś dobrego poradnika bo ja nie dam sobie z tym rady.

Link do komentarza
Share on other sites

I2S to nie format przesyłania dźwięku tylko interfejs. W każdym razie poczytaj to sam zobaczysz, że w przypadku esp32 jednak coś ma i to więcej niż samo DMA.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.