Grafik Ekrandaki görüntü akışı hızlanmıyor?

Başlatan musti463, 24 Aralık 2013, 19:17:53

musti463

Merhaba,

PIC18F46K22 ile GLCD sürüyorum. 4MHz kristal yerine 20MHz kristal taktım fakat resmin grafik ekrana basılma hızı 4MHz deki gibi yavaş.Yazılımıda 20Mhz olarak değiştirdim fakat yine aynı yavaşlıkta.

Devre bağlantıları ve programı bu linkteki paylaşımım ile aynı https://www.picproje.org/index.php?topic=48886.0

Birde şunu ekliyim kristali çıkarıp çalıştırdım sistem kristalsizde aynı hızla çalıştı hiçbirşey anlamadım :)

PIC kodu da bu:

#include <18F46K22.h>
#Device PASS_STRINGS=IN_RAM

#include <T6963C.c>
#include <Resimler.h>



#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOPLLEN                  //4X HW PLL disabled, 4X PLL enabled in software
#FUSES PUT                      //Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES WDT_SW                   //No Watch Dog Timer, enabled in Software
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)


#use delay(clock=20000000)
#use fast_io(B)




void Resim_goster(int16 resim_baslangic, int boyut_x, int boyut_y, int16 nereden_x, int16 nereden_y)
{
   int i,sutun,satir,sutun_boy,satir_boy;
   int16 konum;
   
   konum = resim_baslangic;
   
   sutun_boy = boyut_x / 8;
   satir_boy = boyut_y;
   
   for(satir=0; satir < satir_boy ; satir++)
   {
      for(sutun=0; sutun < sutun_boy; sutun++)
      {
         
         glcd_pixel8(nereden_x + (sutun * 8), nereden_y + satir, resimler[konum]);
         konum++;
      }
   }
}


void main()
{
   char font_deneme[]={"Font Denemesi"};
   
   setup_wdt(WDT_OFF); 
   setup_adc_ports(NO_ANALOGS); // An0-An1-An3 Portları Analog giriş için ayarlanıyor
   
   
     
   glcd_init(240,128); // Grafik LCD ektran hazırlanıyor
   glcd_WriteByte(1, (LCDModeSet|LCDMode_XOR)); // Grafik LCD ekran XOR moda göre ayarlanıyor
   glcd_WriteByte(1, (LCDDispMode|LCDDisp_TXT|LCDDisp_GRH)); // Grafik LCD ekran hem metin hem grafik modunda çalışacak şekilde ayarlanıyor
   
   Resim_goster(f1,240,128,0,0); // Giriş resmi çağrılıp ekrana basılıyor. Resimler "Resimler.h" dosyasında tek sabit arrayde saklanıyor, 
   delay_ms(2000);
   
   glcd_init(240,128); // Grafik LCD ektran hazırlanıyor
   glcd_WriteByte(1, (LCDModeSet|LCDMode_XOR)); // Grafik LCD ekran XOR moda göre ayarlanıyor
   glcd_WriteByte(1, (LCDDispMode|LCDDisp_TXT|LCDDisp_GRH)); // Grafik LCD ekran hem metin hem grafik modunda çalışacak şekilde ayarlanıyor
   
   Resim_goster(f2,240,128,0,0); // Giriş resmi çağrılıp ekrana basılıyor. Resimler "Resimler.h" dosyasında tek sabit arrayde saklanıyor, 
   delay_ms(2000);
   
   glcd_init(240,128); // Grafik LCD ektran hazırlanıyor
   glcd_WriteByte(1, (LCDModeSet|LCDMode_XOR)); // Grafik LCD ekran XOR moda göre ayarlanıyor
   glcd_WriteByte(1, (LCDDispMode|LCDDisp_TXT|LCDDisp_GRH)); // Grafik LCD ekran hem metin hem grafik modunda çalışacak şekilde ayarlanıyor
   
   glcd_line(0,64,239,64,1,1); // Yatay çizgi
   glcd_line(120,0,120,128,1,1); // Dikey çizgi
   glcd_line(0,0,240,128,1,1); // Çapraz çizgi
   glcd_line(240,0,0,128,1,1); // Çapraz çizgi
   glcd_circle(120, 64, 50, 0, 1); // Ekran ortasına daire çizimi
   glcd_box(0,100,80,127,1); //İçi dolu dikdörtgen
   glcd_square(160,100,239,127,1); // İçi çoş dikdörtgen
   delay_ms(1000);
   
   // Ekran sıfırlanıyor
   glcd_init(240,128); 
   glcd_WriteByte(1, (LCDModeSet|LCDMode_XOR)); 
   glcd_WriteByte(1, (LCDDispMode|LCDDisp_TXT|LCDDisp_GRH));
      
   glcd_gotoxy(0,0,1);  // Yazının yazılmaya başlanacağı yere gidiliyor
   glcd_putc("PICPROJE.ORG - ABCDEFGHIJKLMNOPRSTUVYZ - 1234567890"); // Yazı yazdırılıyor
   
   // Font örnekleri
   glcd_text57(0,20,font_deneme,1,1);
   glcd_text57(0,30,font_deneme,2,1);
   glcd_text57(0,45,font_deneme,3,1);
   glcd_text57(0,70,font_deneme,4,1);
   
   delay_ms(1000);
   
   glcd_init(240,128); // Grafik LCD ektran hazırlanıyor
   glcd_WriteByte(1, (LCDModeSet|LCDMode_XOR)); // Grafik LCD ekran XOR moda göre ayarlanıyor
   glcd_WriteByte(1, (LCDDispMode|LCDDisp_TXT|LCDDisp_GRH)); // Grafik LCD ekran hem metin hem grafik modunda çalışacak şekilde ayarlanıyor
   
   Resim_goster(f3,240,128,0,0); // Giriş resmi çağrılıp ekrana basılıyor. Resimler "Resimler.h" dosyasında tek sabit arrayde saklanıyor, 
   delay_ms(2000);
   
   glcd_init(240,128); // Grafik LCD ektran hazırlanıyor
   glcd_WriteByte(1, (LCDModeSet|LCDMode_XOR)); // Grafik LCD ekran XOR moda göre ayarlanıyor
   glcd_WriteByte(1, (LCDDispMode|LCDDisp_TXT|LCDDisp_GRH)); // Grafik LCD ekran hem metin hem grafik modunda çalışacak şekilde ayarlanıyor
   
   Resim_goster(f4,240,128,0,0); // Giriş resmi çağrılıp ekrana basılıyor. Resimler "Resimler.h" dosyasında tek sabit arrayde saklanıyor, 
   delay_ms(2000);
   
   glcd_init(240,128); // Grafik LCD ektran hazırlanıyor
   glcd_WriteByte(1, (LCDModeSet|LCDMode_XOR)); // Grafik LCD ekran XOR moda göre ayarlanıyor
   glcd_WriteByte(1, (LCDDispMode|LCDDisp_TXT|LCDDisp_GRH)); // Grafik LCD ekran hem metin hem grafik modunda çalışacak şekilde ayarlanıyor
   
   Resim_goster(f5,240,128,0,0); // Giriş resmi çağrılıp ekrana basılıyor. Resimler "Resimler.h" dosyasında tek sabit arrayde saklanıyor, 
   delay_ms(2000);
   
   
   
 
     
} 
Mustafa Emir SADE

kantirici

kristalsiz de çalışıyorsa dahili osilatörden besleniyordur mcu. Konf. ayarlarından HS osilatörü seçiniz.

musti463

kodu nedir hocam (18F46K22 kütüphanesinde şunlar yazıyor //////// Fuses: LP,XT,HSH,HSM,ECH,ECH_IO,RC,RC_IO,INTRC_IO,INTRC,ECM,ECM_IO)
Mustafa Emir SADE

kantirici

HSH yada HSM dir. Ayrıca 46k22 de 16mhz dahili osilatör ve PLL ile 64mhz hıza çıkabilirsiniz.

musti463

teşekkürler hocam HSH ile çözüldü.Hatta 4MHz de bile baya bir hızlanma oldu HSH ı ekleyince
Mustafa Emir SADE