• Viernes 12 de Junio de 2026, 04:25

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Bixix

Páginas: [1] 2
1
Programación en C / De Float A Integer
« en: Miércoles 8 de Junio de 2005, 08:05 »
Hola amigos,
Tengo un problemilla con un código de control automático de ganancia, consigo el resultado en float, y para trabajar con el dsPIC30F6014 necesito que esta variable sea int. He intentado cambiar de tipo a lo "bestia".. poniendo (int) pero no me redondea bien me quita demasiada información.

He buscado información en Internet, pero no he podido conseguir resultados..
me podeis hechar una mano?
Me valdría si me dijerais como pasar de float a integer perdiendo lo menos
información posible..
Gracias.
(He escrito este mensaje en la entrada del foro porque no sabía que había esta sección específica para programación en C.)

Este sería el código:


RXBUF0 es el buffer de entrada, y TXBUF0 es el de salida.
Fractional es un int.
He intentado multiplicar por 10000 y después hacer el cambio..

void __attribute__((__interrupt__)) _DCIInterrupt(void) {



xxx[0]=RXBUF0;

if (xxx[0]>=xmin)
{
h[k]=h[k-1]+mu*(nivel-abs(y[k-1]));
}
else
h[k]=h[k-1];

if(h[k]<=0)
{
h[k]=0.0001;
}
if (h[k]>=hmax)
{
h[k]=hmax;
}

//h[k]=min(h[k],hmax);

y[0]=(h[k]*xxx[0]);

//y[0] = y[0]*10000;
//y[0] = (abs(y[0]))/1000;
//y_final[0] = (fractional)((y[0])/10000);
TXBUF0=(int)(y[0]);

k++;

if(k == 79)
{
k = 0;
}
}

GRACIAS

2
Microcontroladores / De Float A Integer
« en: Lunes 6 de Junio de 2005, 14:40 »
Hola amigos,
Tengo un problemilla con un código de control automático de ganancia, consigo el resultado en float, y para trabajar con el dsPIC30F6014 necesito que esta variable sea int. He intentado cambiar de tipo a lo "bestia"..  poniendo (int) pero no me redondea bien...
He encontrado información en Internet, pero no he podido conseguir resultados..
me podeis hechar una mano?
Gracias.
Este sería el código:


RXBUF0 es el buffer de entrada, y TXBUF0 es el de salida.
Fractional es un int.
He intentado multiplicar por 10000 y después hacer el cambio..

void __attribute__((__interrupt__)) _DCIInterrupt(void) {

   
   
   xxx[0]=RXBUF0;
   
   if (xxx[0]>=xmin)
   {
       h[k]=h[k-1]+mu*(nivel-abs(y[k-1]));
   }
      else
       h[k]=h[k-1];
   
      if(h[k]<=0)
   {
         h[k]=0.0001;
      }
   if (h[k]>=hmax)
   {
      h[k]=hmax;
   }
            
  //h[k]=min(h[k],hmax);

   y[0]=(h[k]*xxx[0]);
   
   //y[0] = y[0]*10000;
   //y[0] = (abs(y[0]))/1000;
   //y_final[0] = (fractional)((y[0])/10000);
   TXBUF0=(int)(y[0]);
   
   k++;

   if(k == 79)
   {
      k = 0;
   }
}

GRACIAS

3
Microcontroladores / Calidad De Señal
« en: Viernes 15 de Abril de 2005, 17:03 »
:P
Sabría alguien decirme si el codec Si-3000 puede muestrear a más de 8KHz?

MI DUDA:

En las características del principio pone 8KHZ pero más adelante habla de la relación Reloj y la frecuencia de muestreo.. donde la relación nos lo dan dos valores de un registro que se pueden cambiar mediante software..
Adjunto el datasheet!!


GRACIAS COMO SIEMPRE!! :lol:

4
Microcontroladores / Re: Firlms
« en: Martes 5 de Abril de 2005, 10:12 »
Gracias!!!! :P
Si soy yo.... :rolleyes:
Me estoy volviendo majara con esta función y lo mejor... no sé seguro si es para normalizar la señal..
Preguntaría en alemán si supiera...jejej
Gracias majos!!! :hola:

5
Microcontroladores / Firlms
« en: Lunes 21 de Marzo de 2005, 11:27 »
Hola a todos otra vez!! :P

Dado que mi objetivo principal es meter en un rango dado cualquier señal dada creo que conseguiré mas facilmente este objetivo usando la funcion de normalización integrada en las librerías de MPLAB que programando un control automático de ganancia.

Creo que la función que debo usar FIRLMSNorm. Pero.. no encuentro el source file firlmsn.asm......................
Es un archivo especial, o es simplemente un filtro FIR?
RefSamps son coeficientes?
Alguién que me pueda ayudar?
Algún ejemplo??
Gracias!! :rolleyes:

6
Microcontroladores / Control Automático De Ganancia
« en: Miércoles 16 de Marzo de 2005, 16:06 »
Hola otra vez!!! :P

Esta vez también sigo preguntando sobre software :comp:

Tengo problemas con la señal aun habiéndola pasado por un filtro. :o

Tengo un programa que es un reconocedor de voz, y parece que este programa necesita una señal  filtrada y acotada.(Quiero tratar la señal con la placa de evaluación del dsPIC30F6014 (El filtrado lo he conseguido......GRACIAS!!  ;) ))

Después de quitarle el ruido...(Pasarlo por un filtro paso banda de frecuencia de voz), quiero acotar la señal con el fin de

1) Al hablarle bajo le de una ganancia alta

2) Al hablarle alto me disminuya la señal, para que el reconocedor no se sature..

el algoritmo puede ser algo asi...

El problema lo tengo en la ganancia..
El control automático de ganancia podría ser mi solución...

El problema...que no soy lo que se dice una experta en C....

Si alguien me pudiera echar una mano.. :(

GRACIAS!!!!!!!!!!!!!!!!!!!!!!!!!!! :lol:

7
Microcontroladores / Re: Adaptar Variables A La Función Del Filtro
« en: Martes 15 de Marzo de 2005, 16:56 »
He encontrado un ejemplo de implementación de un filtro!!


Os dejo la dirección por si a alguien le interesa..

http://forum.microchip.com/tm.asp?m=44506&...y=&anchor#82210

Yo he hecho la prueba en el development board y funciona..

 :rolleyes: Pero aprovecho también para hacer una pregunta sobre este ejemplo..

He intentado cambiar las caracteristicas del filtro metiendo un nuevo .s.

esto es un nuevo código de un nuevo filtro creado en mi caso por el programa dsPIC FD Lite pero no he conseguido que funcione.. :(

si alquien me pudiese ayudar.. :)
gracias!!! :lol:



Lo conseguí!! :kicking:
error que estaba cometiendo(por si a alguien le interesa....)
Estaba llamando
FIR(FILTER_BLOCK_LENGTH, &FiltOut[0], &SigIn[0], &Low_pass);
en vez de
FIR(FILTER_BLOCK_LENGTH, &FiltOut[0], &SigIn[0], &Low_passFilter);
De todas formas... gracias! :smartass:

8
Microcontroladores / Re: Adaptar Variables A La Función Del Filtro
« en: Lunes 14 de Marzo de 2005, 15:31 »
Gracias una vez mas platy!!! ;)

Te agradecería que me facilitaras la información de llamadas a filtros, de funciones de filtros que conozcas.
Los filtros que yo genero, los genero con dsPICfdLite, oseaque tengo el código, pero no se cómo llamarlo.. no sabría facilitarte el prototipo...


Sobre lo de IF, corconbits está definido en el .gld.... es ahí donde tengo que cambiarle el valor?


Gracias  :hola:

9
Microcontroladores / Re: Adaptar Variables A La Función Del Filtro
« en: Viernes 11 de Marzo de 2005, 12:33 »
gracias, pero...
MPLAB C30


/* CORCON: CPU Mode control Register */
extern volatile unsigned int CORCON __attribute__((__near__));
typedef struct tagCORCONBITS {
unsigned IF :1; /* Integer/Fractional mode */
unsigned RND :1; /* Rounding mode */
unsigned PSV :1; /* Program Space Visibility enable */
unsigned IPL3 :1;
unsigned ACCSAT :1; /* Acc saturation mode */
unsigned SATDW :1; /* Data space write saturation enable */
unsigned SATB :1; /* Acc B saturation enable */
unsigned SATA :1; /* Acc A saturation enable */
unsigned DL :3; /* DO loop nesting level status */
unsigned :4;
} CORCONBITS;
extern volatile CORCONBITS CORCONbits __attribute__((__near__));

Has utilizado alguna vez la funcion
FIR_FIR150_5500be.filter(arrayEntrada, arraySalida, num samples, &FIR_FIR150_5500be);

Los arrays tienen que ser  float, pero el txBuf y rxBuf son de 16 bits!!
Si float es de 32 ?
meter información de 16 bits en un array de 32 bale, pero cómo meto info de 32 bits en 16 sin perder información?

gracias!!

10
Microcontroladores / Adaptar Variables A La Función Del Filtro
« en: Jueves 10 de Marzo de 2005, 14:34 »
Hola gente!! :P


Creo que sé porqué al llamar a la función
FIR_FIR150_5500be.filter(arrayEntrada, arraySalida, 1, &FIR_FIR150_5500be);
el programa no funcióna..

Las variables arrayEntrada y arraySalida son de tipo float , y txBuf y rxBuf son de tipo int.

Entonces he intentado buscar información y me he encontrado con esta tabla adjunta, que relaciona fractional con integer...

Yo me pregunto si float=fractional...


Gracias!! :hola:

11
Microcontroladores / Leer Y Mandar Datos: Soft
« en: Martes 8 de Marzo de 2005, 10:08 »
Hola!   :comp:

Parece que hardware está en marcha, pero lo de programar no es lo mio!!

Tengo un programa que funciona:  tiene un main.c donde incializa la función codec que está en codec.c y la de timer que está en timer.c

El programa  solo coge y emite la información, y  tiene dos buffers:

uno de entrada RXBUF y uno de salida TXBUF.
La transferencia de la información se hace en codec.c de esta forma:

void __attribute__((__interrupt__)) _DCIInterrupt(void) {
//static    float x[INSZ1], y[OUTSZ1];
 //int in_count;



  TXBUF0 = RXBUF0;
  TXBUF1 = RXBUF1;
  TXBUF2 = RXBUF2;
  TXBUF3 = RXBUF3;
  IFS2bits.DCIIF = 0;

(esto es lo que hace cuando se genera una interrupción.)

Viendo como cambian de valor las variables he descubierto que mientras que los valores de RXBUF cambian al meterle sonido, la igualdad no se cumple y el TXBUF siempre es 0x0000!!!!!!

Y el programa funciona!!! :o

Alguien me podría explicar esto?



Por otro lado tengo un soft que solo procesa la información y quiero integrarle un filtro..
No encuentro modo alguno!!
Tengo el código en C del filtro y tengo un programa que lee y emite la misma señal en mi tarjeta (devlopment target dsPIC30f6014..)

Ayuda..
GRACIAS  :)

12
Microcontroladores / Solución Al Warning Icdwar0020
« en: Martes 8 de Marzo de 2005, 09:25 »
Hola! he encontrado una respuesta!  :kicking:

Después de haber intentado todo lo lógico y lo no lógico he encontrado la razón de este warning que no me dejaba programar!!!!

ICDwar0020: El cable que une el ICD2 con la placa es un cable que solo se puede poner en una dirección. Probar conectándolo en el otro sentido!!

13
Microcontroladores / Filtros + Warnings
« en: Viernes 4 de Marzo de 2005, 14:43 »
Tres preguntitas  :(  :(  :(

Pregunta numero uno :(

Sigo teniendo problemas para introducir un filtro FIR en un proiecto. Intento seguir los pasos, pero tengo problemas. No tendrá alguien un Fir integrado ya en cualquier proiecto que trate la señal en una interrupción

Ademas el ICD2 me está dando problemas v6.50

Pregunta numero dos :(  
Y no hay manera de quitarlo...

"ICDWarn0020: Invalid target device id expected=0x18, read=0x0)
El error aparece al programar.

Pregunta numero tres: :(

Como he leido que el problema puede ser de la versión de MPLAB he instalado la versión 7.0
pero aquí me da constantemente otro error.

el 0058 y tambien he leido que puede ser de la versión.

Qué puedo hacer?

Creeis que puede tener relación  la dircción en la que pones el cable que conecta la tarjeta  con el ICD2?

Gracias !!!!
 :hola:

14
Microcontroladores / Problemas Con Filtrado Y Mplab
« en: Viernes 4 de Marzo de 2005, 12:27 »
HOLA!! :lol:

Pregunta 1:

No consigo acabar de filtrar!!   :angry:

creo mi código en C del filtro con la herramienta  DsPICfdLite

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??
Alguien tiene un ejemplo de un filtro integrado a un proyecto cualquiera ya creado?

Pregunta 2:
Dado que derrepente me aparecía warning 0020 me he bajado la versión MPLAB 7.0
y este me da otro error del que he leido en este foro que parece que es de la versión el 0083!! Alguien lo confirma? Tiene solución?

Luego voy a volver a la versión vieja 6.5!

Pregunta 3:

Alguien me podría decir si el error 0020 puede ser debido al conector del cable que conecta el ICD2 con la placa?  Importa qué lado del cable coloques en el ICD2?


Gracias a todos como siempre!!! :hola:

(Esto de las versiones.. &lt;_&lt; )



GRACIAS

15
Microcontroladores / Re: Integración Dspicfdlite
« en: Jueves 3 de Marzo de 2005, 11:35 »
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 :)

16
Microcontroladores / Integración Dspicfdlite
« 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:

17
Microcontroladores / Re: Software
« en: Viernes 25 de Febrero de 2005, 12:07 »
graxiax por tu ayuda!! ;)
 
Ahora para variar una pregunta..  :huh:

Creo haber entendido que MPLAB tiene una aplicación concreta para hacer tratamiento de voz..
eske quiero hacer un filtro fir, alguien podría orientarme en este ámbito?
porque el fir es mejor que el iir??

en fin:
quiero intentar filtrar una señal de voz con MPLAB. Cómo me aconsejais que lo haga??
graxiax otra vex!! :lol:

18
Microcontroladores / Software
« en: Miércoles 23 de Febrero de 2005, 09:32 »
Hola foro!! estoy de buelta!!  :P

El hardware parece que va en marcha solo me queda una duda:

Los pines que no voy a usar, los puedo dejar al aire??
Creo entender que conviene tenerlos a cero 0 a 1. cómo puedo saber a dónde hay que conectarlos??

Hablo del dsPIC30f6014...

Software:

Si alguien puede facilitarme algún programilla para la placa de evaluación del dsPIC30f6014.., se lo agradecería profundamente!!

Como siempre...gracias!!!  :hola:

19
Microcontroladores / Re: Lista De Componentes
« en: Lunes 14 de Febrero de 2005, 17:25 »
Tan útil como siempre!!! ;)

gracias..

Respecto a la dificultad del montaje tienes razón!!!
pero he conseguido unas manos muy finas que lo montarán por mi...
Eso sí, me ha pedido que le facilite el trabajo del montaje al máximo...
y lo estoy intentando, gracias a vosotros!!

gracias!! :kicking:

20
Microcontroladores / Timer2 Dspic30f6014
« en: Lunes 14 de Febrero de 2005, 17:19 »
Hola otra vez FORO!!  :P

esta vez la pregunta va por software... :comp:
(Siguiendo con el dsPIC y el Si3000...)

tengo un ejemplo de audio, y el proyecto incluye un archivo llamado timer2.c
en este apartado, hay dos funciones; init_timer2 y _ISR_T2Interrupt.
entiendo que el primero inicializa lor registros necesarios y que la segunda crea una interrupción cada cierto tiempo.

Mi pregunta es doble...

1 Porqué el dsPIC crea una interrupción? para qué? si solamente tiene que comunicarse con el codec... no debería de ser el codec quien produjera las interrupciones?

2 Qué sentido tienen los ticks? cómo puedo saber cada cuanto tiempo se dá la interrupción? Cuando llega ticks a 100?
                                            qué era ^=    ??(Lo sé muy básico... :( )???

21
Microcontroladores / Re: Lista De Componentes
« en: Viernes 11 de Febrero de 2005, 12:17 »
Gracias a todos, :P
en especial en este caso a Platy.

El archivo que adjunto contiene los esquemáticos de lo que va a ser nuestra futura placa..

bueno, como veís está en una documento word todavía...
ya veis!!! es solamente un dsPIC y el Si3000 pero bueno, para un novato como yo..
El caso es que para hacer el pedido ando un poco mal...

La tienda de eléctronica trabaja con farnell, y me pidió que le especificara lo más posible los elementos.

Os importaría darle un vistazo a los elementos que ya he definido? (Esque ya he ido a la tienda tres veces...siempre me falta algo...)

Y luego hay unos elementos que no sé cómo buscar en la web de Farnell porque no sé como se les llama...

el conector J1que es el conector para la alimentación de la placa..(9V)

el conector ICD que no sé qué características requiere,

las entradas y salidas del minijack J16 y J17.

busco el codec Si3000 y no lo tienen, cómo puedo encontrar uno parecido?

ah, tampoco encuentro las bobinas de la fuente de alimentación.

Gracias chicos!!!  ;)

P.D.He estado intentado adjuntar un archivo de word y otro de excel en un zip pero no me deja...
oseaque os mandaré aquí el word y en el siguiente mensaje el excel
tampoco me deja...
ayuda...

22
Microcontroladores / Re: Lista De Componentes
« en: Miércoles 9 de Febrero de 2005, 08:42 »
Gracias Platypus!

Tengo los esquemáticos, pero tengo que hacer el pedido de los elementos en una tienda... y la verdad no sé cómo se definen los elementos,
por ejemplo...
el dsPIC30F6014 queda definido hasí? o tengo que añadir 80PIN-TQFP?
Y cómo puedo saber qué diodos en concreto son los que usa en la placa?
Queda definido el codec diciendo: Necesito el codec Si3000 o tengo que especificar más?

Y lo del cristal ya me pierdo...
7.37ECSV?

La verdad nunca he comprado elementos..(Siempre los cojo del almacén de la uni...)
Podría alguien echarme una mano?

GRACIAS!!

23
Microcontroladores / Re: Lista De Componentes
« en: Miércoles 9 de Febrero de 2005, 08:41 »
Gracias Platypus!

Tengo los esquemáticos, pero tengo que hacer el pedido de los elementos en una tienda... y la verdad no sé cómo se definen los elementos,
por ejemplo...
el dsPIC30F6014 queda definido hasí? o tengo que añadir 80PIN-TQFP?
Y cómo puedo saber qué diodos en concreto son los que usa en la placa?
Queda definido el codec diciendo: Necesito el codec Si3000 o tengo que especificar más?

Y lo del cristal ya me pierdo...
7.37ECSV?

La verdad nunca he comprado elementos..(Siempre los cojo del almacén de la uni...)
Podría alguien echarme una mano?

GRACIAS!!

24
Microcontroladores / Lista De Componentes
« en: Martes 8 de Febrero de 2005, 10:36 »
Hola a todos!  :lol:

quiero agradecer a todo el foro por responderme con muchísima paciencia!!!

Y para agradeceroslo....
otra preguntita...

Estoy trabajando con el development board del dsPIC30F6014. E intento fabricar mi propio hardware, pero más sencillo, simplemente con el dsPIC y el codec.

Mi pregunta es...
Al comprar el development board debería de traer la lista de todos los componentes? Eske no lo encuentro por ningun lado...
Me podríais echar una mano? Tiene alguien la lista de todos los componentes???

 
Gracias!

25
Programación en C / Re: Inicialización De Registros
« en: Viernes 4 de Febrero de 2005, 12:06 »
GRACIAS!!! :smartass:

Páginas: [1] 2