Buenas,
Necesito una ayuda en cuanto al escribir/leer de la EEPROM o de la RAM. El problema está en que debo realizar un muestreo de una señal, con un dsPiC30F6010, recibida de un micrófono y guardarla en una de las 2. Estube mirando en el Familiy Reference Manual sobre la RAM y sobre la EEPROM y veo que no tengo ni idea ni entiendo como realizarlo. Cada muestra ocupa 10 bits según me indica el manual, por lo que pierdo 6 bits de mano por cada conversión. Os dejo el código que tengo para haceros mejor a la idea de lo que querría realizar.
#include <p30f6010.h>
#define TAM 51200
void Desplazavector(int vector[],int tam)
{
int i;
for(i=tam-1;i>=0;i--)
{
vector[i-1]=vector[ i ];
}
}
void Inicializavector(int vector[], int tam)
{
int i;
for(i=0;i<tam;i++)
{
vector[ i ]=0;
}
void TMR3Config()
{
TMR3=500; /*10KHZ*/
PR3=0;
T3CONbits.TCKPS=0; /*Prescaler 1/1*/
}
void ADConfig()
{
ADCON1bits.SSRC=2; /*Utilizar Timer3 para realizar la conversión*/
ADCON1bits.ASAM=1; /*Siguiente conversión se realiza en cuanto termina la anterior*/
ADCON1bits.SAMP=1; /*Al menos un S&H está muestreando*/
ADCON2bits.SIMP=17; /*Una interrupción para cada 16 muestreos*/
ADCHSbits.CH0SA=5; /*Utilizo AN5 como entrada analógica para el muestreo*/
IFS0bits.ADIF=0; /*Borro la bandera de interrupción*/
IEC0bits.ADIE=1; /*Habilito interrupción*/
}
void _ISR _ADCInterrupt()
{
int vector[51200]; /*Declaro un vector de tamaño el máximo de muestras que podría guardar en la EEPROM*/
IFS0bits.ADIF=0; /*Borro la flag de nuevo*/
vector[0]=ADCBUF0; /*Guardo la muestra en la primera posición del vector*/
/*Necesito escribir éste vector en la memoria interna del dspic para su posterior lectura*/
Desplazavector(vector,TAM); /*Desplazo el valor a la derecha para no pisarlo en el siguiente muestreo*/
}
int main()
{
int entrada[TAM];
Inicializavector(entrada,TAM);
while(1)
Idle();
}
Realizo 16 conversiones por interrupción para optimizar el problema que tengo con lo de los 10bits. Sólo necesito saber que instrucciones debería utilizar para poder guardar ese vector sin pisar nada importante en la memoria y las instrucciones también para poder leerlas en un futuro.
Un saludo, y muchisimas gracias de antemano.
P.D.: Sé que podré guardar solo como máximo 5,12s voz, pero eso no es problema.