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) ;
}
}}
