SoloCodigo
Programación Específica => Microcontroladores => Mensaje iniciado por: Bixix en Martes 1 de Marzo de 2005, 11:39
-
Hola amigos! :lol:
He descubierto que microchip facilita con MPLAB un programa muy adecuado para filtras señales.
Se trata de facilitar las características de tu filtro y el programa facilita toda la información sobre el filtro..
respuesta a un escalón unitario, evolución de la fase respecto a diferentes frecuencias...
Y eso no es todo!!
cuando hayas diseñado tu super filtro, te genera el código en C!!!!!
Pero aquí es cuando empiezan mis problemas, porque no controlo mucho C, y tengo dificultades para insertar este código en mi programa..
he insertado el FIR_Highpass_400.c en mi proyecto. y tambien el ged_cgen.h y el
qed_filt.c
pero al compilar me da error
main.c:3:22: qed_cgen.h: No such file or directory
main.c:4:22: qed_filt.c: No such file or directory
Alguien me podría echar una mano?? :hola:
-
Hola de nuevo, :)
tienes dos opciones una:
Bixix Escrito el 1/03/2005, 11:39 AM
cuando hayas diseñado tu super filtro, te genera el código en C!!!!!
y la otra y seguramente más recomendable es generar el código para el dsPIC30. Si abres el menú de Codegen tienes estas dos opciones (la segunada en Microchip -> dsPIC30).
El fichero de salida en ASM lo metes en "source files" y después en tu archivo C declaras la estructura del filtro como "extern". Debes inicializar el filtro y despues al llamar a la función de filtro debes indicarle array de entrada y salida, estructura y número de muestras (tienes más info en la guía de usuario de las librarías DSP en " Filtering Functions") recuerda que debes incluir la dsp.h, ahora que lo veo, también te habla sobre filtros IIR y FIR. Si quieres entenderlos espero que andes bien de matemáticas porque yo ando un poco pez.
Saludos. :lol:
-
gracias!! ;)
Pero no consigo acabar de filtrar!! :(
en mi programa se produce una interrupción para que el dsPIc se comunique con el codec Si3000.
Y es entonces, en la interrupción donde se da la igualdad TXBUF=RXBUF;
(TXBUF es un int no?? )
Entiendo que la data que se recibe se copia directamente en el buffer de salida.
Luego, que es aquí donde tengo que filtrar mi señal.
Paso todos los parametros que necesita (incluyendo los coeficientes) a este. c llamado codec.c .
El rebuild me hace bien. Los ficheros están bien.
Entonces inicializo la función;
init_fir_float (&FIR_FIR150_5500be);
y a continuación en vez de escribir (con esto sale lo que entra y fundiona) :
void __attribute__((__interrupt__)) _DCIInterrupt(void) {
/*TXBUF0 = RXBUF0;
TXBUF1 = RXBUF1;
TXBUF2 = RXBUF2;
TXBUF3 = RXBUF3;
IFS2bits.DCIIF = 0;}*/
intento llamar a la función de filtrar de esta otra forma
void __attribute__((__interrupt__)) _DCIInterrupt(void) {
/*
arrayEntrada64[0+i_i] = RXBUF0;
arrayEntrada64[1+i_i] = RXBUF1;
arrayEntrada64[2+i_i] = RXBUF2;
arrayEntrada64[3+i_i] = RXBUF3;}
FIR_FIR150_5500be.filter(arrayEntrada64, arraySalida64, 64, &FIR_FIR150_5500be);
for (j_j=0; j_j>=64; j_j= j_j+4;)
TXBUF0 = arraySalida64[0+j_j];
TXBUF1 = arraySalida64[1+j_j];
TXBUF2 = arraySalida64[2+j_j];
TXBUF3 = arraySalida64[3+j_j];
}
IFS2bits.DCIIF = 0;
i_i=i_i+4;
y No oigo nada!!
què puede pasar??
GRACIAS :)
-
Yo estoy aprendiendo a usar tambien el dspicfdlite y al compilar me tira el mismo error:
main.c:3:22: qed_cgen.h: No such file or directory
main.c:4:22: qed_filt.c: No such file or directory
pero tu dijiste que habias conseguido agregarlas? de donde las sacaste para poder agregarlas?
Gracias
-
hola amigos
al igual que ustedes estoy aprendiendo a usar esta herramienta dspicfdlite y al compilar mi codigo me arroja los mismos errores:
main.c:3:22: qed_cgen.h: No such file or directory
main.c:4:22: qed_filt.c: No such file or directory
yo pienso que es porque estoi utilizando la vercion de demostracion, y por eso no nos genera o no cuenta con las librerias necesarias para que el codigo compile bien.
alguno de ustedes tiene la vercion completa del dspicfdlite?