Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

#define FAST_GLCD SORUNU

Başlatan ovaliiismail, 20 Mart 2018, 10:22:09

ovaliiismail

Merhaba arkadaşlar.Basit bir osiloskop projesi üzerinde çalışıyorum.Şimdilik sadece sinyali ekrana çizdiriyorum.Ekranı temizlemem gerekiyor.glcd_init(ON) fonksiyonuyla temizliyorum ama bu sefer fazla gecikme oluyor.Bunun yerine fast_glcd'nin lcd_update() fonksiyonunu kullanayım dedim lakin data item too big hatası alıyorum.Kullandığım pic 16f877.Acaba ram mi yetmiyor yoksa başka bir sorun mu var.Bir yardım edebilirmisiniz?Eğer lcd_update kullanamayacaksam onun yerine ne kullanabilirim arkadaşlar?Şimdilik bu kodu kullanıyorum ama gecikme çok fazla oluyor.
#include <16f877.h>

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#device ADC=10

#use delay(clock=20000000)

#include <HDM64GS12.c>

#include <graphics.c>

#use fast_io(e)

int i=0;
long int j;

#int_timer2
void timer_kesmesi()
{
   disable_interrupts(int_timer2);
   i++;
   if(i>128)
   {
      i=1;
      glcd_init(ON);
   }
   j=read_adc();
   j=j/16;
   glcd_pixel(i,63-j,ON);
}

void main()
{
   setup_psp(PSP_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 
   setup_timer_1(T1_DISABLED);
   setup_CCP1(CCP_OFF);
   setup_CCP2(CCP_OFF);
   
   setup_adc_ports(ALL_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   
   setup_timer_2(T2_DIV_BY_16,20,1);  
   
   set_tris_e(0x0F);
   set_tris_c(0x00);
   
   set_adc_channel(5);
   delay_us(20);
   
   glcd_init(ON);
   delay_ms(10);
   
   enable_interrupts(GLOBAL);
   
   while(1)
   {
      enable_interrupts(int_timer2);
   }
}

sadogan

 fast_glcd'nin lcd_update() fonksiyonunu kullanmak için 1kbyte rem gerekiyor. 16f877 ile olmaz. 18f4620 gibi bir modele geçin.

bulut_01

Timer2 setup prescaler 16 oranına ayarlı yavas olması gayet normal init için 10 ms yüksek ekranın yavas olması gayet dogal bu kodla.
YENİLMEZ..

ovaliiismail

Yanıtlarınız için teşekkür ederim arkadaşlar.