18F4550 USB BOOTLOADER GLCD SORUNU

Başlatan xemre89, 19 Mart 2014, 21:20:58

xemre89

Arkadaşlar merhabalar 18f4550 ve wg128x64c modeli glcd kullanarak bir gameboy yapmaktayım basit bir program yazdım ekranda bir dikdörtgen kutuyo sağa sola yukarı aşağı oynatmak için hex dosyasını pickit 2 kullanıp pic'e yazdığımda sorunsuz şekilde çalışıyor, 5 tane 18F4550 için yazılan bootloader denedim bağlantılarımı 100 defa kontrol ettim programı yazıyorum bootloader ile buraya kadar bir sorun yok pc görüyor fln yalnız program çalışırken ekranda kutu dışında pixellerde yanıyor kutuyu oynatınca hepten bozuluyor. 20 mhz kristal kulanıyorum ve usb ile yazdığımda kutu daha hızlı hareket ediyor acaba ekran picin hızına yetişemiyor mu yada usb yollarındaki parazit elektromanyatik alan yada dirençten dolayı program düzgün yüklenmiyormu sorun ne olabilir ( pc pici sorunsuz görüyor ve yazıyor.) Bütün bootloaderlarda aynı sorun var yazdığım programı ve ne anlatmak istediğimide resimlerle göstermeye çalışayım.













program
/*******************************************************
      PIC18F4550 ile Grafik LCD Uygulaması
*******************************************************/

#include <18f4550.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#include <usb_bootloader.h>


#fuses HSPLL,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay (clock=48M) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#include <HDM64GS12.c> // HDM64GS12.c dosyası programa ekleniyor
#include <graphics.c>  // graphics.c dosyası programa ekleniyor

int x1,x2,y1,y2;
 


/********* ANA PROGRAM FONKSİYONU********/

void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı
   
   set_tris_C(0x0f);


   glcd_init(ON); // Grafik LCD hazırlanıyor ve ekran siliniyor
   
   x1=54;
   y1=59;
   x2=74;
   y2=63;
   
   glcd_init(ON); // Ekran siliniyor
   while(1)
   {

   
   A:
     
 
     glcd_rect(x1, y1, x2, y2, yes, on)  ; 
    {     
     if(input(PIN_C1)==1)
     {
     x1=x1-1;
     x2=x2-1;
   
     
      glcd_init(ON); // Ekran siliniyor
      GOTO A;
      }
     }
       {     
     if(input(PIN_C2)==1)
     {   
     x1=x1+1;
     x2=x2+1;
      glcd_init(ON); // Ekran siliniyo
      GOTO A;
      }
     }
         {     
     if(input(PIN_C6)==1)
     {
     
     y1=y1+1;
     y2=y2+1;
     
      glcd_init(ON); // Ekran siliniyo
      GOTO A;
      }
     }
         {     
     if(input(PIN_C7)==1)
     {
     
     y1=y1-1;
     y2=y2-1;
     
      glcd_init(ON); // Ekran siliniyo
      GOTO A;
      }
     }

}

z

X1,X2,Y1,Y2 degerlerini butonlarla degistiriyorsun fakat sinir degerleri asti mi diye kontrol etmiyorsun.

Mesela X1 icin konusursak, X1=0 olduysa butona basilsa bile eksiltme.

Yada X1=max degeri aldiysa butona basilsa bile artirma.

Bu kontrolu 4 degisken icin de ayri ayri yap bir de oyle dene.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

xemre89

Ben onu ölesine yazmıştımda daha sınırlara ulaşamadan bozuluyo :(

aydınD

merhabalar
usb ile çalışmalarda ugur yalçın ın çalışmaları mevcut
bir de css c pic kitabı örnekleri var internette araştırarsan senin yaptığın uygulamanın aynısı olacaktı
iyi çalışmalar

xemre89

ben mcu pll ile 48 mhz çalıştığı için glcd sorun çıkarıyor diye düşünüyorum ama nasıl çözeceğimi bilmiyorum bu sorunu

RaMu

Datasheet te
2.3 Oscillator Settings for USB (syf 32)
bak gereken konfigurasyon tablosu var,
usb 48 mhz de çalışır fakat bu esnada md.yi 4 mhz dede çalıştırabilirsin.
Örnek;
18f2550 için kullanmıştım
#FUSES NOWDT, WDT128, XT, NOPROTECT, NOBROWNOUT, BORV20, PUT, NOCPD, STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, IESO, FCMEN, NOPBADEN, NOWRTC, NOWRTB, NOEBTR, NOEBTRB, NOCPB, MCLR, LPT1OSC, XINST, PLL1, CPUDIV1, USBDIV, VREGEN
#use delay(clock=4000000)
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

z

USB rutinlerini gecici olarak devre disi birak. GLCD'deki bozulma devam ediyormu?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

xemre89

usb rutini derken ben aynı programı pickit 2 ile atıyorum doğrudan bozulma olmuyor, RAMU sanki biraz düzeldi gibi ama hala bozulma oluyor.
bootloader 20 mhz için yazılmış 48 mhz de çalıştırıyor en baştaki kodlar bootloaderın kodları olduğundan bnm yazdığım programdaki zaman ayarı işlemiyor gibi, ccs c de protondaki " declare glcd_strobe_delay = 60000 " gibi bir komut yokmu acaba ?

RaMu

Evet yanlış hatırlamıyorsam bootloader kullanıldığında
bootloader içindeki configuration ayarları pice yüklenir
ayrıca programda konfig değişikliği yapamayabilirsin
(bunu net hatırlamıyorum ama böyle birşeyler vardı)
pic 20 MHz de çalışıyor anlaşılan
böyle olunca glcd kütüphanesinde delay_cycles(??);
komutları varsa yeterli süre geçiremiyor olabilir
genelde 2*13 lcd lerde bu problem oluyordu
bizde lcd kütüphanesini (#include <HDM64GS12.c> ve #include <graphics.c> misal) açıp
içerisindeki delay_cycles(??) komutlarının sürelerini uzatıyorduk,
herhalde protonda dediğin komut bunu kendi yapmış oluyor
ama ccsc de böyle bir komutla karşılaşmadım belki vardır bilemiyorum.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

xemre89

#9
AA oldu ramu kardeşim sen bitanesin ya :)))  HDM64GS12 içindeki 4 adet  delay_cycles komutu içindeki değerleri 10 kat artırdım ve farklı kaydettim HDM64GS12R diye attım usb bootloaderla oldu biraz daha yavaş hareket ediyo kutucuk ama onu optimize ederim ben on numara oldu Allah rağzı olsun sizden kaç aydır çözememiştim çok mutlu oldum :))

RaMu

Hayırlı olsun,
ayrıca helal olsun iyi direnmişsin 1 ay :)
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html