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);
}
}
fast_glcd'nin lcd_update() fonksiyonunu kullanmak için 1kbyte rem gerekiyor. 16f877 ile olmaz. 18f4620 gibi bir modele geçin.
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.
Yanıtlarınız için teşekkür ederim arkadaşlar.