avatar_Hattuşa

grafik tasarımı YARDIM

Başlatan Hattuşa, 06 Mart 2012, 22:16:39

Mucit23

Değişen birşey yok hocam. Bende aslında sizin anlatmak istediğinizi söylüyorum. Yeni grafiği çizmeden önce eskisi silinmesi gerekiyor.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Hattuşa

slm
ya ustalar hatalı da olsa basit 1-2 satır kod yazsak acaba onun üzerinden hatalarımızı denetleyerek ilerleyemeyiz mi? inanın söylediklerinizi anlamakla beraber nasıl olacağı konusuna fransız kalıyorum.  ;D

Hattuşa

ayrıca bakın burda protoncunun birisi dairesel olarak bir grafik oluşturmuş, isisde bunda da yatay çizgiler oluşuyor, aklıma acaba isisin azizliği olabileceği fikri ağırbastı, belki reelde bu sıkıntı olmayacak.
işte konu ile ilgili site linki ve uyarladığım bas ve isis dosyası

http://www.protonbasic.co.uk/archive/index.php/t-55129.html

Mucit23

Yarın ben birşeyler deniyeceğim.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Mucit23

#19
Hocam Ben birşeyle yapmaya çalıştım. Büyük orandada hallettim. Fakat isis bu iş için çok yavaş kalıyor. Normalde ben timer ile her 1 snde bir ölçüm alıp ekranı güncellerim diyodum ama isiste buna gerek kalmıyor. ADC okuma, ekranı güncelleme vs yaklaşık 1sn civarı sürüyor.
Diğer bir sorun ise ben yeni grafiği basmadan önce eskisini siliyordum. Bunuda yapmak yanlış. Grafik boyu kadar çizilip gerisi silinmesi gerekiyor. Burada birazdaha çalışmak gerekiyor
Bi video çektim.
http://www.youtube.com/watch?v=LiwIwc6KRik&feature=youtu.be
Ben akşam vaktim olursa denerim. Deneme imkanı olanlar deneyip sonucu bildirirse sevinirim.
'****************************************************************
'*  Name    : Grafik.BAS                                        *
'*  Author  : FERHAT YOL                                        *
'*  Notice  : Copyright (Mart2012)  Grafik çizme uygulaması     *
'*          : All Rights Reserved                               *
'*  Date    : 01.06.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Device 18F452

Config_Start
   OSC = HS ; HS osc
   OSCS = OFF ; Disabled
   PWRT = On ; Enabled
   BOR = OFF ; Disabled
   WDT = OFF ; Disabled
   CCP2MUX = OFF ; Disable (RB3)
   STVR = OFF ; Disabled
   LVP = OFF ; Disabled
   Debug = OFF ; Disabled
Config_End

Xtal 20
TRISA=%00000001
TRISB=%00000000
TRISC=%00000000
TRISD=%00000000
TRISE=%00000000

PORTA=0:PORTB=0
PORTC=0:PORTD=0
    PORTE=0
PORTB.5=1                          'GLCD RESET=1
LCD_DTPort = PORTD                 'GLCD DATA PORTLARI PORTD'YE BAĞLI
LCD_RSPin = PORTB.0                'GLCD RS PİNİ PORTB.0 BAĞLI
LCD_ENPin = PORTB.2                'GLCD ENABLE PİNİ PORTB.2 BAĞLI
LCD_RWPin = PORTB.1                'GLCD RW PİNİ PORTB.1 BAĞLI
LCD_CS1Pin = PORTB.4               'GLCD CS1 PİNİ PORTB.4 BAĞLI
LCD_CS2Pin = PORTB.3               'GLCD CS2 PİNİ PORTB.3 BAĞLI
LCD_Type =  Samsung                'GLCD TİPİ GRAFİK KS0108 128*64B WİNSTAR
Declare Internal_Font = On
Declare Font_Addr = 0
Declare GLCD_STROBE_DELAY = 5
;GLCD_EXTERNAL_PRINT = PPRINT
Declare Adin_Res 10       ' 10-bit result required
Declare Adin_Tad FRC    ' RC OSC chosen
Declare Adin_Stime 10     ' Allow 50us sample time
ADCON0=%00000001
ADCON1=%11001110
;INTCON=%1000000
;INTCON2=%10000000
;T0CON=%11000101
;On Interrupt GoTo KESME
;TMR0L=131
;Symbol INTFLG=INTCON.2
;SYMBOL TMR0ON=INTCON.5
Symbol GDONE=ADCON0.3

Dim HAM As Word
Dim ASC As Byte
Dim SYC As Byte
Dim SN  As Byte
Dim YPOS[128] As Byte
Dim X   As Byte
DelayMS 200
Cls
GoSub DOLDUR
BASLA: 
HAM = ADIn 0:If GDONE=1 Then BASLA
ASC=63-(HAM+1)/16;Gelen ADC değeri Tersleniyor
If ASC=255 Then ASC=0
GoSub KAYDIR
GoSub EKRAN         
GoTo BASLA

EKRAN:
  For X=0 To 127
    Line 0 , X , 63 , X , 0       ;EKRANI SİL
    Line 1 , X , YPOS[X] ,X, YPOS[X-1] 
  Next
  Line 1,127,ASC,127,YPOS[126]
Return

KAYDIR:
For X=0 To 126
  YPOS[X]=YPOS[X+1]
Next
YPOS[127]=ASC
Return

DOLDUR:
For X=0 To 127
  YPOS[X]=63
Next
Return

;Disable
;KESME:
;SYC=SYC+1
;TMR0L=131
;INTFLG=0
;Resume
;Enable
Include "FONT.inc"
End


Hocam kodlarda başka iyileştirme yapılabilirimi Ben biraz üstün körü yaptım. Galiba birtek sorun şuanda hız ve eskiyi silip yeni grafiği çizmek. Burada birazdaha çalışmak gerekiyor.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Hattuşa

s.a.
mucid usta ya şu verdiğiniz kodu ben 18f4520 de çalıştıramadım, üstte tek satır iki düz çizgiden başka görüntü gelmiyor isisde acaba isisin azizliğimi?

Mucit23

Sigorta yarlarına dikkat et. Muhtemelen sigorta ayarlarıyla alakalı bir problemdir. 18F4520 nin sigortaları çok gelişik. Çalışmayı engelliyecek birçok sigorta var. Ayrıca 18F4520 nin ADC ayarlarıda farklı olabilir 18F452 ye göre.

Diğer yandan ben denedim yazılımı. Açıkçası gerçekte birazdaha hızlı çalışır diyordum ama yok simülasyondakinin aynını görüyorum. üstelik grafik sola kaydığı zaman grafiğin güncellenmesini açık bir şekilde görebiliyor insan.
Bence Line komutu bu iş için uygun değil. Sebebine gelince, Çizginin konumunu ekrandaki konumunu belirleyen 4 adet faktör var. Bu faktörlerin hesaplanması glcdye  gönderilecek dataların hesaplanması vs çok uzun sürüyor anlaşılan. Buda yapılan tüm işlemleri aşırı derecede yavaşlatıyor haliyle. Bence ekrana bir grafik çizilecekse uygulanacak en son yöntem bu olmallı.

Benim Başka bir önerim daha var ama bunun üzerinde birazdaha çalışmak lazım.
Protonda Plot ve Unplot komutları var. Bu komut ile ekranın istenilen noktasına sadece nokta koyuluyor.

Plot Ypos, Xpos ve Unplot Ypos, Xpos şeklinde kullanımı var. Plot komutu belirtilen kordinata nokta koyuyor. Unplot ise bu işlemin tam tersini yapıyor. Yani noktayı siliyor.

Sadece X ve Y eksenindeki kordinatları belirtmek yetiyor. Başka birşeyi yok.
Bu komutla istenilen kordinata nokta koyarız ama sadece nokta koymuş olur. ADC nin anlık değerini göstermekten başka bir işe yaramaz. Ekrana plot komutuyla çubuk çizmek deveye hendek atlatmak gibi birşey.

Bence Bu iş PicBasic Pro ile Daha güzel yapılabilir. Ama şu kesindirki PicBasci ile yapmak çok daha zor fakat Proton işlemciyi okadar çok makyajlıyorki artık işlemcinin gerçek yüzünü göremiyorsun. Bazı özellikleri dışında PBP herzaman daha iyi kalıyor. Mesela Ben çok uğraştım Proton ile GLCD kullanırken 25Mhz nin üzerine çıkamadım. 30Mhz ve üzerinde GLCD saçmalamaya başlıyor. 40Mhzde kökten saçmalıyor. Nedir Neyin Nesidir bir türlü anlayamadım.

Ete hocam Sizin bu konuda başka bir fikriniz varmı. Bu işi nasıl akıcı hızlı bir şekilde yaparız.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Hattuşa

s.a.
mucid usta vermiş olduğunuz kodu 18f4553 te reel olarak denedim, kod çalışıyor ve ben isisin azizliğine uğramışım ama kodda şu sorun var, usta grafik çok yavaş hemde oldukça yavaş, önerilerinizi bekliyorum, aslında fena sayılmaz bu grafik yani başlangıç için fena değil.

ete

#23
Mucit,

Bir iki GLCD denemem oldu. Onlarıda normal frekanslarda çalıştırdım. Her şeyi kendim tasarladım ve yapıp verdim. Ticari proje idi zaten. Onun dışında pek kullanmadım GLCD. Bence her şeyin bir sınırı olduğunu kabul etmek gerekiyor. GLCD işi özellikle grafik vede kayan grafik çizdirmek çok varki alan bir işlem. Bu nedenle daha fazla hızlanması bence imkansız gibi geliyor bana.
Tabiiki hız işlemci çalışma frekansı ile alakalı. Ama belirli bir hızdan sonra GLCD komutları ekran işlemcisi tarafından algılanamıyor. Yaşadığın sorun ondan kaynaklanıyodur.. Normal karekter displayde bile yüksek frekanlarda komut gecikmesi koymak zorunda kalıyoruz. Koymaz isen display sapıtıyor. Benzer durum  GLCD de de oluyor demekki.

Benim yapabileceğim bir şey yok maalesef.

Ete

Mucit23

Hocam aynen dediğiniz gibi. Protonda GLCD komutlarını yavaşlatan komut var ama ben bu komutun 20mhzden sonra herhangi bir işlevini göremiyorum. Aslında Bu Program basicde yazılsa sorun çözülebilir çözülmeyecek işler değil. KS0108 in datasheedinde bakınca dataların içeri alınması için gereken min. süreler belirtilmiş. Bu sürelerin altına inmedikten sonra hiçbir problem çıkmaz. GLCD yi de geçtim. Belkide Basic ile Grafik oluşturmada en kolay GLCD yi sürmek. İşin Güzel Tarafı Basicde GLCD Desteği olmadığı için kontrol sizde oluyor. Bence Picin el verdiği sürece istediğiniz hızda Basic ile GLCD çalıştırılabilir. Çünkü kontrol sizin elinizde oluyor. İstediğiniz yere istediğiniz kadar delay koyabilirsiniz. Benim Gözümü Kordinat belirleme ve çizgi çizmek çok korkutuyor. Nasıl yapabilceğim hakkında  en ufak bir fikrim yok.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Dediklerin doğru olabilir ama hazır komutların kullanışlığınıda yabana atmamak gerek. PBP da bir eğri çizgi çizdirmek epeyce program yazmayı gerektirir. Uygun bir algoritma yaratmak ve işi formülize edebilmek için 3-5 gün kafa yormak gerekebilir.
Benide gözümü korkutan bir iş açıkçası.
Ete

Mucit23

Hocam Vaktim olunca Aynı işlemi birde CCS ile yapmayı deniyeceğim. Aslında şimdi CCS nin GLCD kütüphanesini inceledim. GLCD kullanımı hakkında birçok fikir veriyor. İçerisinde güzel algooritmalar var. Aklınızda bulunsun hocam

Birde ben bu işlemleri hızlandırırsam eğer ortaya osiloskop gibi birşeyler çıkmazmı?
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Powered by EzPortal