TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: andy_andy en 14 de Enero de 2012, 11:25:53

Título: c - assembler
Publicado por: andy_andy en 14 de Enero de 2012, 11:25:53
hola a todos!, primero quisiera felicitarles por el foro me ayudo con algunas dudas q tenia sobre comunicacion usb con el pic 18f2550.
estoy haciendo un proyecto con ibuttons y comunicacion usb, la parte del ibutton ya la tengo hecha en assembler y a la parte q me estoy introduciendo es a usb el cual vi q es mas sencillo en c q en assembler, mi pregunta es si es posible hacer en c la parte de usb y luego usarlo como libreria para llamar desde mi programa pricipal q esta en assembler   :D.
para assembler programo en el mplab, y para c en el ccs.

saludos.
Título: Re: c - assembler
Publicado por: Diego E. en 14 de Enero de 2012, 13:10:58
Hola amigo, yo utilicé assembler mucho tiempo y cuando requerí USB tuve que pasarme a CCS, es muy fácil, revisa esto (http://www.todopic.com.ar/foros/index.php?topic=33893.msg283577#msg283577)

En el foro hay demasiada información, pero revisa este ejemplo (http://www.todopic.com.ar/foros/index.php?topic=28166.msg236984#msg236984)

Saludos.
Título: Re: c - assembler
Publicado por: andy_andy en 14 de Enero de 2012, 13:36:49
Gracias Diego!!, me sirvio de mucho, si tengo alguna otra duda les avisare!
Título: Re: c - assembler
Publicado por: JBQ en 15 de Enero de 2012, 03:37:56
Pero la duda quedo pendiente... será posible jalar la libreria del usb hecha en C por un firmware hecho en assembly???
De repente introduciendo el archivo objeto de la libreria del usb desarrollada en C, o como *.lib (claro, siempre y cuando se este trabajando en código recoletable)... o definitivamente no es posible...
Título: Re: c - assembler
Publicado por: IngRandall en 16 de Enero de 2012, 16:26:15
Hola JBQ, la verdad no entendí mucho tu pregunta, pero creo que definitivamente no... vamos a ver, tu preguntabas si se podía utilizar una librería hecha en C, en un proyecto que estas realizando en asm o que el compilador sea de asm???... la única forma es que realices un proyecto en donde el compilador este en C y el  proyecto lo escriba en asm (que si se puede), y agregues todas las librerías en C que quieras.
Título: Re: c - assembler
Publicado por: JBQ en 17 de Enero de 2012, 04:48:17
... si se podía utilizar una librería hecha en C, en un proyecto que estas realizando en asm ???...

Exacto, pongamolos más detallado...

Como se sabe, cuando se desarrolla un firmware en MPLAB en lenguaje assmebly, el ensamblador genera muchos archivos... entre ellos (si se trabaja con el metodo de código recoletable) *.o *.coff *.hex; y si queremos generara una libreria, *.lib. Pues bien, en las pruebas que he realizado en este tipo de método de programación, he notado que al programar en assembly se pueden añadir archivos del tipo *.o, *.asm, *.lib, y ensambla perfectamente; es más, el manual del linker recomienda generar la mayor cantidad de *.asm y/o *.lib para mantener el orden en el firmware.

Ahora, yo suponia que el compilador del C, de repente genera algunos de estos archivos (*.o, *.lib), ya que entre los pasos del compilador está la de generar el texto escrito en C en lenguaje assembler; de esta manera podríamos añadir a nuestro proyecto que se esta desarrollando en lenguaje assembly con el método del código recoletable, las rutinas ya desarrolladas en C.

Exactamente a eso me refería...saludos.
Título: Re: c - assembler
Publicado por: IngRandall en 17 de Enero de 2012, 09:57:40
Osea realizar las rutinas en C que necesitas, las compilas y luego buscar el archivo asm generado y lo agregas a tu proyecto... si es asi, pues claro es una buena idea para realizar rutinas difíciles y no tengas tiempo  :D
Título: Re: c - assembler
Publicado por: fabianjsm en 17 de Enero de 2012, 11:27:43
Podes compilar el código escrito en C, lo que genera su correspondiente código objeto, luego compilar el código escrito en ASM, obteniendo así otro código objeto, y luego enlazarlos en un único archivo binario, donde las funciones escritas en C pueden ser llamadas desde las funciones escritas en ASM y viceversa. En teoría esto permite mezclar muchos lenguajes y sacar provecho a sus características particulares, pero infelizmente las convenciones de llamadas y el formato de los objetos no es estándar, lo que entre muchos otros problemas, hacen que esto no sea siempre posible. Casi todos los compiladores permiten hacer esto, tienes que leer un poco el manual, por sobre todo por el tema del paso de parámetros.
Te paso un ejemplo para SDCC.
Título: Re: c - assembler
Publicado por: rina en 17 de Enero de 2012, 17:40:06
si el rpograma tendrias que acerlo ya sea en c o en basic que son compiladores muy faciles.. ero dentro del programa tienes que agregar las partes en codigo ams. esto telo permiten los compiladores para poder sacar mayor rendimiento a algunas partes del programa.

pero aun asi anadie sele dio por preguntarse como funcionan esas bibliotecas. y dico como funcionan es al completo. por que cuando cargar una biblioteca de esas lo unico que estas aciendo es copiar una parte de programa ya creado en ams.
y bueno yo tampoco estoy muy aplicado en usar y leer en mplab..
Título: Re: c - assembler
Publicado por: JBQ en 17 de Enero de 2012, 22:55:53
Ya veo, eso quiere decir que los compiladores de C si crean un archivo objeto y es posible añadirlos... ya corre por cuenta de uno saber diseñar un buen algoritmo que permita llamar a esa especifica función tratandola como si fuera un objeto. Es una buena prueba que hare más adelante... saludos.
Título: Re: c - assembler
Publicado por: rina en 17 de Enero de 2012, 23:45:02
exactamente, pero que esos ficheros en el fondo tambien los hay para agregar en mplab en la pajina de http://www.microchip.com/ lo que no me acuerdo muy bien en que parte... la verdad que tienen archivos objeto (mas bien bibliotecas ya echas) para todos sus productos).
para facilitar el trabajo con sus productos me imagino.

un saludo
Título: Re: c - assembler
Publicado por: JBQ en 18 de Enero de 2012, 00:37:14
exactamente, pero que esos ficheros en el fondo tambien los hay para agregar en mplab en la pajina de http://www.microchip.com/ lo que no me acuerdo muy bien en que parte... la verdad que tienen archivos objeto (mas bien bibliotecas ya echas) para todos sus productos).
para facilitar el trabajo con sus productos me imagino.

un saludo

Claro que los hay, dependiendo de la aplicación, pero la mayoria (y creo que todos en realidad), no estan escritos como para añadirlos directamente al proyecto, hay que analizarlos, interpretarlos y adecuarlos a una función tipo objeto para poder recién trabajarlos. De ahi la idea de hacerlos con las rutinas hechas en C.
Título: Re: c - assembler
Publicado por: MerLiNz en 18 de Enero de 2012, 01:28:38
en el mplab puedes añadir al proyecto el .c y el .s luego el linkeador se encarga de unirte todo junto, eso si, debes declarar las funciones externas que uses tanto en uno como en otro para que al compilarlo no te de error.
Título: Re: c - assembler
Publicado por: JBQ en 18 de Enero de 2012, 06:51:50
en el mplab puedes añadir al proyecto el .c y el .s luego el linkeador se encarga de unirte todo junto, eso si, debes declarar las funciones externas que uses tanto en uno como en otro para que al compilarlo no te de error.

Eso quiere decir que tranquilamente puedo añadir el *.c al proyecto tranquilamente??? recuerda que se esta trabajando en assembler (con el MPASM y todo eso).

Por cierto, eso de declarar las funciones como externas, y las de la funcion como global lo tenia controlado, de todas maneras gracias por la sugerencia.
Título: Re: c - assembler
Publicado por: rina en 18 de Enero de 2012, 08:52:52
pues posiblemente. yo las tengo bistas y no es mas que una partde de mplab. pero ya te digo que nolo entiendo bien..  por eso nunca entendi muy bien como funcionan. tansolo te indican que asi asa y por aya con esos comandos y ba. tampoco puedo decir mucho por que nunca ice nada.. pero que me prestaba intentar usar un pic normal sin usb e intentar acer algo aunque fuera muchisimo mas lento. pero para mandar 4 datos.. y envez de por el puerto com intentar acer alti pito usb.. pero que la verdad nisiquiera se como se envia la informacion por el puerto usb. bamos electricamente

un saludo
Título: Re: c - assembler
Publicado por: MerLiNz en 18 de Enero de 2012, 11:18:03
en el mplab puedes añadir al proyecto el .c y el .s luego el linkeador se encarga de unirte todo junto, eso si, debes declarar las funciones externas que uses tanto en uno como en otro para que al compilarlo no te de error.

Eso quiere decir que tranquilamente puedo añadir el *.c al proyecto tranquilamente??? recuerda que se esta trabajando en assembler (con el MPASM y todo eso).

Por cierto, eso de declarar las funciones como externas, y las de la funcion como global lo tenia controlado, de todas maneras gracias por la sugerencia.

si, si puedes, pero necesitaras tener instalado el C18, es mas, las librerias que trae el C18 la mayoria estan en asm, como las divisiones. Se compila todo por separado y luego se une con el linker. Otra solucion es usar el _asm _endasm en el codigo poniendo tu codigo asm en el codigo del C
Título: Re: c - assembler
Publicado por: JBQ en 18 de Enero de 2012, 19:19:16
chevere... gracias por el dato.