on screen display i synchronizacja

Sep 25, 2013 18 Replies

Taka potrzeba:



a) jest układ generujący obraz telewizyjny. Mam dostęp do impulsów synchronizacji pion/poziom, choć wygodniej było by je zregenerować.



b) mam potrzebę wyswietlenia prostej grafiki na obrazie, moze być w formie rozjasnienia/zaciemnienia. Do dyspozycji sygnał composite. Monochromatycznie.



c) Grafika jest czymś w rodzaju prostego menu, a więc w grę wchodzi uC.



Teraz:


1) Nie bardzo mogę uzyć zwykłego CPU. Taki np. AVR ma niedeterministyczny czas przyjęcia przerwania. Jesli nawet bedę robił pooling to i tak będzie on niedeterministyczny. Nadążanie przez cpu za obrazem chyba odpada.


2) Mógłbym użyć CPLD jako bufora pojedynczej lini lub fragmentu, cpu wrzuca byle jak a cpld synchronicznie wypycha na ekran. Ale może:


3) Mógłbym użyc czegoś specjalizowanego.

Teraz jesli chodzi o 3) to na pewno wiekszośc telewizorów posiada OSD, ale co mnie najbardziej interesuje to np. moduł telegazety. On chyba robi to co chcę, czyli synchronizuje się z obrazem. Wszystkie które widziałem (wszystkie 3 :) były typu RGB, a ja mam composite.



Czy istnieje jakiś gotowiec composite który pozwala wtrynić swoją grafikę w obraz? Kilka razy widziałem to w starych systemach gdzie chyba RGB nie było, ale z bliska nie miałem okazji pozerkać na elektronikę.


W dniu 2013-09-25 17:19, Sebastian Biały pisze:

(...)

ee tam opowiadasz ;) wpisz w google "avr osd" ;)

W dniu 2013-09-25 17:19, Sebastian Biały pisze:

np taki MAX7456

formatting link

użytkownik Sebastian Biały napisał:

formatting link
ze jest juz wycofany, popatrz na inne w tej kategorii.

Tutaj masz gotowiec:

formatting link
Może akurat da się zastosować, a jak nie to można wykonać reverse-engineering i przerobić albo zrobić lepiej. Jakby co to piszę się na wyniki sekcji. Bawiłem się czymś takim (ale nie dane mi było zaglądnąć do środka) i ZTCP właśnie literki były czarno-białe... tzn białe z czarnymi obwódkami.

gotowiec (schemat + program) :

formatting link

Rozwiązania oparte o AVR bedą miały taką wadę, że będą "pływać" na ekranie w zakresie jednego cyklu zegarowego. Kiedyś robiłem z tym eksperymenty i to jest upierdliwe zjawisko.

Nie robiłem, nie wiem. Ale tu wygląda chyba nie najgorzej. Oczywiście kwestia potrzebnej jakości, ale napisałeś na wstępie, że do prostej grafiki...

formatting link

a to nawet znacznie lepsze :

formatting link
(atmega 328)

Sam nie robiłem, ale widziałem gotowca i nic nie pływało. Podejrzewam, że program był tak napisany, żeby usypiał się tuż przed spodziewanym wywołaniem przerwania.

Też usypiałem żeby ilośc cykli przy odbieraniu przerwania była stała. Tylko że dalej problem jest taki, że impuls synchronizacji poziomej przychodzi niekoniecznie synchronicznie z zegarem taktujacym (który u mnie podawany był z generatora z innych przyczyn). To drganie powodowało ciekawe efekty na LCD bo logika w TV myślała że to interlace i próbowała ten ruch przewidywać generując ciekawe efekty graficzne.

Wróce do tematu bo link z youtuba nie wygląda źle i może wystarczy jednak taka jakość.

Tak licząc na szybko, to przy czasie wyświetlania linii 52us (+12us na powrót plamki) i max. 720 pikselach w poziomie wychodzi zegar dla pikseli ~14MHz. Przy takiej częstotliwości taktowania uC będziesz miał jitter porównywalny z czasem rysowania 1 piksela. Jestem ciekawy czy faktycznie będzie to tak bardzo widoczne.

użytkownik Sebastian Biały napisał:

Na pierwszym miejscu radze zapoznac sie z czestotliwoscia taktowania atmegi, ludziska podkrecali zegar do ponad 28MHz.

A później im działa, albo i nie. Widziałem stabilne osd taktowane z 24MHz (e-osd, g-osd). Natomiast w innym projekcie (eleres) układ ma czasami problem ze startem przy 16MHz i zasilaniu 3.3V.

Generalnie nie ma większych problemów z generowaniem obrazu. Schody się zaczynają dopiero jak w międzyczasie trzeba jeszcze coś bardziej skomplikowanego policzyć (np. azymut/odłegłość między obecną pozycją, a punktem docelowym) albo generować grafikę na którą brakuje pamięci w AVR. Ale tu niewiele daje przetaktowanie procka - bardzie trzeba się skupić na dobrym przemyśleniu jak to zrobić niż liczyć na MHz.

Pozdrawiam

Marek

On 2013-09-27 12:37, Marek Wodzinski wrote: > Generalnie nie ma większych problemów z generowaniem obrazu. Schody się > zaczynają dopiero jak w międzyczasie trzeba jeszcze coś bardziej > skomplikowanego policzyć

Mogę wziąść np. małego SAM7S, nie ma problemu, tam jest dma i port wypluwający bajty szeregowo. Gdyby nie absurdalne ceny tych procesorów. To może inaczej: jaki mały arm7 będzie miał DMA które wyrzuci mi szeregowo bajty na jakąś nogę? A może XMEGA? Tam też jest DMA i cena poniżej 10zł.

W dniu 2013-09-27 19:56, Sebastian Biały pisze:

popatrz raczej na coś z rodziny STM32 lub LPC - Cortexy (M0) kupisz już od 3zł..

Małe LPC chyba nie mają DMA. Musiałbym więc machać ręcznie. Jesli już wziąść coś większego to z dma.

formatting link
?ukey=product&productID=204621

W dniu 28.09.2013 09:46, Zbych pisze:

Nawet Cortex-M0 od ST ma DMA:

formatting link

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required