TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Pedro en 09 de Diciembre de 2020, 16:29:01

Título: Salta error stack overflow is forcing device reset
Publicado por: Pedro en 09 de Diciembre de 2020, 16:29:01
Saludos, estoy probando a recibir datos por el puerto serie2 del pic18f25k22 activando interrupcion de dato recibido :? y estos reenviarlos por el puerto serie1. Cuando recibe unos 15 caracteres salta error. He leído datasheet y no veo como solucionarlo. El código esta escrito en  mikroc.

////////////////////////////////////
sbit abrir_v1   at PORTB.b0 ;     // botones para abrir/cerrar
sbit cerrar_v1  at PORTB.b1 ;
sbit abrir_v2   at PORTB.b2 ;
sbit cerrar_v2  at PORTB.b3 ;
sbit pabrir_v1  at TRISB.b0 ;
sbit pcerrar_v1 at TRISB.b1 ;
sbit pabrir_v2  at TRISB.b2 ;
sbit pcerrar_v2 at TRISB.b3 ;
//7/
volatile char cadena[20];
unsigned short xx = 0 ;
unsigned flip = 0 ;
 void UART2_interrup_HIGH(){
    if(PIR3.RC2IF == 1){

       PIR3.RC2IF = 0 ;
       cadena[xx] =  UART2_Read() ;
       if(xx < 98){xx++ ;}
       else{xx = 0 ; }
       flip = 1 ;
     
  }    }


void main() {
   ANSELA = 0 ;
   ANSELB = 0 ;
   ANSELC = 0 ;
   pabrir_v1  = 1 ;
   pcerrar_v1 = 1 ;
   pabrir_v2  = 1 ;
   pcerrar_v2 = 1 ;

   TRISB.b7 = 1 ;
   TRISB.b6 = 0 ;
   TRISC.b7 = 1 ;
   TRISC.b6 = 0 ;
   UART1_Init(9600);
   UART2_Init(9600);
   //I2C1_Init(100000);
   INTCON = 0b11000000 ;
   PIR3.RC2IF = 0 ;
   PIE3.RC2IE =1 ;
   INTCON2=0b10000000;
   INTCON3 = 0 ;
   IPR3.RC2IP = 1;
   PMD0.UART2MD=0;

  while(1){
  asm clrwdt ;
  if(flip == 1){
     flip = 0 ;

     UART1_Write_Text(cadena) ;
 
   }
 

}} :?
Título: Re:Salta error stack overflow is forcing device reset
Publicado por: uZYNQ en 09 de Diciembre de 2020, 21:04:22
Puede ser porque el largo de cadena no es suficiente! lo defines de 20 y el contador llega hasta 98.
Título: Re:Salta error stack overflow is forcing device reset
Publicado por: KILLERJC en 09 de Diciembre de 2020, 22:18:30
No solo eso, sino que jamás termina la cadena con un '\0' que es lo que se espera de un string.
Título: Re:Salta error stack overflow is forcing device reset
Publicado por: remi04 en 12 de Diciembre de 2020, 15:33:37
Lo que no entiendo es por que le salta error por Stack overflow.   Estará en overflow el arreglo cadena[]  por que está intentando acceder a “n”’elementos no asignados.

  Eso CCS te da error en tiempo de compilación. MikroC no se como lo hará. Pero lo que es la Stack no tiene por qué colapsar con ese error.
Título: Re:Salta error stack overflow is forcing device reset
Publicado por: remi04 en 12 de Diciembre de 2020, 15:34:05
.