TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jgpeiro06 en 06 de Febrero de 2008, 18:06:52
-
Hola a todos, estoy realizando un pequeño simulador de circuitos, similar al PSPICE.
De momento he estado implementando las rutinas para el analisis en DC, y ahora quiero implementar el analisis AC.
El problema es que para los calculos necesito trabajar con numeros complejos y no se muy bien como se come eso en C.
El programa usa matrices matrices de datos tipo float, y ahora tengo que modificar esas matrices para que contengan datos del tipo a+bi, y de alguna manera crear funciones sumacompleja( complejo x, complejo y), pero no quiero tener que usar una funcion cada vez que tenga que sumar dos complejos, ya que esto hace que el codigo fuente sea menos "limpio".
Hasta ahora podia hacer:
matrix1[0][0] += matrix2[0][0];
pero para trabajar con complejos de momento estoy obligado a hacer algo como:
matrix1[0][0].real += matrix2[0][0].real;
matrix1[0][0].imag += matrix2[0][0].imag;
o
sumacompljeos( matrix1[0][0], matrix2[0][0] );
En C++ podria definir una clase y definir los operadores o algo asi, pero en C creo que no se puede...
Un saludo.
Os adjunto una foto con el programa simulando un circuito con un par de diodos y una fuente senoidal.
-
Se supone que es para un PC y no para un micro o ¿no?
Un saludo
-
No, el proyecto esta pensado para ejecutarse dentro de un PIC32. Estoy undo el entorno de desarrollo MPLAB IDE.
Aqui os dejo un pantallazo del programa despues de simular un circuito con un diodo.
-
Que tonto estoy, ya adjunte la imgen en el primer mensaje...
-
Joe, Jorge, tú siempre haciendo proyectos de la leche. ¿Ya terminaste el MP3?
-
uno de los inconvenientes que tiene proponerse proyectos grandes es que es mucho mas facil dejarlos a mitad de camino...Lo del MP3 lo he intentado en varias ocasiones, pero mi idea principal era que el algoritmo de decodificacion lo ejecutase el dsPIC y siempre ha dicho todo el mundo que no eran suficientemente podtentes. Encontre una pagina ( http://www.underbit.com/products/mad/ ) en la que habian implementado las rutinas para docodificar MP3 con numeros en coma fija, lo cual accelera mucho el proceso si tu CPU no incorpora FPU, pero creo que ni aun asi con los dsPIC era suficiente, quizas con los PIC32...
Sobre lo de los proyectos que se me quedan grandes, cada vez me voy concienciando a que uno no tiene porque hacer todo el trabajo, que no es "desleal" apoyarse en otros proyectos como librerias y demas. Para este proyecto implemente una libreria de matrices y despues tube que hacer que las matrices manejasen datos complejos y la verdad, cambiar tanto fue un coñazo. Encontre en internet dos librerias matematicas "Numerical Recipes" y "GNU Scientific Library", ambas con documentacion aunque solo he conseguido "incrustar" la primera en mi proyecto. De un dia para otro ya tengo implementadas muhcas funciones para trabajar con matrices, tambien para hacer derivadas y para resolver sistemas de ecuaciones ecuaciones diferenciales(creo que lo necesito para el analisis transitorio).
Por cierto GNU Scientific Library es gratuita y el codigo + documentacion se pueden bajar de http://www.gnu.org/software/gsl/ si alguien lo sabe "incrustar" para usar con el MPLAB que me avise. La libreria "Numerical Recipes" (codigo + doc) tb se puede descargar desde el emule(aunque solo para experimentar en casa).
PD nocturno, me llamo Jose ;-)
-
Bueno, a mí me pasa lo mismo pero con proyectos menos ambiciosos, así que no te sientas mal en absoluto :D
Tomo nota de tu nombre.