Autor Tema: uso de filtro IIR utilizando dsp.h  (Leído 3392 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
uso de filtro IIR utilizando dsp.h
« en: 13 de Febrero de 2012, 14:59:33 »
HOla a todos:

Nevamente acudo a uds. Ya he trabajado con fitlros digitales en dspic anteriormente. SIn embargo lo he hecho utilizando dspicfdlite, (la demo que viene con el libro de angulo).
Actualmente con los dspic33e me gustaria implementar un filtro pasabajas iir utilizando dsp.h.
 Alguien tiene experiencia con esto? Habra por ahi algun tutorial  o ejemplo que tengan a la mano?

muchas gracias por su valiosa ayuda.

saludos!

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: uso de filtro IIR utilizando dsp.h
« Respuesta #1 en: 13 de Febrero de 2012, 22:31:05 »
HOla he intentado utilizar el codigo del filtro generado por dspifdLITE y recibo otro error del linker.

Actualmente tengo las ultimas versiones de mplab, c30 y dspicFDlite disponibles (8.83, 3.31 y 2.1 respectivamente).

EL error que aparece es el siguiente:

integral_alfa.o: Link Error: Could not allocate section .ybss, size = 4 bytes, attributes = bss ymemory

El codigo del archivo al cual hace referencia el error (que es generado por dspicfdlite). Lo muestro a continuacion:

Código: [Seleccionar]
; ..............................................................................
;    File   integral_alfa.s
; ..............................................................................

.equ integral_alfaNumSections, 1

; ..............................................................................
;
; Allocate and initialize filter coefficients
;
; These coefficients have been designed for use in the Transpose filter only

.section .xdata,data,xmemory

integral_alfaCoefs:
.hword 0x0019 ; b( 1,0)/2
.hword 0x0019 ; b( 1,1)/2
.hword 0x3FCC ; a( 1,1)/2
.hword 0x0000 ; b( 1,2)/2
.hword 0x0000 ; a( 1,2)/2

; ..............................................................................
; Allocate states buffers in (uninitialized) Y data space

.section .ybss, bss, ymemory


integral_alfaStates1:
.space integral_alfaNumSections*2

integral_alfaStates2:
.space integral_alfaNumSections*2

; ..............................................................................
; Allocate and intialize filter structure

.section .data
.global _integral_alfaFilter

_integral_alfaFilter:
.hword integral_alfaNumSections-1
.hword integral_alfaCoefs
.hword 0xFF00
.hword integral_alfaStates1
.hword integral_alfaStates2
.hword 0x0000

; ..............................................................................
; Sample assembly language calling program
;  The following declarations can be cut and pasted as needed into a program
; .extern _IIRTransposedInit
; .extern _IIRTransposed
; .extern _integral_alfaFilter
;
; .section .bss
;
; The input and output buffers can be made any desired size
;    the value 40 is just an example - however, one must ensure
;    that the output buffer is at least as long as the number of samples
;    to be filtered (parameter 1)
;input: .space 40
;output: .space 40
; .text
;
;
;  This code can be copied and pasted as needed into a program
;
;
; Set up pointers to access input samples, filter taps, delay line and
; output samples.
; mov #_integral_alfaFilter, W0 ; Initalize W0 to filter structure
; call _IIRTransposedInit ; call this function once
;
; The next 4 instructions are required prior to each subroutine call
; to _IIRTransposed
; mov #_integral_alfaFilter, W3 ; Initalize W3 to filter structure
; mov #input, W2 ; Initalize W2 to input buffer
; mov #output, W1 ; Initalize W1 to output buffer
; mov #20, W0 ; Initialize W0 with number of required output samples
; call _IIRTransposed ; call as many times as needed

Alguien tiene idea de como cambiarlo para hacerlo funcionar?

gracias por su ayuda!

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: uso de filtro IIR utilizando dsp.h
« Respuesta #2 en: 15 de Febrero de 2012, 23:01:08 »
POr lo que veo el hilo sigue en blanco...
He pasado el codigo a un dspic33fj128mc820 y funciona a la perfeccion.

haber que opinan los de soporte de microchip

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: uso de filtro IIR utilizando dsp.h
« Respuesta #3 en: 21 de Febrero de 2012, 13:03:27 »
Ya respondieron de microchip.

Me han dicho que cambie la linea 25:

Código: [Seleccionar]
.section .ybss, bss, ymemory

por lo siguiente:

Código: [Seleccionar]
.section .yconst

Sim embargo ahora tengo otro error de linkeado que apunta a otro archivo generado por dsipcfdlite.

Definitivamente el problema parece ser que esta herramiento no es compatible conlos nuevos dspic33e. Se los menciono por si necesitan filtrar y van a usar este nuevo dispositivo, pues mejor ahcer el filtro con otra herramienta.

Ahora en lo que me gustaria pedirle ayuda es si alguien tiene algun tutorial sobre como hacer filtrado digital utilizando solamente la libreria dsp.h
asi como tambien el metodo para genrar los coeficientes.

saludos!

Les agradesco sus respuestas