Buennass Nocturno,
Aquí dejo la interrupción de la usart,
void __attribute__((__interrupt__)) _U2RXInterrupt(void)
{
IFS1bits.U2RXIF = 0; // borra bit señalador de interrupción de recepción
pulsado = ReadUART2();
datos_uart[indice_datos]=pulsado;
indice_datos++;
}
/*FIN INTERRUPCIÓN UART2*******************/
Aquí pongo la configuración de la uart (Interrupción recepción en modo char)
void configura_uart(void)
{
unsigned int baudvalue; /* Pone el valor del registro baud */
unsigned int U2MODEvalue; /* Pone el valor del registro de configuración de la uart*/
unsigned int U2STAvalue; /* Modos de interrupción de TX y RX*/
__C30_UART=2; //Le digo que voy a utilzar la usart2
CloseUART2(); /* Apaga el modulo UART2 */
/* Configura las interrupciones de la UART2, transmisión y recepción */
ConfigIntUART2(UART_RX_INT_EN & UART_RX_INT_PR6 & UART_TX_INT_DIS & UART_TX_INT_PR2);
/* Configura el modulo UART2 para transmitir con 8 bits de datos y uno de parada */
baudvalue = 191; //9600 baudios
U2MODEvalue = UART_EN & UART_IDLE_CON & UART_RX_TX &
UART_DIS_WAKE & UART_DIS_LOOPBACK &
UART_DIS_ABAUD & UART_NO_PAR_8BIT &
UART_1STOPBIT;
U2STAvalue = UART_INT_TX_BUF_EMPTY &
UART_TX_PIN_NORMAL &
UART_TX_ENABLE & UART_INT_RX_CHAR &
UART_ADR_DETECT_DIS &
UART_RX_OVERRUN_CLEAR;
OpenUART2(U2MODEvalue, U2STAvalue, baudvalue); //Inicializa la uart
}
Si en vez de enviar todos los datos seguidos con el componente mscomm se los envio con el terminal me los coje, el problema son los tiempos, si yo se los envio de uno en uno (caracteres) desde el terminal me los coje todos, el problema viene si se los envio todos a la vez por ejemplo:
Terminal:
Pulso 1,
lo coje
Pulso 5,
lo coje,
Pulso 7,
lo coje....
pero si pongo por ejemplo 1234568 y se lo envio de golpe no me los coje y lo que hago desde el programa en visual basic es esto:
frmPrincipal.MSComm1.Output = Chr$(&HC) 'Modo Algoritomo PY0
frmPrincipal.MSComm1.Output = Chr$(&H4) 'Modo Algoritomo PY0
frmPrincipal.MSComm1.Output = Chr$(&H2) 'Modo Algoritomo PY0
frmPrincipal.MSComm1.Output = Chr$(&H3) 'Modo Algoritomo PY0
frmPrincipal.MSComm1.Output = Chr$(&H4) 'Modo Algoritomo PY0
frmPrincipal.MSComm1.Output = Chr$(&HFE) 'Caracter fin de trama
En resumen creo que si no lo soluciono de otra manera iré a ver si me pueden echar una mano el el foro de Visual Basic, para poner algún delay entre cada envio de caracter que haga.
Gracias por el tiempo,
saludos