Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

30/05/2009 #1


Que debo aprender ¿Compilador C o Basic?
Hola amigos del foro, recurro a ustedes para que me ayuden con mi duda, hace mas de un año aprendi a programar pic´s en assembler por mis propios medios (lleyendo como loco en internet y bastantes Datasheets) y he logrado dominarlo bastante bien, y ahora he llegado a un punto donde mis proyectos me han puesto en la posicion de empezar a aprender un nuevo lenguaje de programacion como C o Basic para los micros ya que el assembler se queda corto, ahora bien mi pregunta concreta es, ¿que debo aprender para no perder el tiempo?, ¿Basic o C?, he escuchado que Basic es muy facil pero nunca programe en Basic y por lo que he visto en internet los compiladores en C son mas usados que los de Basic, para mi desgracia cuando en la Uni me dieron C++ el preofesor era muy malo para no decir extra malo y no aprendi absolutamente nada, es decir que voy a tener que aprender el nuevo lenguaje desde cero, y quisiera que me dijeran que beneficios me trea un lenguaje sobre el otro porque por algo existen los dos.

Saludos y agradeciendo de ante mano sus comentarios.
30/05/2009 #2

Avatar de Dr. Zoidberg

No lo pienses dos veces. Aprende C y con el podrás hacer lo que desees con el PIC.
El BASIC para PICs es bastante bueno, pero las posibilidades de biliotecas externas y software de terceros que puedes incorporar a tus proyectos con PIC vuelcan todo al lado del C.

Saludos!
30/05/2009 #3
Visitante


¿Como que ASM se queda corto?
Con ensamblador tienes el máximo control sobre la máquina, si algo se queda corto es tu mente.
Entre menor abstracción, mejor el programa y me refiero al tiempo de ejecución.
Si eres un haragán de los que prefieren decirle a la computadora que hacer y no como hacerlo, mejor no programes, la programación no es para haraganes.
30/05/2009 #4


Ezavalla gracias por tu respuesta, y marrioxcc mente es lo que me sobra simplemente que cuando el programa se a larga y tiene que hacer demaciadas cosa se hace dificil seguirle la corriente y ademas por algo sera que las conferencias de Microchip las dictan orientadas a C y no a ASM, si quieres decirle haragan a alguien dile eso a los ingenieros de Microchip y todo el tiempo que me ahorre programando lo invierto en otras cosas que necesiten mas atensión y de paso si alguien me ofrece una herramienta que me me facilite las cosas la tomo y no por haragan si no por que por algo las crearon y el calificativo de haragan esta de mas.
30/05/2009 #5


Te recomiendo que utilices C, si bien Basic es mucho mas fácil de aprender e incorporar al principio no es lo mas recomendable, ya que a la larga los que iniciaron con dicho lenguaje luego tienen problemas al migrar a otros de mas bajo nivel. Te lo digo por que e visto a personas que les sucedía.
Con respecto a las herramientas a usar tienes, para Windows, el compilador hitech que brinda microchip. Existe una versión demo con algunas limitaciones. Podes usarlo como un accesorio del MPLAB o simplemente ejecutando el IDE que ya tiene incorporado en modo MSDOS.
Actualmente estoy utilizando sdcc, un compilador alternativo al hitech open source, desde Ubuntu con el PikLab como IDE principal, tiene muy buenas referencias y no he encontrado problemas.

Saludos.
30/05/2009 #6
Moderador

Avatar de Chico3001

Yo tambien me inclino por aprender C.... es muchisimo mas usado que el basic...
31/05/2009 #7

Avatar de Eclip-se

Hola.
Si ven el codigo fuente del PICKIT2, parte de ese codigo esta echo en assembler. Asi que para proyectos en los que se desea exactitud en el tiempo se deben usar los 2 lenguajes. Y si en las conferencias hablan solo del C, es por que es mas facil de explicar y que entiendad.
Y con respecto al numero de lineas que ocupa un programa realizado en assembler facilmente se pueden hacer subrutinas, en archivos independientes y asi solo se vera la parte funcional de la aplicacion y no los detalles como se ejecuta.
31/05/2009 #8

Avatar de Ardogan

Voto por C.
Te va a servir para todos los microcontroladores que traigan algo para programarlos aparte de ensamblador, también para la PC (C, C++, Visual C++, C#; incluso por si tenés que hacer algo en linux).
El lenguaje C para programar vendría a ser el idioma inglés a nivel internacional.
Además fijate que incluso las arquitecturas de los microcontroladores se optimiza para C (familia pic18f, los dspic incorporan registros para manejar loops, etc).
Más si tenés que optar por aprender desde 0. Lo único que podría justificar usar basic es que lo vengas usando desde antes y tengas una buena experiencia acumulada, lo que te ahorraría tiempo en programar ante la alternativa de aprender un lenguaje nuevo.
Saludos
31/05/2009 #9

Avatar de Dr. Zoidberg

Eclip-se dijo:
Si ven el codigo fuente del PICKIT2, parte de ese codigo esta echo en assembler. Asi que para proyectos en los que se desea exactitud en el tiempo se deben usar los 2 lenguajes. Y si en las conferencias hablan solo del C, es por que es mas facil de explicar y que entiendad.
Disculpame, pero eso que te he marcado en negrita es una mentira gigante.

Se habla del lenguaje C por que permite estar muuuy cerca de la performance del ensablador sin tener que pasar la penurias de programar en ese lenguaje. Normalmente, la velocidad de ejecución es la casi misma que en assembler, pero lograda desde un lenguaje de alto nivel, con las optimizaciones a cargo del compilador, no de un ser humano que, sin entrenamiento extensivo, optimiza de cualquier manera y obtiene resultados "lamentables".

No he dicho que no haga falta el assembler, pero si fuera necesario...los compiladores modernos permiten mezclarlo directamente con el código en C, con construcciones del tipo asm { assembler_acá_adentro } y eso logra que interactúe directamente con las variables del programa sin hacer cosas raras o complicadas.

Yo he programado en assembler microcontroladores de todo tipo y colores, pero desde que están los compiladores en C como herramienta de desarrollo, NUNCA y digo NUNCA volví a usar el assembler...y en mi trabajo los programas de microcontroladores son todos programas que se ejecutan en tiempo real, donde los eventos deben ocurrir y controlarse con intervalos de decenas de microsegundos en el mejor de los casos....así que eso de la precisión del tiempo en assembler...es otro cuento. Y si no te gusta medir tiempos en C, el compilador CSS incluye un kernel de tiempo real con el puedes ajustar los tiempos de ejecución y respuesta al valor que se te antoje. Ahora, si estamos hablando de "medir tiempo" usando instrucciones NOP y bucles que las repitan....entonces estás en la liga de los principiantes.

Saludos!
31/05/2009 #10


Gracias a todos por sus aclaratorias y creo que me quedo claro que C es lo que manda y voy a empezar a prender ese lenguaje lo mas pronto posible, Gracias.

Saludos
31/05/2009 #11


marioxcc dijo:
¿Como que ASM se queda corto?
Con ensamblador tienes el máximo control sobre la máquina, si algo se queda corto es tu mente.
Entre menor abstracción, mejor el programa y me refiero al tiempo de ejecución.
Si eres un haragán de los que prefieren decirle a la computadora que hacer y no como hacerlo, mejor no programes, la programación no es para haraganes.
Totalmente de acuerdo.
01/06/2009 #12

Avatar de george.manson.69

hola a todos..el ensamblador es lo maximo..ahorra memoria...y es mas veloz y exacto...pero bueno
yo he programado en los trs lenguajes...y para mi mi favorito..el que nome a dado ningun problema para aprenderlo mas rapido es el C, tengo el ccs c en mplab y es bastante bueno...io diria que aprendieras C es lo mejor, y ahora es el programa mas usado...una comparacion..como hablar ingles...es necesario hablar ingles para poder ir a trabar a otras partes y todo eso eso pasa igual con el C, en todo el mundo es universal...
01/06/2009 #13

Avatar de Eclip-se

ezavalla dijo:
Yo he programado en assembler microcontroladores de todo tipo y colores, pero desde que están los compiladores en C como herramienta de desarrollo, NUNCA y digo NUNCA volví a usar el assembler...y en mi trabajo los programas de microcontroladores son todos programas que se ejecutan en tiempo real, donde los eventos deben ocurrir y controlarse con intervalos de decenas de microsegundos en el mejor de los casos....así que eso de la precisión del tiempo en assembler...es otro cuento. Y si no te gusta medir tiempos en C, el compilador CSS incluye un kernel de tiempo real con el puedes ajustar los tiempos de ejecución y respuesta al valor que se te antoje. Ahora, si estamos hablando de "medir tiempo" usando instrucciones NOP y bucles que las repitan....entonces estás en la liga de los principiantes.
Saludos!
Hola, con respecto a la frase puesta en "Negrillas", si el PICKIT 2 que es un proyecto de mediana complejidad usa assambler no se diga otro tipos de proyectos mas complejos.
Por ejemplo hay algoritmos usados en el procesamiento digital de señales que estan echos en assmbler. En algunas ocaciones se debe usar assembler y C.
En la mayoria de proyectos simples es suficente con C o Basic.
02/06/2009 #14


Hola amigos el assembler es bueno y te ahorra menmoria pero si vas a realizar aplicaciones mas complejas te recomiendo el basic aunque este es poco eficiente y te ocupa mucha memoria tienes la opcion de lenguaje c este es mucho mejor pero un poco mas complicado pero no imposible
02/06/2009 #15


Bueno ya me baja el demo de CCS y por lo que he observado este compilador te ayuda a ahorrar tiempo en la programacion en comparacion al ASM, ahora bien por todos lo comentarios que han puesto y por lo que he investigadopuedo ver que de verda el programar en C tienes menos lineas que escribir, ojo sin quitarle al ASM que todos sabemos que en el se puede hacer todo, lo unico es que me esta costando entender como programar en C pero bueno no desistire en aprender este lenguaje
02/06/2009 #16

Avatar de Meta

Se recomienda en un principio el ASM, luego el C. No te extrañe que en el futuro, alguien haga un compilador bajo C#.
04/06/2009 #17


hola,
pues yo puedo decirles que he programado diferentes marcas de microcontroladores en aplicaciones grandes y para controles de tiempo, interrupciones y todo lo que necesita precision se debe hacer en ensamblador y en enalisis de datos y procesamiento es mejor hacerlo en un lenguaje de mas alto nivel como C o Basic, y si me preguntan cual recomiendo, les recomiendo el lenguaje C, es el mas usado y el que te permite buen control del micro.
06/06/2009 #18
Visitante


ezavalla: concurdo contigo sobre la crítica a Eclip-se, pero un humano especialista (científico de la computación por ejemplo) creará muchisimo mejor código que el resultante de compilar C.
07/06/2009 #19


Microcontroladores en linux
a manera de comentario, les puedo decir que ya hay microcontroladores que trabajan en linux, un ejemplo de ello es el AT91sam de atmel, o el ap7000 tambien de atmel, y como la tendencia indica que linux estara en su apogeo en poco tiempo. lo mejor es aprender C, en especial GCC para micros. Hay una compilacion de GCC para micros Atmel y la pueden buscar en la red como WinAvr e instalarla como parte del AVRstudio para los que programan micros de Atmel.

Tambien hay micro de otas casa como Texas Instrument como el Stellaris ARM CORTEX que seguramente ya soportan linux.
y he leido que hay micros que trabajan con una virtual machine en java, a si que lo mejor es checar que tipo de microcontrolador se va a usar y en base a eso seleccionar el lenguaje.

pueden checar estos linx

http://www.atmel.com/products/at91/
http://focus.ti.com/general/docs/gen...r+OT+stellaris
08/06/2009 #20

Avatar de Eclip-se

marioxcc dijo:
ezavalla: concurdo contigo sobre la crítica a Eclip-se, pero un humano especialista (científico de la computación por ejemplo) creará muchisimo mejor código que el resultante de compilar C.
No es cuestion de creer, ya que al estar desarrollando aplicaciones, ahi se ve la necesidad de usar el lenguaje de programacion mas optimo.

Les pongo algunos ejemplos en los cuales considero que no se podrian realizar sin assembler:

-Osciloscopios
-Frecuencimetros
-Electrocardiogramas
-Decodificadores de TV (Por supresion de sincronismo)
-Programadores
-Y otros mas.

He realizado varios proyectos, a pesar de que son como hobby siempre necesito juntar assembler y C.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.