Wypisywanie tekstu na wyjściu kompozytowym

Do pewnego prostego projektu potrzebuję biblioteki, która pozwoli mi na wysyłanie tekstu na ekran telewizora, przez najzwyklejsze wyjście kompozytowe. Nie ma wielkich wymagań co do jakości obrazu. Wystarczy biały tekst na czarnym tle, bez odcieni szarości, rozdzielczość na poziomie C64. Byle tylko jitter nie rzucał się w oczy.

Kod samej aplikacji nie będzie zbyt rozbudowany, tak naprawdę chodzi o wykonywanie paru prostych operacji i wyrzucenie wyniku na ekran TV. Nie będzie konieczne wykorzystywanie peryferiów, może poza jednym przerwaniem zewnętrznym.

Pobieżnie przeszukałem Internet i widzę, że paru ludzi już tego próbowało, uzyskując całkiem imponujące efekty na mocnych procesorach w stylu STM32 albo PIC32. Mi jednak zależy na minimalistycznej wersji, zastanawiam się więc jaki MCU będzie absolutnym minimum.

Znalazłem parę projektów napisanych na AVR albo ośmiobitowe PIC, ale:

1) Zostały napisane jeszcze na mocno przestarzałą wersję avr-gcc i nie kompilują się, wywalając cała masę błędów i ostrzeżeń. Dostosowanie kodu do obecnych standardów wymagałoby trochę zachodu. 2) Zostały one napisane na jeden ze starych kompilatorów dla PIC i nie kompilują się pod XC8. Czyli ten sam problem, co powyżej. 3) Kod został napisany w asemblerze PIC, tak więc dostosowanie tego do własnych potrzeb nie będzie łatwe.

Ktoś zna jakieś gotowe rozwiązanie, nie licząc Arduino? ;) Potrzebuję tylko zestawu najbardziej podstawowych funkcji do pracy w trybie tekstowym: init(), clearscreen(), gotoxy() oraz putc().

Reply to
Atlantis
Loading thread data ...

W dniu 2018-09-21 o 10:00, Atlantis pisze:

Chodzi mi po głowie, że w 1988r brat napisał rs232 na 8748 poświęcając

8,5 rozkazu na 1 bit, aby uzyskać prędkość 57600. Z tego mi wychodzi, że rozkaz zajmował 2us czego już zupełnie nie kojarzę. Te 0,5 rozkazu było specjalnie wstawiane (jeden bit 8 rozkazów, kolejny 9 rozkazów) aby uzyskać typową prędkość. Bez tej zabawy może bit mieściłby się w 6 rozkazach (nigdy nie pisałem w assemblerze - nie wiem).

Częstotliwość odchylania poziomego w klasycznym TV jest rzędu 30kHz Czyli okres rzędu 33us. Załóżmy, że z tego 30us obszar widoczny, a 3us na powrót. Nie wiem jaka była rozdzielczość C64 - strzelam 300 (aby się łatwo liczyło) pxl na szerokość ekranu. Czyli 30/300 = 100ns na pixel. Z tego wychodzi że trzeba wystawiać kolejne bity z prędkością 10MHz. Jeśli wystawienie bitu wymaga 6 rozkazów to procek wykonujący 1 rozkaz na takt zegara musi chodzić z zgarem 60MHz.

Tak mi wychodzi przy założeniu realizacji zagadnienia całkiem softwareowo. Obecne procki mają różne peryferia dające się zapewne jakoś wykorzystać. Wystarczyło by coś co wysyła bajt szeregowo (z zegarem

10MHz) i program już nie musi zajmować się każdym bitem a dopiero bajtem. A jak miałby coś co pozwoli wypluć serię bajtów z pamięci to pozostaje zajmowanie się dopiero całą linijką - już nuda.

P.G.

Reply to
Piotr Gałka

W dniu 2018-09-21 o 10:00, Atlantis pisze:

atxmega Ci to zrobi, w ksiązce

formatting link
w rozdziale 33 generowanie obrazu video, kod jest na stronie do ściągnięcia.

Reply to
Janusz

Użytkownik "Piotr Gałka" napisał w wiadomości grup dyskusyjnych:po2d50$1s6$1$ snipped-for-privacy@news.chmurka.net... W dniu 2018-09-21 o 10:00, Atlantis pisze:

Jesli 8051 zajmowal 1us, to czemu by wczesniej nie mial trwac 2us.

15625

okres 64us, na linie ok 50us

Piotrze, ale teraz mamy szybkie procki

formatting link
Nie ma to moze az 300 pikseli w poziomie, ale efekty i tak sa imponujace.

Typowy rejestr szeregowy ... tylko zegar trzeba dobrac, no i jakies DMA by sie przydalo, albo FIFO ...

No i ciagle mozna jeszcze odtworzyc ZX81 :-)

J.

Reply to
J.F.

15625 Hz

64 µs

56 µs

8 µs

Podziel przez 2.

Wystawia się bajt a bity załatwia rejestr przesuwny...

Reply to
RoMan Mandziejewicz

W dniu 2018-09-21 o 12:24, RoMan Mandziejewicz pisze:

Nie pamiętałem. Wpisałem w Google i pierwsze trafienie podało mi zakres (zapewne jakiegoś monitora) od 30kHz w górę. A że było zgodne z tym co po głowie chodziło to nie sprawdzałem dokładniej

Faktycznie. Kiedyś 15625 było znaną mi liczbą.

OK. Ale w takim przypadku zwiększyłbym też liczbę pixli na ekran do 600 (bo 300 wydaje mi się zaniżone) i znów wyjdzie 10MHz.

O tym piszę dalej. W 8748 chyba tego nie mieliśmy bo zapewne jakoś byśmy wykorzystali. Tyle, że dla RS232 trzeba by mieć bufor 10 bitów.

P.G.

Reply to
Piotr Gałka

Użytkownik "Piotr Gałka" napisał w wiadomości grup dyskusyjnych:po2hl9$3mu$1$ snipped-for-privacy@news.chmurka.net... W dniu 2018-09-21 o 12:24, RoMan Mandziejewicz pisze:

Bo sie kiedys monitory komputerowe urwaly od TV. Najpierw byla EGA, potem VGA i SVGA mialy 31-35 kHz, potem to juz stracilem rachube :-)

Spectrum mialo 256. Fakt, ze duze marginesy.

Atari 8 bit ... hm, czy nie ~7MHz zegara pikslowego, bo sie nakladalo na podnosna koloru ...

Zalezy jaki tekst chcemy - ma byc duzo literek, czy duze literki :-)

J.

Reply to
J.F.

W dniu 2018-09-21 o 12:23, J.F. pisze:

Ja nie neguję, że mógł. Tylko napisałem, że nie kojarzę. Jakby ktoś mnie zapytał ile trwał rozkaz w 8748 to bym chyba sądził, że 1us. Ale może dawaliśmy wolniejszy od max kwarc. Nie pamiętam, a szukać mi się nie chce.

Pytanie było: "Mi jednak zależy na minimalistycznej wersji, zastanawiam się więc jaki MCU będzie absolutnym minimum." P.G.

Reply to
Piotr Gałka

Użytkownik "Piotr Gałka" napisał w wiadomości grup dyskusyjnych:po2iip$449$1$ snipped-for-privacy@news.chmurka.net... W dniu 2018-09-21 o 12:23, J.F. pisze:

Ale ja tez nie proponuje jakis GHz, skoro wystarcza 20MHz. Przyklady miales.

Czasy 8051 sie skonczyly :-) Choc i na nim z wykorzystaniem rejestru szeregowego chyba by sie dalo :-)

J.

Reply to
J.F.

Nie jest to trywialne, nawet jeśli chcesz tylko czarno biały tekst. Wszelkie rozwiązania na słabych CPU wymagają wsparcia sprzętowego albo stosowania różnych trików, które nie ułatwiają programowania głównego wątku programu.

jp

Atlantis wrote:

Reply to
jacek pozniak

Podeślij ten stary kod który nie chce się kompilować na xc8

Reply to
Marek

A musi być mcu? Są dedykowane kości generujące sygnał video z bitmapy przesłanej z dowolnego mcu. Bitmapa może być nawet 1x1

Reply to
Marek

Bodajże to była ta biblioteka:

formatting link
Nieco inna konwencja, jeśli chodzi o nazewnictwo rejestrów. Niby dałoby się to przerobić, nie wiem jednak, czy nie szkoda na to czasu. ;)

Reply to
Atlantis

Pytanie czy faktycznie aż tyle.

Napisanie czegoś takiego nie wydaje się specjalnie skomplikowane...

Reply to
Queequeg

Oczywiście, że nie musi. Ważne, żeby taki układ nie kosztował fortuny i był dostępny bez konieczności zamawiania z drugiego końca świata przez eBay albo jakiś drogi sklep internetowy. ;)

Reply to
Atlantis

Jeśli jest dostępny.

W AVR pewnie dałoby się wykorzystać USART lub SPI...

Reply to
Queequeg

W trybie 320x200 z fontem 8x8 dało się wyświetlić tekst 40x25. IMO wystarczające (choć zależy też do czego)...

Reply to
Queequeg

dlaczego nie arduino? serio pytam. kiedyś podobno sejm rozpisał konkurs na dostawę telefonów. Poszło zaproszenie do wszystkich telefonicznych firm które mają przedstawicelstwo w Polsce. sęk w tym że warunek must-have był... system iOS.

ToMasz

Reply to
ToMasz

Użytkownik "ToMasz" napisał w wiadomości grup dyskusyjnych:5ba4e523$0$609$ snipped-for-privacy@news.neostrada.pl...

Po rozpatrzeniu wszystkich wad i zalet, byc moze stwierdzili, ze lepiej wybrac iOS, niz specyfikowac wymagania dla systemu, dopisywac szkolenia dla programistow, dokumentacje, wymagania bezpieczenstwa itp.

Ale nadal wygrywa najtanszy dostawca ... i to wcale nie musi byc Apple Polska, to tylko ~500 telefonow, moze np Media Markt ma lepsza oferte ...

J.

Reply to
J.F.

Użytkownik "Atlantis" napisał w wiadomości grup dyskusyjnych:5ba4a53b$0$588$ snipped-for-privacy@news.neostrada.pl...

Atlantisie ... a telewizor skad ? Ciekawe jak szybko zniknie wejscie ... bo po co to komu :-)

Jesli nie czysto softwareowo ... kiedyc byly kosci do telegazety, i m.in. potrafily wyswietlic obraz na TV ...

Tylko teraz ich pewnie nie ma ... poszukac leżaka magazynowego, czy wydlubac ze starego TV ?

J.

Reply to
J.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.