Vga ve pic.. Bu kadar zor olmamalı !

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

iyildirim

18F leri pek bilmiyorum. Ancak H/W PWM timer la üretiliyor.
Senkron sinyallerinde frekans ve duty si başta hesaplanıp ayarlanmış bir pwm artık kendi kendine senkron sinyallerini üretir.  Buradaki sorun yatay ve dikey tarama frekansların daki farklılıktan dolayı yatay tarama nın PWM çözünürlüğünün düşük olması olabilir. Bu durumda dikey tarama direkt timer ile oluşturulabilir.
Ancak veri basmaya başlama anı timer kesmesi içerisinde anlaşılabilir.

Frekans ve duty si ayrı ayrı ayarlanabilen 5 kanal pwm ile senkron ve renk sinyalleri oluşturulabilmeli.

EMG81

PWM ile değilde Timer lar daha kullanışlı oluyor. Şimdi HD monitör ün sıkıntısını çözdüm. H sinyalim le biraz oynadım. 21 uSn High ta tutunca sıkıntım çözüldü.(Tabi bunu bulana kadar yüzlerce deneme yaptım :) ) Fakat Full HD monitörümde halen sorunum var. Bu akşam Skop ile kontrol edicem sinyallerimi. Sonucu yazarım.

EMG81

#32
Evet. Sonunda başardım arkadaşlar. Sorun H sinyalimde imiş. Programda bunalmışın verdiği sinyal zamanlarına göre yaptığımı sanıyordum ama skop un probunu dayadığımda farkettim 1 mikro saniye daha high ta bekliyormuş tabi buda genel e vurunca baya bi fark ve sinyal kayıklığı yaratıyor. ŞuanTüm monitörleri de açabiliyorum. Dikey ince çizgiler de çizdirdim. Şimdi font tanımlamaları yapıcam.

1 Adet paralel ram im var. Ekran görüntüsünü en başta ram e yazıcam. Sonra Ram in sadece adres portu ile oynayarak ekrana görüntüyü aktarıcam.
Önermek istediğiniz daha farklı ve hızlı çalışabilecek metodlara ve bilgilere açığım.

EMG81

#33
Evet Beyler Gelebildiğim son noktayı sizinle paylaşıyorum.

[IMG]http://img850.imageshack.us/img850/961/oken385.jpg[/img]


Resimde belli olmuyor ama Ekran yukarı doğru kayıyor. Tıpkı eski model siyah beyaz tüplü televizyonlarda resmin kaydığı gibi.. Monitör ümün Menü tuşuna basınca 640x480 60 Hz olduğunu söylüyor bana. Sinyal gönderimlerim de doğru... Zaten yanlış birşey yapınca ekrana hiçbirşey çıkmıyor. Sizce neyi göz ardı ediyor olabilirim ?   ???

z

Dikey senkron frekansini bir kac hz asagi yukari kaydirmayi dene.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

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

fryrmnd

#36
hocam ellerinize sağlık. hocam daha önce 18 veya başka bir seri ile denediniz mi. ben de 18 seri ile bir deneme yapacağım. yoksa  hiç bulaşma stm32 ile mi yap dersiniz. (stm32 pcb basmak ,lehimlemek vs 18f daha kolay olduğundan dedim)

z

Bu uygulamayi tamemen yazilimla ilk kez yaptim.

9x7 karakterlerle ekrani 40x50 text alan olarak kullanan ornek uygulama, ARM islemciyi bile yoruyor. Fakat DMA ve SPI gibi unitelerle ise yarar bir seyler olusturulabilir.

PIC18 serisinde nasil olur hic fikrim yok.

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


EMG81

#39
@Bunalmış. Tebrik ederim, Çok güzel gözüküyor.

18F yada türevleri ile de oluyor. Olduda. Fakat fontlar sadece biraz daha büyük oldu.
Bu tarz işlemciler bu iş için hiç uygun değil. Kesinlikle tavsiye etmiyorum.

Tüm iş senkron palslerinin kalitesinde, yada kalitesizliğinde bitiyor. Yavaş işlemci ile de bu palsleri istenilen zamanlarda üretmek çok zor oluyor.


Hadi bakalım size güzel bir soru

Piyasada 640x480 veya 800x600 TFT driver chipleri var.
24 bit. (R8,G8,B8) H,V sync çıkışları var.
RGB çıkışlarını Video DAC ile Vga e versek, ortaya ne gibi bir sonuç çıkar ?


mcan

Merhaba ,
Düşey ve yatay tarama frekanslarını (hsycn,vsycn) anladığım kadarıyla ,kabaca,ekranın çerçevesi içinde kalan süre boyunca 1 diğer zamanlarda 0 yapıyoruz..Peki pixelleri hangi düşen kenar yükselen kenar yada neye göre değiştiriyoruz?Örnek olarak atıyorum toplamda hsycn nin bir olma durumu 10us olsun , yatayda 10 pixel için 10us boyunca 1 us aralıklarla r g b uçlarındaki voltajı kontrol mü ediyoruz?yatayda 2 pikselimiz olsun istersek;  5 us "Red" yi 0.7 diğer 5 us de ise "Green" yi 0.7 yaparsak ekranın ilk satırının yarısı kırmızı diğer yarısı da yeşilmi olacak? Yataydaki piksel sayısını ne belirliyor? Ayrıca tüp monitördeki elektron hüzmesinin yataydaki konumu sürekli biçimdemi artıyor yoksa giren senkronizasyon sinyalinin belirli katları halinde kesik kesik hareket ediyor?Sanki yatayda istediğimiz kadar piksel koyabilirmişiz gibi geldi bana.Dikeyde sanırım kesik kesik - atlaya atlaya ilerliyor yoksa çapraz görüntü oluşurdu bence...

yamak

Alıntı YapPiyasada 640x480 veya 800x600 TFT driver chipleri var.
24 bit. (R8,G8,B8) H,V sync çıkışları var.
RGB çıkışlarını Video DAC ile Vga e versek, ortaya ne gibi bir sonuç çıkar ?

Bu bahsettiğiniz tft bu mantıkla mı çalışıyo? Yani DAC a gerek var mı? Herbir renge ait bitlere belirli değerler verdiğimizde ona göre renkler oluşmuyo mu? Mesela R=11101101,G=10000101,B=00110010 yaptığımızda bu değerlere göre bi renk oluşuyo.Yani renk oluşturmak için analog sinyale gerek yok.Yanlış mıyım?

z

#42
Bu proje %99 yazılımla yapılmaya kalkıldığında işlemcinin hızı çok önemli oluyor. Burada işlemcinin kaç bit olduğunun değil hızının önemi var.

Projede donanımdan sadece timerı kullandım. Bu sayede yazılımın ürettiği senkron palsları ve video işareti timera senkron oldu.
Eğer timerı da kaldırıp atsak bu projenin gerçeklenebilirliği nerede ise imkansız olurdu.

C ile yazdığım programın video sinyali üreten fonksiyonunu malesef asm ile yazmak zorunda kaldım.

Komşu her bir pixelin 80ns boyunca on yada off, olacağı düşünülürse nsler meretebesinde yapılacak hatalar (1 eksik, 1fazla makine kodu koşturumu) pixellerin biraz sağda biraz solda oluşumuna dolayısıyla da ekrandaki görüntüde gürültüye neden oluyor.

Öte yandan CPU clk sinyalinin de monitörün beklediği video işaretinin tam katları olmak zorunda.

Gerçi bu durum monitörün LCD mi yoksa CRT mi olduğu ile çok alakalı. CRT monitörde görüntüyü gürültüsüz kılmak daha basit diye düşünüyorum.

Şu an yayınladığım kaynak kodlarda bu dedikleriminden bir haber kod yazmıştım. Sonradan gürültünün nedenlerini araştırınca yazılımı tekrardan değiştirmem gerekti.

Eğer ARM işlemcinin DMA ve SPI ünitesi kullanılırsa yazılımın yükü inanılmaz şekilde düşer ve bahsettiğim gürültü sorunları kalkar. VGA projesi asıl projenizin bir köşesine iliştirilebilir. Böylece ekran ihtiyacı gerektiren projelerinizde ucuzundan bir PC ekranını kullanabilirsiniz.

Bu arada bizim STM32F4 çipinden, aşağıda açıkladığım sorundan dolayı birazcık soğudum.

Sorun şu;

Diyelimki bir pini toggle eden çok dikkatlice yazılmış minicik bir asm kod parçasını peş peşe 10... 20 kez kopyaladınız.

Her bir toggle süresinin (kodun int ile kesilmediğini garantilersek) ns ler mertebesinde eş olması beklenir. (Çünkü aynı asm kodları peş pele kopyalamıştık)

Bizim çipte CPU clk ile APB bus aynı frekansı kullanmadığından mı yoksa PLL de jittermi var yoksa piple line mekanizmasında mı sorun var  anlamadım, toggle süreleri arasında minik farklar oluşuyor.

Bu da aynı boyutta olması gereken pixellerin bazıların ince bazılarının şişman olmasına neden oluyor. Üretilen sinyal scopla gözlendiğinden STM'nin TI karşısındaki notunu kırdım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

iyildirim

Alıntı yapılan: bunalmis - 30 Ekim 2011, 15:15:41
Bizim çipte CPU clk ile APB bus aynı frekansı kullanmadığından mı yoksa PLL de jittermi var yoksa piple line mekanizmasında mı sorun var  anlamadım, toggle süreleri arasında minik farklar oluşuyor.

Hocam,  bu bozulma (jitter-glitch vs.) SPI clock veya donanımsal PWM gibi modül çıkışlarında da varmı. Hiç bu çıkışları incelediniz mi ?

z

Alıntı yapılan: iyildirim - 30 Ekim 2011, 15:53:09
Hocam,  bu bozulma (jitter-glitch vs.) SPI clock veya donanımsal PWM gibi modül çıkışlarında da varmı. Hiç bu çıkışları incelediniz mi ?

Henüz SPI ve PWM e bakmadım.

Sorunu anlatabilmişimdir ama bir de görsel örnek vereyim.

Mesela yazılımla nokta bosluk nokta bosluk şeklinde pals üretiyorum.

Ekrandaki hatta skoptakı görüntü yandaki gibi oluyor. ...........

halbuki ................ olması lazım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com