Fórum témák

» Több friss téma
Fórum » Crt vezérlése PIC-el (PIC18f4550)
 
Témaindító: kshma, idő: Márc 22, 2007
Témakörök:
Lapozás: OK   2 / 2
(#) AoC válasza kshma hozzászólására (») Ápr 26, 2008 /
 
Kicsit megkésve olvastam a problémát, de a megoldás szerintem PIC helyett egy céláramkör beépítése, javaslom a MC6845-ös típust, amit sok régi gép és video adapter használt. Hasznos linkek:
wikipedia
Magyar nyelvű leírás a Videoton TVC könyvben (163.oldaltól)
(#) af27 hozzászólása Okt 21, 2008 /
 
Üdv.

Lenne egy nagy kérdésem.
PCI vga-val hogy állunk?

Pont most túrtam ki a lomból egy PCI-os vga-tés arra gondoltam, hogy milyen jó lenne megoldani a pic-el való vezérlését, sajnos én nem vagyok olyan szinten, hogy ezt egyedül megoldjam, de szerintem jó ötlet lenne.


Thx előre is mindent.

(#) eltexto válasza af27 hozzászólására (») Okt 21, 2008 /
 
Szia!

Nézted már a PCI bus speckóját ? Úgy indul hogy 33MHz....

Én inkább FPGA-val csináltam. Igaz, ez AVR, de PIC-el is menne.

Bővebben: Link1

Bővebben: Link2

Sajna, csak StarterKit-en van.

Üdv. Zoli
(#) icserny válasza af27 hozzászólására (») Okt 22, 2008 /
 
Gombhoz a kabátot? A lomtárból a egy Pentium I-es alaplapot is keress elő, azzal egyszerűbb lesz...

Ennek a topiknak a végén van néhány hasznos link.

Ebben a topikban is hasonló témakörben folyik a csevely.
(#) af27 hozzászólása Okt 22, 2008 /
 
Jelenleg mindent úgy csinálok, hogy a pic csak az adott gép és pc közötti kapcsolatban játszik szerepet.
Ha a kapcsolat megvan, a jelek megfelelő állapotban, akkor a többi már a pc és a rajta futó alkalmazás dolga.


A feldolgozást megoldhatnám pic-el.
Így a pc csupán a megjelenítés miatt kell.
Ezt szerettem volna kiküszöbölni.

Erre szerettem volna valami, aránylag egyszerűnek mondható megoldást.
A kis lcd-kel már tele van a hócipőm. Drága, kicsi, stb stb
Egy ilyen árán már szinte veszek egy pc-t + 15’-os monitort.

Szóval legyen olcsó, jó, könnyen kezelhető!
Tudom ilyen nincs, de törekegünk az optimálisra.
(#) Gory válasza af27 hozzászólására (») Okt 22, 2008 / 4
 
Nem ovastam végig a fórumot, szóval lehet hogy felvetette már valaki. 640x480-as kép a cél. De nem kell minden pixelt kihasználni, lehet olyan grafikus függvénytárat kéne írni hozzá, ahol a legkisebb egység mondjuk 2,3 vagy4 pixel vagy hasonló. Magyarul mondjuk 2x2-es kockákból lehet építkezni a képernyőn.
Ez gyakorlatilag egyenértékű, azzal mintha egy 320x240-es kép lenne felskálázva. feleannyi processzoridőt eszik szerintem, de ki lehet használni a teljes képernyőterületet.
(#) zombee hozzászólása Márc 13, 2010 /
 
Sziasztok!

Látom pang a téma, én meg csak most találtam rá mert érdekel a téma.
AVR kontrollert fogok illeszteni VGA-hoz közvetlenül - egészségemre!

Ezt érdemes megnézni:
lft_craft_avagy_mi_minden_fér_el_8KB_memóriában

Ha nem csalás, akkor sem valószínű hogy én ilyet fel fogok felprogramozni. Egy alap kijelzőre vágyom, kevés karakterrel kis felbontáson.

A legnagyobb gond a sebesség. Az alap VGA 25.175MHz-es pixel órajellel dolgozik, ami olcsó mikrokontrollerrel kivitelezhetetlen márcsak azér is, mert egy pixelhez nem elég egy órajelnyi utasítás.

A trükk a vízszintes felbontás csökkentése:
ha 640 helyett ha mondjuk 128 pixelünk van, azzal 16 karakter kirajzolható. Így 5.035 MHz lesz a pixelfrekvencia, ami 4-el megszorozva 20.14MHz.
4 órajelnyi utasítás elegendő a kirajzoláshoz: karaktermemória lekérdezése, pixelmemória lekérdezése, kiírás, ugrás.
A függőleges felbontás is csökkenthető, ha egy sort többször írunk ki, ezzel csökkenthető a karakter-és pixelmemória mérete. A karakter memória sora a vízszintes visszafutás alatt állítódik be, a függőleges visszafutás alatt pedig több száz soros programkódok is megengedettek(pl. UART karakter fogadás, karaktermemória műveletek, font beállítás, stb).

Egyelőre a 64x48 pixeles felbontást tűzöm ki magam elé, amivel órát akarok megvalósítani. analóg és digitális órához is elég ez a felbontás. Kicsit pixeles, de olvasható...

Tervezek még színeket használni. Ezt egy külső potenciométer mátrix valósítja meg. Más-más portláb más-más poti-hármast hajt meg, amivel színek megjelenítésére is alkalmasá teszem.

Az időzítés interruptos lesz, ami csak a sorkioltó jel szinkronizálására használok. Az interrupt időzíti az órát, és ütemezi a rendszert: kiírás, sorváltás, függőleges visszafutás, stb.

Na igen, a pontos időzítés fontos!
Erre van egy táblázat, pl. a legfontosabb hogy 640x480@60 - nál valójában 800x525 a felbontás, a maradék rész sötét marad. Ja, és 59.8Hz a képváltás(nem 60), és 25.125MHz a pixelfrekvencia.
Meg van adva, hány pixel a szinkronjel, a visszafutás, sötét terület, stb.
(#) ATtiny válasza zombee hozzászólására (») Márc 13, 2010 /
 
Ilyennel én is próbálkoztam úgy 1 éve. Csak Hercules monitorhoz csináltam karakter generátort. Komolyabb célom nem volt vele, csak kiváncsi voltam meg lehet-e csinálni. Lásd kép.
(#) zombee válasza ATtiny hozzászólására (») Márc 13, 2010 /
 
Hello!

ATTINY2313 32MHz-en? Engedi ezt a nagy frekit a 20MHz-es kontroller? Mit csináltál vele?

Esetleg kapcsirajzod/programkódod van hozzá?
Ha jól emlékszem, a Hercules-ből nőtt ki az EGA is, aminél mindkét szinkronjel felfutóélre vezérel.
A kép az mono, a felbontásra nem emlékszem, valahol az EGA fele-harmada lehet.

Véletlenül nem "pc-n......" vagy a vateráról, a nixie csövekkel és LEd-ekkel?
(#) ATtiny válasza zombee hozzászólására (») Márc 13, 2010 /
 
Nem nagyon kell vele semmit csinálni. Simán működik 20Mhz helyett 32Mhz -el. Feljebb is működne, ha jólemlékszem 38Mhz -es kvarcal is elindult. Felprogramozásnál arra kell figyelni, hogy ha túl nagy a kvarc frekvenciája, akkor nem lehet felprogramozni. Megoldás: míg felprogramozod rakjál bele kisebb kvarcot. Néhány pediféra már lehet nem fog működni ilyen nagy frekvencián. Pl. AD vagy SPI busz vagy az EEPROM. Engem ez nem érintett, mivel semmi különleges perifériát nem használtam. A hercules szabvány felbontása: 720×348. Pixel szinten lehetne kezelni, csak hát ugy kevés a ram... És igen én vagyok vateráról az aki nixie csöveket meg LED-eket árul. Itt a kód hozzá, nem tudom működik-e most. Mert belenyultam késöbb egy kicsit. De ott van kikommentezve az "eredeti" biztos működő verzió is.
(#) zombee válasza ATtiny hozzászólására (») Márc 13, 2010 /
 
Köszönöm szépen.

Valószínűleg saját kódot írok VGA-ra, és ha már megy a nagyobb órajel, bevállalom a 25.175MHz-es kristályt.
Így a kontrollerem a VGA pixel frekvenciájával szinkronba lesz, és a 4 órajelnyi pixel utasításciklus "csak" negyedére csökkenti a felbontást...
Egyébként ATMEGA48-ra tervezek, mert megvettem potyára(ATMEGA8 helyett), nem biztos hogy visszaveszik és nem tudok vele semmit se kezdeni.

Gondolkoztam a hordozható-bővíthető modellen, melyben a vízszintes visszafutás alatt a kontroller feltölti a néhány bájtos pixelmemóriát a karakterek kódtáblája alapján, amit a pixel rajzoló csak beolvas és végrehajt pixelenként 4 órajel alatt.
A pixel rajzoló nem ellenőriz semmit, csak rajzol és ezért lesz gyors. Ha eléri a kép végét, sötét pixeleket rajzol, tehát a pixelmemória legalább akkora, hogy a következő interruptig nem érhet végig. A rajzolásnak az időzítő interrupt fog véget vetni amely nem csinál "reti"-t, hanem visszaállítja a stackpointert és az I flaget, beállítja a pixelmemória pointert majd UGRIK, pontosan a pixelrajzoló legelejére...
(#) zombee válasza ATtiny hozzászólására (») Márc 27, 2010 /
 
Üdv megint.

ATMega8-as kontrollerrel megépítettem az áramkört.
Olyan problémám van, hogy beüzemeltem(volna), csak a 25MHz-es kvarccal nem akar elindulni. Beforrasztással sem ment. Jelenleg a cserélhetőség miatt egy precíziós IC-foglalat maradványa van betéve.
Teszt gyanánt egy
Ha 20MHz-es kristályt dugok bele akkor megy minden.
Írtam egy pár soros tesztprogramot ami egyetlen LED-et villogtat. 20MHz-nél villog, 25MHz-es kristállyal már nem...
Kicsit játszottam vele és egy 24.576MHz-est tettem bele, azzal kicsit bukdácsol, összevissza villogat, de megy...
(#) zombee hozzászólása Márc 27, 2010 /
 
Kicsit játszottam még vele. 22pF helyett 10pF-os kondikkal már beindul, de a LED sokkal gyorsabban villog mint kéne, és ezt is kicsit rendszertelenül teszi. Mintha restartolgatna. Értelmes kommunikációra(ISP) továbbra sem képes...

(*** ELTELT 3 óra ***)
Közben megnéztem újra az ATMega8 adatlapját, aminél arra emlékeztem hogy 20MHz-es. TÉVEDTEM!
Sajna csak 16-ot bír elvben, tehát a 20MHz már tuning volt a javából!
Volt a polcon egy ATMega48 amit tévedésből vettem meg, mert azt hittem hogy ha már láb-, akkor kódkompatíbilis is az ATMega8-al. Később beláttam a PonyProg képernyőjén, hogy a két kód minden bájtja különbözik.
Már készültem visszavinni az üzletbe becserélni egy ATMega8-asra, mert az kell az USB-s ISP programozókhoz és jópár haverom kért tőlem ilyet. Úgy néz ki, ez a becserélés el lesz napolva...

Be is izzítottam a mega48-at, kód újrafordítás, 25-ös kvarc bele, adatlapból kibányászom a FUSE biteket amiknek 60%-a más mint a mega48-on, és jééé! Megy 25MHz-en!!!
(#) zombee hozzászólása Ápr 19, 2010 /
 
Üdv megint.
Pár hétig pihent a projekt. Kis szenvedés árán le sikerült programozni a szinkronadó részt.
640x480@59Hz illetve 800x600@72Hz - es felbontásokat megcsináltam vele, ezeket lehet 25MHz-es kristállyal rendesen időzíteni.
A csúcsszuper LCD is megeszi, amire egy KVM switchen keresztül kapcsolom rá, így ugyanazon a monitoron tesztelhetek és kódolhatok...
Következő lépés a kiegyenlítés, mert a szinkron előállításnál sok az elágazás.
Az eleje tökéletes, és arra is kínosan úgyeltem hogy az interrupt keletkezésétől számítva ugyanakkor kapja meg a vízszintes szinkront és ugyanakkor fejezze be, a végén a számlálónál már elmászik kicsit, főleg azért mert egy bájtba semmi nem fér be(525 sor)

Jelenleg a kép közepére rajzol egy jónagy függőleges oszlopot. A széleken látszik egy kis ugrási terület, ami remeg, illetve a képre jellemző a zavaros megjelenés, hangyák háborúja.
A kép alsó hatodánál az oszlop határozottan jobbra csúszik, ennek oka a szinkronizáló függvényben az 512. sor elérése(persze ez 800x600-nál látványos):
Az 512. sor után a sorszámláló felső bájtja 2 lesz, ami által az alsó bájtot folyamatosan tesztelni kell, ez ad egy kis csúszást.
A csík rajzolója a fő hurokban van, amely folyamatosan figyel egy regisztert. Ezt a regisztert állítja be az interrupt, a rajzoló pedig lenullázza. A széleken való ugrás oka valahol a rajzolás kezdetnél keresendő.
(#) zombee hozzászólása Máj 31, 2010 /
 
Sziasztok!

Látom pang a téma, pedig vannak újdonságaim.
Készülget a VGA panelem, egy digitális órát jelenít meg óra:perc:másodperc bontásban.
Nyomógombokkal állítható mind a 3 érték + és - irányba.

800x600@60 felbontást használok, 20MHz-es kristállyal, és ATMega48 kontrollert.
Az egészet assemblerben írtam meg a kényes időzítés miatt.
A kódméret kevesebb mint 1.5KB karakter grafikával együtt(csak számok és a kettőspont), tehát ATTiny2313-on is elfutkorászna...
(#) icserny hozzászólása Jún 1, 2010 /
 
Itt is látható egy érdekes projekt: monokróm SVGA 800x600 felbontással PIC24H mikrovezérlővel.
Következő: »»   2 / 2
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem