Goto page 1, 2, 3, 4, 5, 6, 7, 8, 9 Next
Atlantis
Guest
Fri Sep 21, 2018 8:00 am
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().
Piotr GaĹka
Guest
Fri Sep 21, 2018 9:20 am
W dniu 2018-09-21 o 10:00, Atlantis pisze:
Quote:
Mi jednak zależy na minimalistycznej wersji,
zastanawiam się więc jaki MCU będzie absolutnym minimum.
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.
Janusz
Guest
Fri Sep 21, 2018 9:32 am
W dniu 2018-09-21 o 10:00, Atlantis pisze:
Quote:
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.
atxmega Ci to zrobi, w ksiązce
https://helion.pl/ksiazki/avr-uklady-peryferyjne-tomasz-francuz,avrukp.htm
jest w rozdziale 33 generowanie obrazu video, kod jest na stronie do
ściągnięcia.
--
Pozdr
Janusz
J.F.
Guest
Fri Sep 21, 2018 10:23 am
Użytkownik "Piotr Gałka" napisał w wiadomości grup
dyskusyjnych:po2d50$1s6$1$PiotrGalka@news.chmurka.net...
W dniu 2018-09-21 o 10:00, Atlantis pisze:
Quote:
Mi jednak zależy na minimalistycznej wersji,
zastanawiam się więc jaki MCU będzie absolutnym minimum.
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ę.
Jesli 8051 zajmowal 1us, to czemu by wczesniej nie mial trwac 2us.
Quote:
Częstotliwość odchylania poziomego w klasycznym TV jest rzędu 30kHz
15625
Quote:
Czyli okres rzędu 33us. Załóżmy, że z tego 30us obszar widoczny, a
3us na powrót.
okres 64us, na linie ok 50us
Quote:
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.
Piotrze, ale teraz mamy szybkie procki
http://belogic.com/uzebox/index.asp
https://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/f2014/jn286_cy255/jn286_cy255/index.html
Nie ma to moze az 300 pikseli w poziomie, ale efekty i tak sa
imponujace.
Quote:
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.
Typowy rejestr szeregowy ... tylko zegar trzeba dobrac, no i jakies
DMA by sie przydalo, albo FIFO ...
No i ciagle mozna jeszcze odtworzyc ZX81 :-)
J.
RoMan Mandziejewicz
Guest
Fri Sep 21, 2018 10:24 am
Piotr GaĹka
Guest
Fri Sep 21, 2018 10:37 am
J.F.
Guest
Fri Sep 21, 2018 10:48 am
Użytkownik "Piotr Gałka" napisał w wiadomości grup
dyskusyjnych:po2hl9$3mu$1$PiotrGalka@news.chmurka.net...
W dniu 2018-09-21 o 12:24, RoMan Mandziejewicz pisze:
Quote:
Częstotliwość odchylania poziomego w klasycznym TV jest rzędu 30kHz
15625 Hz
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
Bo sie kiedys monitory komputerowe urwaly od TV.
Najpierw byla EGA, potem VGA i SVGA mialy 31-35 kHz, potem to juz
stracilem rachube :-)
Quote:
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.
Podziel przez 2.
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.
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.
Piotr GaĹka
Guest
Fri Sep 21, 2018 10:53 am
W dniu 2018-09-21 o 12:23, J.F. pisze:
Quote:
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ę.
Jesli 8051 zajmowal 1us, to czemu by wczesniej nie mial trwac 2us.
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.
Quote:
Piotrze, ale teraz mamy szybkie procki
Pytanie było:
"Mi jednak zależy na minimalistycznej wersji,
zastanawiam się więc jaki MCU będzie absolutnym minimum."
P.G.
J.F.
Guest
Fri Sep 21, 2018 10:58 am
Użytkownik "Piotr Gałka" napisał w wiadomości grup
dyskusyjnych:po2iip$449$1$PiotrGalka@news.chmurka.net...
W dniu 2018-09-21 o 12:23, J.F. pisze:
Quote:
Piotrze, ale teraz mamy szybkie procki
Pytanie było:
"Mi jednak zależy na minimalistycznej wersji,
zastanawiam się więc jaki MCU będzie absolutnym minimum."
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.
jacek pozniak
Guest
Fri Sep 21, 2018 11:50 am
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:
Quote:
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().
--
jp
www.flowservice.pl
www.flowsystem.pl
Marek
Guest
Fri Sep 21, 2018 12:00 pm
On Fri, 21 Sep 2018 10:00:59 +0200, Atlantis <marekw1986NOSPAM@wp.pl>
wrote:
Quote:
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.
Podeślij ten stary kod który nie chce się kompilować na xc8
--
Marek
Marek
Guest
Fri Sep 21, 2018 12:06 pm
On Fri, 21 Sep 2018 10:00:59 +0200, Atlantis <marekw1986NOSPAM@wp.pl>
wrote:
Quote:
zastanawiam się więc jaki MCU będzie absolutnym minimum.
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
--
Marek
Atlantis
Guest
Fri Sep 21, 2018 12:14 pm
On 21.09.2018 14:00, Marek wrote:
Quote:
Podeślij ten stary kod który nie chce się kompilować na xc8
Bodajże to była ta biblioteka:
http://www.micro-examples.com/public/microex-navig/doc/089-pic-pal-tv
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.
Atlantis
Guest
Fri Sep 21, 2018 12:16 pm
On 21.09.2018 14:06, Marek wrote:
Quote:
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
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.
ToMasz
Guest
Fri Sep 21, 2018 12:33 pm
Quote:
Ktoś zna jakieś gotowe rozwiązanie, nie licząc Arduino?
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
Goto page 1, 2, 3, 4, 5, 6, 7, 8, 9 Next