Vga ve pic.. Bu kadar zor olmamalı !

Başlatan EMG81, 12 Nisan 2011, 01:35:20

EMG81

Selam beyler.

Pic ile VGA dan monitöre büyük fontlarda yazılar yazdırıcam.
2 adet pic im mevcut. Bir adet 16F628 sync için. Diğer pic im de 18F6410.

Neden böyle çünkü 18F6410 un görevinin sadece ekrana data basmak olmasını istedim. İnterruptlarla uğraşmamak + en küçük pixellerde görüntü elde edebilmek için.

Sıkıntılarımdan bahsedecek olursam.
1- Sync pic i ile tamı tamına (TMR0 interruptı ile yaptım.) senkronizasyon sinyalleri elde edemedim. Monitör sürekli 5-10 snde 1 Standby a girip sonra açık moda geçiyor.
http://www.javiervalcarce.eu/wiki/VGA_Video_Signal_Format_and_Timing_Specifications
Bu linkteki sinyal zamanlamaları ile yaptım.
Sanırım senkron kayıyor ama TMR0 veya programımdan değil. V senkron palsleri düzgün onda sıkıntım yok fakat sanki H palsleri tam oturtamadım.

2- Monitörü H palsi geldikten sonramı tarıyacam yok sa V palsimi? Yada her 2 simi ?
Açıkçası önce bana VGA nın çalışma mantığından biraz bahsetseniz çook iyi olacak gibi.


EMG81

#1
Tamam da ben şuan sinyallere takılmış durumdayım ve ilk bunu çözmeliyim.

Önce ne göndericem sonra ne göndericem? 640x480 çözünürlük ile çalışıyorum.

Şuan şu şekil yapıyorum ve ekran kendini 10 sn de 1 açıp kapatıyor.

Başlangıç
V sinyalini 0 a çekip 63 uSn bekliyorum sonra 1 yapıyorum.

H sinyalini 0 a çekip 4 uSn bekliyorum. sonra 1 yapıyorum.      -
25 us bekliyorum.                                                               -} Bunları 480 kez yapıyorum.
                                                                                        -
Sonra başlangıç a dönüyorum.

EMG81

#2
Ekran dataları için Paralel ram im var. O sebeple işim biraz kolay. yani ram i hazırladıktan sonra direk ram de ne varsa ekrana basıcam. Sadece resim gibi bilgiyi basıcam ve geçiem.

pic ile 25 Mhz çalışamıyacağıma göre.
Pixel frekansını
25/5
yada 25/10 kadar yavaşlatarak çalışıcam.

Şu H ve V sinyallerini and lemeyi anlamadım yalnız.

EMG81

#3
Evet halen başarısızım.
pic ile 100 ns ilk kesme nasıl elde edeyim ? :D zaten 40Mhz, 10MIPS çalışıyorum. TMR0 min. 1/2 artışla arttığına göre TMR0 taşması değilde kontrolü ile en erken 1 us lik kontorl yapabiliyorum.

Tekrar ediyorum. Amacım büyük fontlar ile ekrana sadece Yazı yazdırabilmek. 10 Mhz lik pixel sinyali benim için çok fazla

kardes

Neden hala PIC ile çırpınıyorsunuz kardeş?atmega kullansan ya sayın kardeş

EMG81

Çizdiğim kartta oda mevcut. 2 alternatif li olmasını istedim. 20MPIS lık atmega da kullanabilirim. Ben şuan daha VGA yı anlamaya çalışıyorum SN. KARDEŞŞ

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

EMG81

#7
@Bunalmış

Verdiğin sitelerdeki Sinyal şekillerini önceden de incelemiştim. Şuan 2 şekilde monitörü stand bydan çıkartabiliyorum.

1.si monitör 10 sn de 1 kendini aç kapa yapıyor ama renk bilgisi basabiliyorum.
2.si monitör hiç kendini aç kapa yapmıyor, sanki senkron oturmuş gibi ama ekran kap kara renk bilgisi göndersem dahi hiç birşey çıkmıyor.

Bunlarıda V sinyalinin low da kalma süresini değiştirerek oluyor.

LCD monitör kullanıyorum ve LCD kullanmam lazım. Sıkıntı burada olabilirmi ? yada olamazmı ?

z

Ekrani kaca kac kullanacaksin?

Bana bu degeri verirsen windowsdan bu ayari yapip scopla senkron sinyallerinin zamanlama degerlerini izleyip cizecegim diyagrami resim formatinda bir yerlere yuklerim.
Sana yapabilecegim tek iyilik bu olabilir.

Monitor neden kendini kapatir bu konuda hic bir fikrim yok. Screen saver ozelligi olabilirmi?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

EMG81

#9
640x480 çözünürlükte çalışacaktım fakat. Şimdi aklıma birşey geldi. Şu an karşımda duran LCD 16:9 oranında. Diğer tüm uygulumalara baktım. Monitörler hep 4:3 oranında. Acaba bu çözünürlüğü desteklemiyor olabilirmi diye düşündüm ? Haklı olabilirmiyim ?

640x480 ve
800x600 ün scop görüntülerini gönderebilirsen çok makbule geçer.

Monitör ün kendini kapatması büyük ihtimalle (ki daha farklı bir şey olacakğını düşünmüyorum. Çünkü monitör sağlam ve pc ile kullanılıyor) Sinyalleri tam tutturamamamdan kaynaklanıyor.

z

#10
640x480 cozunurluk desteklenmedigi icin 600x800 moduna iliskin verileri alabildim.

Sozel de kolayca anlatabilecegim icin diyagram cizmekten vazgectim.

Pin 14: Vsync   1 suresi 106 mikrosaniye,  Frekans 60.35Hz  (Normalde lowda bekleyen sinyal)

Pin 13: Hsync   0 suresi 3.2 mikrosaniye, Frekans 38 Khz (26.3 mikrosaniye)  (Normalde highda bekleyen sinyal)

umarim isine yarar.

Vga pinleri icin http://pinouts.ru/Video/VGA15_pinout.shtml

13 nolu pinden 38Khz değilde 60.35Hz okudum. Dokumandan da gorulecegi uzere bu pin composite sync. olabiliyormus. Bu nedenle scop 60.35 Hz e kafayi takmistir.
Degerleri verebilmek icin Hsync peryodunu ve burdan hesapladigim frekans degerini yazdim.

VGA pin    new function
9     Optional +5V output from graphics card
12     Bidirectional data line (SDA)
15     Data clock (SCLK)
The signals in the data bus are standard I2C signals. The computer provides 15 kohm pullup for the SDA and SCLK lines. Monitor must provide 47 kohm pull-up on SCLK line.


Pin 12 ve Pin 15 den +5V hattina 15K lik direncler atmayi dene. Belki bunlara kiziyordur.

Herhangi bir moda gecis icin monitore o moda iliskin frekansda Vs ve Hs gondermeden once  I2C den seni su moda geciriyorum gibi bir bilgi gidiyor olabilirmi?

PC, I2C hattindan monitore neler yaptirabiliyor?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

EMG81

I2C hattından benim bildiğim.

Monitöre hakkında bilgiler markası seri nosu vs şeyler okunabiliyor. Fakat mod değişimi için kullanıdığını pek sanmıyorum çünkü;

Sadece RGB, H, V  ve GND si olan bir kablo yaptım monitör yinede çalışıyor.

Sıkıntı sinyallerimde.

Anlattıkların ile Nette bulunan sinyaller hiç uyuşmadı. BU sebeple kafam çok karıştı.
Bu zamanlamalar ile yarın bir deneme yapıcam. Eğer şu işi başarırsamda birdaha MCU ile VGA dan çalışmıyacam :)

EMG81

Dur dayanamadım ve denedim. :)

Sonuç şu;
Monitör yine stand by dan çıktı hiç kendini aç kapa yapmıyor fakat kap kara. renk bilgilerini kabul etmiyor.

z

#13
Evet internette yazanlarla benim olcum yaptigim durum arasinda tek fark senk sinyallerinden birisinin invert edilmis hali. Neden boyle ben de bilmiyorum.
monitore bir de

vs -  hs
inv - inv
inv - ninv
ninv- inv
ninv- ninv

girmeyi dene.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

çonçon

Aşağıdaki link işinize yararmı bilemiyorum ama incelemekte fayda var bence .

http://www.robitshop.com/PICASO-Universal-Base-Board,PR-80.html