TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: polo1984 en 11 de Enero de 2007, 08:09:22

Título: multiplicacion de datos de 12 bits
Publicado por: polo1984 en 11 de Enero de 2007, 08:09:22
Hola.

Estoy haciendo un proyecto en el que necesito visualizar datos adquiridos de un adc de 12 bits, luego hacer el modulo de los datos adquiridos y por ultimo visualizar en un lcd.

He pensado en utilizar el pic16f876a programandolo en C, pero no se si los compiladores que hay para la programacion en C de los pics pueden realizar multiplicaciones de datos de 16 bits (el resultado por lo tanto tendria que ser de 32 bits), lo ideal para mi proyecto sería que realizase multiplicaciones de numeros enteros o en coma flotante que llegasen a valer de 0 a 2000 o de 0,0 a 200,0. En resumidas cuentas, queria saber si existe algun compilador que permita realizar operaciones de multiplicacion, raices cuadradas y divisiones con datos de 32 bits en un pic16f876a o ¿deberia ir mirando otros micros?

Para el control y adquisicion de datos del adc y la posterior visualizacion en el lcd por lo que he podido ver en este foro y en internet no deberia de resultarme muy dificil de programar o ¿tambien puedo encontrar algun problema en realizar estas funciones en C?

un saludo y gracias por adelantado a todos


Título: Re: multiplicacion de datos de 12 bits
Publicado por: dhmejia en 11 de Enero de 2007, 09:48:31
Todo lo que dices se puede hacer con el ccs, solo tienes que declarar la variable como float.  Solo debes tener en cuenta que si usas un PIC de gama baja o media las operaciones de multiplicación toman muchas líneas de código.

saludos.
Título: Re: multiplicacion de datos de 12 bits
Publicado por: MGLSOFT en 11 de Enero de 2007, 12:34:25
Si el dato son enteros (normalmente el resultado de una conversion lo es) guarda el resultado de la multiplicacion de ambos numeros de 16 bits en una variable INT32, que tiene el formato de 4 Bytes igual que el Float, pero consume menos recursos al multiplicar.

Si tu intencion es hacer un filtro promediado es mejor sumar  los valores (compatibles como suma binaria) y luego rotar a la derecha N posiciones hasta recuperar el valor de 12 bits, esto consume menos recursos que la multiplicacion y posterior division. :P