16f628A int_rda sorunu? Yardım

Başlatan ismail kaya, 31 Mart 2014, 13:57:11

ismail kaya

kodu aşağıya ekliyorum ana döngüde delay süresi artınca tekrar kesmeye gitmiyor...
fprintf(PORT1,"AT#GPRS=1\r\n");                                                              // AT komutunun saf hali şu:  AT#GPRS=1
       fputc(0X1A,PORT1);
bu koda kadar güzel çalışıyor bu koddan sonra 5-10 satır daha eklemem gerekiyor eklediğimde çalışmıyor...
#include <16F628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                    //Internal RC Osc
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout 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 NOCPD                    //No EE protection

#use delay(clock=4000000)
#use rs232(baud=2400,parity=N,xmit=PIN_b2,rcv=PIN_b1,bits=8)
#use rs232(baud=9600,parity=N,xmit=PIN_b6,rcv=PIN_b7,bits=8,stream=PORT1)



char gelen;
char isaret;
char pil;
int16 xdata[6];
int i,a,k=0;
int16 xveri=0,yveri;

#int_RDA
void  RDA_isr(void) 
{

if(getch()=='X') 
 {
  disable_interrupts(int_rda);
  while(getch()=='X');
  for(i=0;i<6;i++) 
  xdata[i]=getch();
  xveri=1000*xdata[0]+100*xdata[1]+10*xdata[2]+xdata[3]; //LCD'ye yazdırmak için
  isaret=xdata[4];
  pil=xdata[5];
  k=1;
 
 }

output_low(pin_b3);
output_toggle(pin_b0);
}




void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   fprintf(PORT1,"AT\r\n");
   fputc(0X1A,PORT1);
   delay_ms(500);
   fprintf(PORT1,"AT+IPR=9600\r\n");
   fputc(0X1A,PORT1);
   delay_ms(500);

while(1)
{
enable_interrupts(int_rda);
if(k==1) 
{
 
       fprintf(PORT1,"AT&K0\r\n");
       fputc(0X1A,PORT1);
       delay_ms(500);
       fprintf(PORT1,"AT\r\n");
       fputc(0X1A,PORT1);
       delay_ms(500);
       fprintf(PORT1,"AT+CGATT=1\r\n");
       fputc(0X1A,PORT1);
       delay_ms(1000);
       fprintf(PORT1,"AT+CGDCONT=1,\"IP\",\"internet\",\"0.0.0.0\",0,0\r\n");   // AT komutunun saf hali şu:  AT+CGDCONT=1,"IP","internet","0.0.0.0",0,0
       fputc(0X1A,PORT1);
       delay_ms(500);
       fprintf(PORT1,"AT#USERID=\"vodafone\"\r\n");                                                       // AT komutunun saf hali şu:  AT#USERID=""
       fputc(0X1A,PORT1);
       delay_ms(500);
       fprintf(PORT1,"AT#PASSW=\"vodafone\"\r\n");                                                     // AT komutunun saf hali şu:  AT#PASSW=""
       fputc(0X1A,PORT1);
       delay_ms(500);
       fprintf(PORT1,"AT#GPRS=1\r\n");                                                              // AT komutunun saf hali şu:  AT#GPRS=1
       fputc(0X1A,PORT1);
      
       

k=0;
}

fprintf(PORT1,"%c%4.2w-%c",isaret,xveri,pil);
output_toggle(pin_b3);

}


}

Kabil ATICI

Derlenmiş kodun büyüklüğüne bak.(işlemcide kaplayacağı alan)  Normalde belirtilen bellek alanının 1/4 'ü geçmemesine dikkat et. (BANK olayı nedeni ile). Geçmişse daha yüksek kapasiteli bir işlemci kullan.
ambar7

ismail kaya


Kabil ATICI

16f648 gibi bir işlemci ile deneme şansın var mı? (bellek kapasitesi daha fazla) En azından işlemci olayını elemek için.
ambar7

ismail kaya

#4
simülasyonda deniyorum 16f648a olarak değiştirdim yine aynı.

mesaj birleştirme:: 01 Nisan 2014, 05:06:53

ROM = 31%  RAM = 21% - 34% 16f648a

mesaj birleştirme:: 31 Mart 2014, 15:17:03

if() blogundaki delay_süresi artınca kesme birdaha enable olmuyor