Buenas gente, tengo una gran confucion en mi cabeza, les cuento y quiero una pregunta lo mas sincera posible
Se programar en Assembler, aprendi bien y hace tiempo que lo hago para el 16F84, e derivado a otros pics de la gama baja, media y no mas de 16F877 programando en Assembler, mas adelante derivare a los DSPic. Por un lado me encanta este lenguaje (ASM) ya se me transformo en vicio y me cuesta soltarlo, pero en el fondo siento que debo aprender a programar en C por que ya me lo han dicho varios, entonces mi pregunta es para ustedes y ojala reciba la respuesta mas sincera
Que debo hacer, SEGUIR CON EL "ASSEMBLER" O MIGRAR AL "C" ?????
Desde ya Muchas Gracias.....
DieccoF , estoy alineado con el pensamiento de Carlos. Pero también depende de qué quieres hacer con los PIC o con los dsPIC. Si tu interes es hacer un par de programas y nada más o bien dedicar tu vida al tema y convertirte en un desarrollador de sistemas embebidos o un "embedded developer" como le dicen los Norteamericanos.
También empecé con el assembler en los 16F, y en los 18F. Para un proyecto largo, lo más aconsejable es usar el C aunque tengo proyectos hechos en assembler en los 16F que ocupan casi 8Kwords!! Imposible que entre ese código si lo hubiera hecho en C.
Para aprender a fondo la arquitectura el único camino que hay, en mi opinión es el assembler.
Soy fan del assembler porque soy fan de conocer el micro que programo, aún así en los 18F programo casi 100% en C. Las razones son varias:
. Me ahorro tiempo en el desarrollo
. Mis códigos son más fáciles de transportar de un 18F a otro 18F.
. Me permite abstraer problemas complejos de una forma más amena cuando hay muchos condicionales en la decisión de algunas cuestiones. Por ej. un software que debe tomar decisiones en función del resultado de muchas variables, el C es más directo. En una sola línea puedes poner un código que en assembler podría ocupar 20 o 50 líneas.
. A medida que fue pasando el tiempo han ido cayendo a mis manos proyectos cada vez más complejos, con montones de cosas para controlar, estímulos que afectan el comportamiento del hardware y posibilidades de conexión con el exterior.
Podría citar otras razones pero creo que estas son las más importantes.
Conozco la arquitectura de los 18F, eso me permite saber cómo codificar en C para que el código se ejecute más rápido y por otra parte ocupe menos!. El hecho de programar en C no significa que debes olvidarte de todo y darle (esto es muy común).
Eso sirve para un proyecto pequeño o para pequeñas cosas. Cuando debes hacer un proyecto que cuenta con muchas variables y varios condicionales, es fácil que en seguida llenes tu memoria de programa si no has sido cauteloso en estas cosas. No siempre la solución está en gastar unos dólares más y comprar un pic mas grande. A veces la solución pasa por conocer mejor la arquitectura y sacarle provecho. Esto , es un punto fundamental sobre todo en proyectos del cual se harán cientos o miles de unidades donde cada centavo de dólar cuenta.
Si alguna parte del código es crítica en tiempo o espacio, la codifico en assembler sin dudarlo.
Aún trabajando con dsPIC te sugiero que le eches un vistazo profundo a la datasheet, a la arquitectura de estos microcontroladores. Es cierto que tienen muchas instrucciones pero no por eso vas a codificar un filtro en assembler toda tu vida. Al menos échale un vistazo.
Conocer al arquitectura te permite poder encontrar errores en tus programas que si no lo sabes no los verás nunca.
Habiendo pasado por los 10F, 12F, 16F y 18F, te digo que asi mismo cuando viene un nuevo proyecto a mis manos analizo bien que pic usar. No porque ahora codifico en C18 en los 18F decidiré usar un PIC18 para todos mis proyectos!
a) Si tu proyecto se hará en pequeñas unidades y se le irán agregando cosas con el tiempo y además tienes margen económico para trabajar, entonces claro un 18F gana siempre. En ese caso lo codifico en C. Además uso el C18. Este no es el compilador más fácil o el que tenga mayor cantidad de librerías pero sí es muy versátil y configurable y puedes hacer cosas que con otros no se puede.
b) Ahora bien si te llega un proyecto del que se harán miles y debes meter un complejo firmware en un pic con 2Kword de memoria de programa y escasa RAM, bueno, ese proyecto lo hago en assembler.
Como resumen, aprende C, usa C, pero conóce el assembler así podrás tener el control y el conocimiento sobre lo que estás haciendo tú y lo que está haciendo tu PIC.
Saludos