¿Es mejor usar toda la potencia de un microcontrolador?

MicroPerif1.png
Estructura clásica de un microcontrolador con módulos periféricos

Existen dos filosofías distintas cuando desarrollamos programas para los microcontroladores: la primera es la de usar todo el potencial que un micro en particular nos ofrece, la segunda es la de usar el micro en el modo más simple posible implementando las distintas funciones especiales a través del software que nosotros mismos hacemos. Por ejemplo, para leer un potenciómetro podemos usar el módulo ADC (convertidor analógico digital) incorporado en el micro o hacer uno todo nuestro usando solamente el código software y un normal pin de entrada-salida del micro.

Ambos métodos tienen sus ventajas y sus inconvenientes. Usar toda la potencia de un micro en particular nos permite desarrollar programas más fácilmente y de calidad mayor pero por otro lado nos quita flexibilidad y universalidad. Es decir, nuestro programa hecho para un cierto modelo de micro podría no funcionar con un micro diferente. Por ejemplo, los programas que he desarrollado tantos años atrás para el PIC16C54, uno de los primeros modelos producidos por la Microchip, podrían funcionar perfectamente con los nuevos modelos de micros porque en dichos programas, yo no usaba ninguno de los módulos especiales que los micro actuales incorporan.

MicroPerif2.png
Estrategia de programación que usa solo software para reemplazar los módulos periféricos

Al inicio he usado la palabra "filosofía" porque el problema del que hablo en realidad se presenta non solo en el sector de los microcontroladores sino en toda la tecnología moderna. Por ejemplo: ¿si quisiera aprender a sonar un instrumento musical es mejor un piano clásico o un teclado ultrasofisticado con cientos de funciones especiales? En este último caso pasaríamos la mayor parte del tiempo estudiando las funciones especiales mientras que las simples teclas blancas y negras que representan la esencia de la música serían en segundo plano. Después de poco tiempo en esta "carrera tecnológica" el teclado dejaría de fabricarse, reemplazado por otros modelos mucho más sofisticados y todo nuestro conocimiento de funciones "especiales" sobre ese específico modelo se perderían en la nada.

MicroPerif3.png
Listado de programación en assembly para leer la posición de un potenciómetro de regulación sin usar un módulo ADC incorporado

Por otro lado, no podemos pretender que nuestro software hecho en casa reemplace la sofisticación alcanzada por muchos módulos que los micros modernos incorporan. Por ejemplo, sería muy difícil (sino imposible) desarrollar con solo software un puerto USB para PC o un ADC de 12 o 14 bits. Por lo tanto, según mi punto de vista, la mejor solución es la de adaptarse a las exigencias usando lo que realmente es necesario (no usar un misil para matar un mosquito). Por ejemplo, si el objetivo es el de hacer un encendido lento de un led, podemos lograrlo simplemente con un poco de código en lugar de usar un módulo PWM incorporado. Lo mismo vale en el caso de la lectura de un potenciómetro de regulación. Aunque si al principio nos parecerá estúpido hacer este trabajo extra si nuestro micro tiene ya los respectivos módulos, con el tiempo notarán la ventaja que este método nos da.

 

8 pensamientos en “¿Es mejor usar toda la potencia de un microcontrolador?”

  1. EL QUE PUBLICO ESTE TEMA ES UN NOSTALGICO DE LOS 90s, SIGUE CLAVADO EN LA FRUSTRACION DE LOS PICs DE ESA EPOCA DONDE NO EXISTIAN MUCHAS FACILIDADES PARA LOS PROGRAMADORES TANTO EN SOFT Y HARDWARE…

    YA ES 2013… LAS COSAS CAMBIARON… ES HORA DE VER EL FUTURO Y OLVIDARSE DEL FRSTIVAL DE WOOSTCK.. ADIOS A LOS JIPIES…

    Hola Kira, he eliminado el apelativo que pusiste en tu comentario porque en este blog no hay espacio para la mala educación y la falta de respeto reciproco. Encontrás en internet muchos lugares a tu altura. Respecto a tu critica, yo no hubiera escrito ese post si no me preguntara que es la cosa mejor. Vivo en un país donde los negocios de electrónica se funden todos los días y donde todo se compra hecho. Lo que pienso es que dentro de unos años, la gente no será más capaz de construir nada con sus manos. Ese es el futuro que veo Kira. Por eso existe inventable. Uno es libre de seguir su propio destino.

  2. Kira amigo, me parece que fuiste un poco fuerte con tu comentario, no creo que sea forma de dirigirse hacia alguien que está constantemente compartiendo sus conocimientos. Además me parece un artículo completamente válido.

  3. Quiero aprender a programar microcontroladores de última generación que funcionen a alta velocidad, por ejemplo para video , que me aconsejan, como puedo lograrlo? gracias por sus respuestas

    Pregunta para el foro.

  4. Gabriel, no deberías dar tantas explicaciones a gente como este Kira. Si quiere leer el blog que lo haga y si no quiere, que no lo haga. Es simple.
    Yo no puedo decir que estoy totalmente de acuerdo con el artículo, pero incluso utilizando el mismo chip (yo utilizo los AVR de Atmel, no los PIC) he implementado ambos métodos. Por ejemplo, si necesitás cuatro AD y sólo tenés tres disponibles, utilizo un sistema parecido al tuyo para los cuatro AD. Obviamente, si en uno de los casos necesito una exactitud mucho mayor que lo que este método permite, la cosa cambia, uso el AD nativo, no hay que exagerar.
    El artículo está perfecto, no te preocupes. Es cuestión de cada uno cómo hace las cosas.

    Mis más cordiales saludos,
    Juan (de Argentina)

    Hola Juan, gracias por contarnos tu experiencia y tu visión personal. Hasta pronto.
    Gabriel

  5. Estamos en el 2016 y este articulo tiene mas vigencia que nunca. La única forma de aprender las cosas bien, es conocer la esencia de las misma.
    Aprovecho para darte las gracias Gabriel por dedicar tu tiempo a escribir estos articulo, son muy interesantes y sobre todo muy bien explicados, e aprendido un montón de cosas nuevas con tus artículos.

    Gracias amigo tienes un don para hacerte entender.

    1. Hola Keller:
      Tienes razón, se rompe el c… para hacerse entender y lograr presentar las cosas de la forma en que lo hace. Pero por sobre todo, como le comenté a uno de sus colaboradores, lo que más me sorprende es la paciencia infinita que tiene 🙂 .
      Recorriendo el blog, he visto cada pregunta que, si las hubiera tenido que responder yo… jeje, te imaginarás lo que iba a decir.
      No puedo , ni por asomo, hablar en nombre de él, pero me parece que aprecia mucho los comentarios como el tuyo.
      Después de todo, cuando uno se esfuerza mucho en algo, y encima lo comparte con los demás, lo más humano es que espere aprecio, no comentarios como el del tarado que escribió al principio.
      Y coincido contigo en que la forma correcta de aprender es entendiendo, no como los que preguntan esperando que les entreguen la solución en un paquetito para regalo, sin haber hecho ningún esfuerzo por si mismos.
      Como puedes ver, no tengo la paciencia de Gabriel 🙂 .

      Saludos, Keller,
      Juan

    2. Perdón, yo de nuevo.
      Lo que acabo de escribir no tiene nada que ver con si uno está de acuerdo con el artículo o no, sino a la forma de expresar la opinión. En algunas artículos, hubiera hecho las cosas de otra forma de lo explicado, pero por elección o preferencias, no porque considerara que el artículo estaba mal.
      La cuestión es cómo uno expresa el desacuerdo: si lo hace como insulto, está muy mal; si lo hace amablemente es otra cosa. Cuando uno le habla bien a otra persona, ésta siempre estará más dispuesta a escuchar, y si ésta le contesta bien, uno también estará dispuesto.
      Bueno, me estoy yendo por las ramas.

      ¡Saludos!
      Juan

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*