Buen dia
Estoy construyendo un equipo de dos canales que me permita adquirir 52734 muestras por segundo por canal, y enviar los datos adquiridos por USB al PC. Estoy usando dos ADC ADS1271 conectados en modo Daisy chain, con interface SPI hacia un microcontrolador MSP430F5510.
Los datos enviados desde el conversor hasta el microcontrolador llegan bien pero cuando se inicia la transmisión de los datos por USB y como los conversores continúan enviando datos algunos datos se dañan es como si el USB interrumpiera la adquisición, no se si con DMA pueda suprimir el problema.
este es le codigo cuando esta adquiriendo los datos y cuando "MEGA_DATA_LENGTH" se llena inicia el envio de los datos por USB
1908 bytes x 6 bytes = 318 muestras por canal
esta la grafica de como se ve
http://www.freeimagehosting.net/8b4ow
Gracias por la ayuda
Estoy construyendo un equipo de dos canales que me permita adquirir 52734 muestras por segundo por canal, y enviar los datos adquiridos por USB al PC. Estoy usando dos ADC ADS1271 conectados en modo Daisy chain, con interface SPI hacia un microcontrolador MSP430F5510.
Los datos enviados desde el conversor hasta el microcontrolador llegan bien pero cuando se inicia la transmisión de los datos por USB y como los conversores continúan enviando datos algunos datos se dañan es como si el USB interrumpiera la adquisición, no se si con DMA pueda suprimir el problema.
este es le codigo cuando esta adquiriendo los datos y cuando "MEGA_DATA_LENGTH" se llena inicia el envio de los datos por USB
Código:
#define MEGA_DATA_LENGTH 1908 /// length of bytes
BYTE buffer[MEGA_DATA_LENGTH]; //// buffer
int inc; /// increment for each sample
case ST_ENUM_ACTIVE:
if (!(P1IN & BIT1)){ /// wait the sample ready pin DRDY
while (!(UCB1IFG & UCTXIFG));
UCB1TXBUF = 0x00;
while (!(UCB1IFG & UCRXIFG)); /// wait RXBUF received complete byte 3 ADC 1
buffer[inc] = UCB1RXBUF;
while (!(UCB1IFG & UCTXIFG));
UCB1TXBUF=0x00;
while (!(UCB1IFG & UCRXIFG)); /// wait RXBUF received complete byte 2 ADC 1
buffer[inc+1] = UCB1RXBUF;
while (!(UCB1IFG & UCTXIFG));
UCB1TXBUF=0x00;
while (!(UCB1IFG & UCRXIFG)); /// wait RXBUF received complete byte 1 ADC 1
buffer[inc+2] = UCB1RXBUF;
while (!(UCB1IFG & UCTXIFG));
UCB1TXBUF=0x00;
while (!(UCB1IFG & UCRXIFG)); /// wait RXBUF received complete byte 3 ADC 2
buffer[inc+3] = UCB1RXBUF;
while (!(UCB1IFG & UCTXIFG));
UCB1TXBUF=0x00;
while (!(UCB1IFG & UCRXIFG)); /// wait RXBUF received complete byte 2 ADC 2
buffer[inc+4] = UCB1RXBUF;
while (!(UCB1IFG & UCTXIFG));
UCB1TXBUF=0x00;
while (!(UCB1IFG & UCRXIFG)); /// wait RXBUF received complete byte 3 ADC 2
buffer[inc+5] = UCB1RXBUF;
inc = inc + 6; //// inc the next 6 bytes
///////////////////////////////
if(inc == MEGA_DATA_LENGTH) { //// when inc == 1908 bytes send data
USBCDC_sendData(buffer,MEGA_DATA_LENGTH,CDC0_INTFNUM);
inc = 0;
}
}
break;
1908 bytes x 6 bytes = 318 muestras por canal
esta la grafica de como se ve
http://www.freeimagehosting.net/8b4ow
Gracias por la ayuda
Última edición por un moderador: