¿Realmente necesitamos conocer todo el hardware del microcontrolador para desarrollar un sistema integrado con diferentes placas de microcontrolador de código abierto disponibles en el mercado?

Sí, definitivamente puede desarrollar su propio hardware / sistema integrado sin saber cómo funciona internamente el controlador. Debido a la gran cantidad de bibliotecas de código abierto disponibles hoy en día en Internet, no necesita saberlo. Puede usarlos fácilmente tal como están y presentar una nueva idea implementada. Pero esto está bien hasta que esté diseñando su sistema como un prototipo o un proyecto de pasatiempo.

Si está desarrollando algún producto profesional que venderá al cliente , NO LE RECOMENDARÉ, NO CONOCER EL HARDWARE INTERNO . En ese caso, es necesario conocer la arquitectura del controlador. Las funciones disponibles en las bibliotecas pueden ser limitadas o diferentes a sus requisitos (en lugar de clientes). Los requisitos pueden cambiar en cualquier momento y está obligado a hacer esas modificaciones. Y según mi opinión, para aprender cualquier microcontrolador, no necesita ningún libro. las hojas de datos se explican por sí mismas.

La respuesta es sí y no (como todas las preguntas importantes en la vida 🙂). Por supuesto, incluso sin saber lo que realmente sucede dentro del controlador, puede hacer la mayoría de los sistemas que desee. Es por eso que pueden existir plataformas como Arduino. Un Arduino básicamente abstrae todo el hardware del proceso, es como un software en una caja de plástico. No necesita aprender un montón de hardware para la mayoría de los proyectos de arduino, puede obtener un escudo para que el arduino haga cualquier cosa, desde parpadear un LED hasta reproducir un mp3. Si eres un artista o un estudiante de secundaria que solo quiere que la mierda se mueva y ejecute una idea, entonces puedes hacerlo teniendo solo conocimiento de programación.

Pero, por otro lado, si quieres ser la persona que hace esos escudos y mucho más, debes saber cómo funciona tu controlador. Ahora, al saber cómo funciona el controlador, no me refiero a cosas de muy bajo nivel, como cómo se implementa una puerta en silicio (aunque eso es fascinante), lo que necesita saber es cómo funciona el controlador funcionalmente. Debe tener un conocimiento básico de cómo la máquina ejecuta el código que escribe, para eso debe saber qué hay dentro en términos de orden superior como ALU, MMU, contadores, generadores PWM, controladores de interrupciones, etc. Si mira la hoja de datos de hardware, hay un “diagrama de bloques” de los componentes internos del controlador y en buenas hojas de datos también tienen una breve explicación, eso es lo que necesita saber. Realmente me encantan las hojas de datos de ATMEL debido a esto, no necesita ningún libro si tiene hojas de datos de atmel. Tienen el diagrama de bloques explicado y al comienzo de cada capítulo una explicación de alto nivel de cómo funciona funcionalmente el circuito. Por ejemplo, busque PWM y encontrará cómo es básicamente un modo de funcionamiento del temporizador. El temporizador cuenta los pulsos internos e incrementa un registro después de cada pulso y lo compara con un registro de comparación interno. Cuando los registros de conteo y comparación coinciden, se activa una bandera. Supongamos que es un temporizador de ocho bits (cuenta de 0 a 255 y luego vuelve a 0) y almacena 128 en el registro de comparación. Ahora puede calcular que obtendrá un ciclo de trabajo del 50% debido a él. Eso es todo lo que necesita saber, nada más y nada menos.

Si desea un producto rápido de nivel de afición y confiabilidad, ¡seguro!

Si desea rendimiento y confiabilidad, necesita saber más. Es todo un compromiso entre el tiempo de desarrollo, el rendimiento, las características y la habilidad del desarrollador requerida.

Por ejemplo, usando un lenguaje basado en navegador en un BeagleBone Black, pude modificar rápidamente una demostración para parpadear un LED aproximadamente 1.5 veces por segundo. Como su única tarea. Esto le da una idea de cuán ineficiente fue esa configuración.

En un PIC de Microchip (MUCHO menos capaz), usando una combinación de C y ensamblaje, en 2K palabras de EPROM, implementé una red serie maestro / esclavo, varias otras funciones y atenuación de software de 256 niveles de múltiples puertos de LED en un ISR (Interrupción Rutina de servicio) llamado a 19.2kHz.

¿Qué se ajusta a las necesidades de su proyecto?

Desde mi experiencia, nunca recomendaría a un estudiante de ingeniería que utilizara placas de código abierto como Arduino. Realmente limitan su conocimiento sobre el funcionamiento interno del microcontrolador. Es realmente importante saber cómo funciona el microcontrolador al diseñar un sistema embebido. Suponga que está desarrollando una aplicación en la que no tiene ningún archivo de encabezado para un nuevo tipo de pantalla que vaya a utilizar. Realmente necesita comprender cómo funciona el microcontrolador y también debe comprender el funcionamiento de la pantalla. Es posible que no pueda utilizar las funciones incorporadas. Estas placas de código abierto pueden estar bien para principiantes que no saben nada sobre microcontroladores, pero al desarrollar aplicaciones del mundo real, debe ir con c para el desarrollo. También puede usar atmel studio para programar arduinos que vienen con atmel mcus.