logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Generowanie obrazu czarnobiałego w systemie PAL

ozman 23 Cze 2009 12:53 6717 21
  • #1 6692376
    ozman
    Poziom 21  
    Witam!

    Generowanie obrazu za pomocą AVR w polskim internecie to temat tabu. Zdaję sobie oczywiście sprawę, że wyważam otwarte drzwi, gdyż są już odpowiednie procedury obsługi wyświetlania. Niemniej każdy pisze pod siebie, a raz napisana dobre procedura np. do obsługi LCD, czy jakiejś magistrali jest bezcenna.


    Nie jestem zawodowcem w programowaniu, wiec proszę jak najbardziej o konstruktywną krytykę.



    Dziś postaram się przybliżyć Wam jak generować linie i złożyć je w cały obraz na TV.



    Trochę teorii:

    Jedna linia generowana przez działo elektronowe trwa 64us. Na jeden pełny obraz potrzeba 625 linii. Sygnał składa się z dwóch połówek obrazu gdyż po pierwszym przejściu działo kreśli nieparzyste linie a przy drugim parzyste.

    Czas na obliczenia:

    Linia 64us * 625 linii * 25 klatek/s = równo 1s

    Tyle musimy zrobić w tym czasie. Dodam że nie wszystkie linie są widoczne na ekranie (na wyświetlany obraz mamy do dyspozycji 576 linii). W czasie gdy rysujemy niewidoczne linie odbywa się synchronizacja pionowa o częstotliwości 50Hz.
    Vsync omówimy sobie kiedy indziej gdyż do dzisiejszego przykładu nam się nie przyda.

    Rysowanie linii:

    Tu mamy zasadnicze 4 części:

    - Front porch trwający około 1,7us. Na pinie VIDEO ustawiamy 0, SYNC 1
    - Synchronizacja trwa dokładnie 4,7us. VIDEO 0, SYNC 0
    - Sygnał użyteczny trwa 52us. SYNC 1, VIDEO w zależności co chcemy wyświetlić.
    - Back porch 5,6us. Na pinie VIDEO ustawiamy 0, SYNC 1

    Całość bezwzględnie musi trwać te 64us. Pełną kontrolę nad czasami daje nam język assembler.


    Do działania układu potrzebny nam będzie jeszcze prosty DAC oparty na 3 opornikach (schemat w załączniku). Oporniki odpowiadają za poziom napięcia skutecznego. Poziom logiczny 1 na wyjściu VIDEO da nam około 1V,
    gdy VIDEO=0 SYNC=1 to odpowiada 0,3V, a VIODE=0 SYNC=0 oczywiście 0V.

    Prezentowany kod programu wyświetla nam połowę obrazu biały as a druga połowa czarny. Pisany pod atmega8 o kwarcu 16MHz.




    
    .nolist
    .include "/home/maro/include/m8def.inc"
    .list  	   	;
    .listmac
    .cseg
    
    .equ video=7 ; pin obrazu video
    .equ sync=0 ; pin synchronizacji
    .equ port=PORTC ; port synchronizacji
    .equ port2=PORTD ; port obrazu video
    
    		.org	0			;generowany  kod wynikowy będzie umieszczany w pamięci od adresu o wartości zero
    		rjmp	ResetProcessor		;skok do procedury resetu
    
    
    ResetProcessor:
    
    			
    		cli		
    		ldi  r16, high(RAMEND)	;Deklaracja stosu
             	out  SPH,r16
            	ldi  r16, low(RAMEND) 
              	out  SPL,r16
    
    
    sbi DDRD,7 ; ustaw pin video jako wyjście
    sbi DDRC,0 ;ustaw pin synch jako wyjście
    
    
    loop: ; wyświetlamy w nieskończoność tą jedną linię obrazu
    cbi port,sync ; synchronizacja
    cbi port2,video
    ldi r17,21  
    rcall czekaj 
    nop
    nop
    
    sbi port,sync ; back porch 
    cbi port2,video
    ldi r17,27 
    rcall czekaj
    
    cbi port2,video ; czarny pas
    ldi r17,135 
    nop
    nop 
    rcall czekaj
    
    sbi port2,video ; biały pas
    ldi r17,135 
    nop
    nop 
    rcall czekaj
    
    cbi port2,video ;front porch
    sbi port,sync
    ldi r17,3
    nop
    nop 
    rcall czekaj
    
    rjmp loop
    
    
    czekaj: 	  
      	dec 	r17 
      	brne czekaj 
    ret 
    



    Oczywiście kod nie jest optymalny i marnujemy bez sensu kupę cykli na procedurę "czekaj". Nic nie stoi na przeszkodzie aby zrobić to na przerwaniach :).

    W kolejnym odcinku wyświetlanie białego kwadracika na środku ekranu.

    Jeżeli będzie zainteresowanie to wstawię płytkę do prototypowego układu posiadający pamięć EEPROM, złącze COM, wyjście dźwięku, wyście obrazu o możliwości dostosowania oprócz białego i czarnego jeszcze 3 poziomów szarości.
  • #2 6692566
    Nawigator
    Poziom 33  
    1) jak czarno-biały to CCIR a nie PAL
    2) jak CCIR to gdzie jest synchronizacja pozioma?
    3) praca telewizora bez synchro V może prowadzić do jego uszkodzenia.

    N.
  • #3 6695994
    Pittt
    Poziom 32  
    Witam, ciekawy temat. Ja chętnie się zapoznam z twoimi rozwiązaniami :)
  • #4 6696035
    PiotrEtenM500
    Poziom 19  
    A no ciekawy. Jest kilka opisów na Forach Modelarskich
    Ale sympatycznie by było cos ciekaawego zobaczyć.
    AVT oferyje kit o numerze AVT2853
    Link
  • #5 6780563
    tdx110
    Poziom 18  
    Witam
    Zastanawiam się nad trzecim opornikiem 75Ω.
    Ponieważ jak patrzyłem na stronę Link to tutaj jest przedstawione iż telewizor już posiada w sobie taki rezystor.
    Jest on wymagany?
  • #6 6780897
    PiotrEtenM500
    Poziom 19  
    Raczej nie jest potrzebny.



    może by tak pomyśleć nad OSD, a nie generatorem
    np z LM1881

    generatorow jast kilka w necie
    wiec moze odrazu by tak zacząć od nakładek, np godziny, daty. kidyś był fajny STV, pozniej LS teraz jest MAX7456 ale nie dostępny wiec moze coś coś do zastąpi ?
  • #7 6782301
    tdx110
    Poziom 18  
    Ja tam myślałem nad połączeniem możliwości odczytu karty MMC i wyświetlania informacji zawartych w niej na telewizorze.
    Niestety mam taki problem iż nie do końca rozumiem informacje na ten temat.
    Jak ktoś byłby zainteresowany informacjami na temat obsługi kart MMC przez mikrokontroler to zapraszam na strony:
    Link
    Link
    + do tego dorzucam informacje na temat obsługi czarno-białego i kolorowego ekranu.
    Link
  • #8 6782578
    PiotrEtenM500
    Poziom 19  
    tdx110 napisał:
    Ja tam myślałem nad połączeniem możliwości odczytu karty MMC i wyświetlania informacji zawartych w niej na telewizorze.
    Niestety mam taki problem iż nie do końca rozumiem informacje na ten temat.


    Karty maja się nijak do tematu

    To co Ciebie interesuje jest ty
    Link

    Tu podobny projekt tylko pasy kolorowe Link
  • #9 6782727
    kedzi1
    Poziom 18  
    Rezystor 75om jest potrzebny, musi się on znajdować po obu stronach kabla!!! Jest to tzw dopasowanie impedancji i zapobiega szkodliwym zjawiskom towarzyszącym takim częstotliwością. Niech koledzy zasięgną lektury bo to podstawy elektroniki.
  • #10 6784595
    PiotrEtenM500
    Poziom 19  
    rezystor jest, nie potrzebny. Róznca przy podłaczonym rezystorze będzie taka, że uzyskasz ciemniejszy obraz, Ten układ nie wymaga rezystora. Jak juz chcesz miec własciwe dopasowanie inpedancji, nie mylić z rezystancją to robi sie to w ukladzie RLC, a nie R. Zastosowany tu rezystor był podany jako opcja, a nie jako koniczny element.

    milej zabawy:)
  • #11 6784830
    tdx110
    Poziom 18  
    Według mnie kolega PiotrEtenM500 ma rację.
    Rezystor ten nie jest potrzebny dlatego iż jak podałem w pierwszym poście link to tam jest pokazane, że rezystor 75Ω jest wbudowany (przynajmniej można tak to przyjąć).

    Edit:
    Jak sprawdzałem z kolegą na jego układzie napisany przez niego kod programu to wyszło iż:
    Synchronizacja może wynosić nawet 4,5us
    czyli:
    Synchronizacja (0V) ≈ 4,5 ÷ 4,7us
  • #12 6800801
    PiotrEtenM500
    Poziom 19  
    tak dla zainteresowanych podam ciekawy link "Karty graficznej" VGA dla uC np AVR

    cena Modułu VGA to 71EU + przesyłka

    Link

    Generowanie obrazu czarnobiałego w systemie PAL
  • #13 6802250
    tdx110
    Poziom 18  
    Witam
    Dodaje jeden plik który wszystkich zainteresowanych powinien zaciekawić.
    Są w nim wszystkie dokładne informacje na temat systemu PAL.
    Punktów nie doliczam ponieważ znalazłem go gdzieś na necie, a tak poza tym to żeby można było poszerzać swoje "horyzonty" wiedzy :D
  • #14 6803706
    PO.
    Poziom 20  
    A crafta znacie ? http://www.linusakesson.net/scene/craft/

    Tam jest opis i kod źródłowy, nie tylko czarno-białego. Wielki szacunek dla twórcy, przepraszam, Twórcy.


    PS: przepraszam za błąd - późna pora i człowiek nieprzytomny ;) . Oczywiście craft nie generuje obrazu w palu więc potraktujcie go jako ciekawy offtop.
  • #15 6845982
    Jacekser
    Poziom 25  
    Witam
    Kiedyś to dawało się koder(Philips TEA2000 lub Motorola MC1377)i kupe TTL-ek by wygenerowac sygnały synchro i treść testową.Przerobiłem w latach 80-tych generator telewizyjny Meratronik K-938,wszedł on pózniej do produkcji(zarobiłem nim na lodówkę!).A teraz bierzemy AVR czy PiC-a i programujemy tak by robil to,co tam robiło kupę scalaczków.Problemem był ten ówczesny SECAM!Dobrze go zrobiono dopiero w K-944.Zastosowano kodery scalone Philipsa serii SAA.To były czasy!Pozdrawiam wszystkich z nostalgią za SECAM/PAL(bo juz chyba nadchodzi kres tych standardów).Ech..

    Pochwale się;posiadam generator Philips/Fluke PM5518TXT.ma wszystkie standardy analogowe SECAM/PAL. :Fade-color :Fade-color

    ...ale temat ciekawy.
  • #16 6850191
    kedzi1
    Poziom 18  
    Kolego PiotrEtenM500 weź kolegę tdx110 z rączkę i idźcie do szkoły. Poczytajcie książki zamiast pisać bzdury.
    Pomyślcie jakie szkodliwe zjawiska powstają na takiej linii. Co będzie jak kabel będzie długi i narażony na zakłócenia? Waszym zdaniem jeden rezystor to taka oszczędność że warto go nie dać? Czy naprawdę sądzicie że jest nie potrzebny? Jak myślicie skąd wzięła się wartość 75 om?
    Jak odpowiecie sobie na te pytania możemy dalej dyskutować, a jak nie to sio do książek. :)
    To że jakiś układ działa to jeszcze nie dowód na to że jest dobrze zaprojektowany.
  • #17 6850283
    tdx110
    Poziom 18  
    Racja, ale liczy się oprócz działania układu jeszcze jego optymalizacja.
    Przecież jeśli bym nie chciał optymalizować układu to mógłbym przecież zrobić wszystko na elementach pasywnych.
    Rezystor 75Ω wziął się stąd ponieważ można przyjąć że rezystancja wewnętrzna telewizora tyle wynosi.
    Tutaj jest tego dowód jak coś.
    Link
    Dobry układ to działający i zoptymalizowany do minimum układ.
    Przecież gdyby nie optymalizacja to komputery dalej by zajmowały całe szafki.:D
  • #18 6851063
    Jacekser
    Poziom 25  
    kedzi1 napisał:
    ... Jak myślicie skąd wzięła się wartość 75 om?
    .


    No własnie!Skąd ta wartość?Wiadomo że chodzi o m.in o dopasowanie.
    Może zamiast karcić warto by przytoczyc cos lub wyjasnić.To jest forum dla wszystkich,zielonych,początkujacych też.Pozdrawiam.
  • #19 6853919
    kedzi1
    Poziom 18  
    Ja nie karcę tylko ciężko dyskutować z kimś ko się upiera, a nie wie przy czym. Oczywiście wartość 75om czy 50om to wartości powiedzmy umowne. Przy dużych częstotliwościach nawet kilkudzisięcio centymetrowe ścieżki to już linia długa. Dopasowanie oporów wyjścia sygnału i wejścia gwarantuje najlepszy współczynnik przenoszenia mocy sygnału. Druga sprawa to dopasowanie impedancyjne do impedancji linii. Tu kabel koncentryczny także powinien mieć impedancje 75om. Dzięki temu współczynnik fali odbitej dla wejścia i wyjścia ma wartość bliską zeru p=(z-zl)/(z+zl) gdzie z impedancja wejścia lub wyjścia, a zl impedancja linii długiej. Co eleminuje szkodliwe zjawisko fali odbitej. Po prostu część sygnału, która nie zostanie przekazana przez wejście powraca. Fala w źle dopasowanej linii potrafi odbić sie kilka razy dając tzw. efekt duchów na ekranie (widoczne przesunięte krawędzie na ekranie).

    Analizując podany w poście schemat dojdziemy do wniosku, że wymagane poziomy napięć uzyskane są poprzez zmianę wartości rezystancji w dzielniku napięcia. Co powoduje iż rezystancja wyjścia będzie zmienne. Prawda jest taka że ten rezystor jednak tu nic nie da. Mój błąd. Prawidłowo zaprojektowany obwód powiniem mieć stałą rezystancje wyjściową 75om.
    Układ działa prawidłowo ponieważ dopasowanie wejścia do impedancji linii eleminuje odbicia. Gdyby sprawę olać także po drugiej stronie kabla czyli na wejściu, była by masakra.
  • #20 6860147
    Jacekser
    Poziom 25  
    Tam zaraz masakra.Nic się nie stanie jesli kable bedą dostatecznie krótkie.Co najwyżej zafalowania na brzegach impulsów .Koledzy zrobią zobaczą to docenią wagę teorii.Ja mam inna propozycję.Ogladałem linki z konstrukcjami innych generatorów.Uparcie tam chcą chrominancję na jakimś kontrolerze zrealizować.Ciekawe podejscie ,ale chyba dość kłopotliwe.Jest parę enkoderów scalonych;AD724,TDA8501 i in.które łatwo posterować z kontrolera a on CVBS sam zrobi i to dosyć dokładnie.Oczywiscie warto popracowac nad wygenerowaniem chrominancji w czysto cyfrowy sposób ,ale myslę ze zastosowanie np.tych wymienionych przyspieszy efekt. Pozdrawiam.
  • #21 6860405
    Nawigator
    Poziom 33  
    Enkodery scalone trudno teraz kupić, albo ceny mają wysokie.

    N.
  • #22 6860911
    Jacekser
    Poziom 25  
    http://www.soltronik.pl/product_info.php?products_id=9020

    http://www.tme.eu/pl/katalog/szukaj.phtml?f_szukaj=TDA8501#search%3DTDA8501

    O AD724 proszę pytać w ALFINE Poznań(przedstawićiel Analog Devices)-w esklepie za 7,89$ +VAT +koszt przesyłki

    20 zł za scalak (reszta,sadzę tez ok 20zł)to chyba nie jest wygórowana cena w stosunku do pracy ,jaką by trzeba włożyc by zrobić to na tzw. piechotę!

    Oczywiscie ten dział traktuje o AVR-ach i chcę tylko zwrócić uwage że mamy gamę specjalizowanych scalaczków do tego wymagajacych tylko popedzenia z jakiegos hosta (synchro,treść).Mnie tez chodzi po głowie idea wykonania takiego układu na samym procesorze(innych układów np.radiowych też).Ciekawym doświadczeń kolegów forumowiczów.Pozdrawiam.
REKLAMA