Autor Tema: Salta error stack overflow is forcing device reset  (Leído 2190 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Pedro

  • PIC10
  • *
  • Mensajes: 7
Salta error stack overflow is forcing device reset
« 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) ;
 
   }
 

}} :?

Desconectado uZYNQ

  • PIC16
  • ***
  • Mensajes: 123
Re:Salta error stack overflow is forcing device reset
« Respuesta #1 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.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Salta error stack overflow is forcing device reset
« Respuesta #2 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.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Salta error stack overflow is forcing device reset
« Respuesta #3 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.
« Última modificación: 13 de Diciembre de 2020, 18:56:29 por remi04 »

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Salta error stack overflow is forcing device reset
« Respuesta #4 en: 12 de Diciembre de 2020, 15:34:05 »
.
« Última modificación: 13 de Diciembre de 2020, 18:56:16 por remi04 »