Generalmente, si comienzo un proyecto con un nuevo microcontrolador, ¿qué nivel de comprensión debo tener sobre el microcontrolador? ¿Debería estar en condiciones de entender detalles muy básicos y cada una de sus características? Porque encuentro que tantos detalles en la hoja de datos son confusos.
Respuestas
¿Demasiados anuncios?Si vas a diseñar un circuito alrededor de un microcontrolador y escribir su código, necesitas saber lo que estás haciendo. Eso incluye absolutamente leer la hoja de datos del micro. No hay sustituto para la persona que realmente está haciendo el diseño.
Cuando estés listo para empezar a escribir el firmware, lee la hoja de datos. No necesitas leerla toda, pero no para recordar cada característica específica. El punto es recordar lo que las diversas partes pueden hacer, no los detalles de cómo hacerlos. Esos se pueden buscar más tarde. Sin embargo, necesitas saber que existen.
Mientras lees la hoja de datos, mantén dos cosas en tu mente.
Primero, cada vez que aprendas sobre una nueva capacidad, piensa en cómo podrías utilizarla a tu favor en tu proyecto, o date cuenta de que no es útil para tu proyecto. Comienzas con una idea general de la arquitectura del firmware y cómo utilizará el hardware, pero a medida que aprendes las capacidades detalladas eso puede y debe ser modificado.
Segundo, reconoce la diferencia entre conceptos y detalles de implementación. No tiene sentido intentar recordar detalles de implementación como qué bit en qué registro habilita la función UART RTS/CTS. Cuando escribas el código UART, buscarás los detalles y configurarás todos los bits de configuración como corresponda de todos modos. Lo que quieres recordar es que la UART tiene la capacidad RTS/CTS, o tal vez que la UART 1 sí pero la UART 2 no, por ejemplo, asumiendo que RTS/CTS sea significativo para tu proyecto en primer lugar.
El ejemplo de RTS/CTS también funciona con el primer punto. Cuando descubres que la UART tiene esta capacidad que no esperabas que tuviera, te detienes y piensas por un momento si podrías aprovecharla en tu proyecto, incluso si inicialmente no lo estabas considerando.
Este último punto también ilustra por qué necesitas leer la hoja de datos durante el diseño eléctrico. Puedes revisarla más rápidamente en ese momento porque no estás pensando en detalles de firmware en ese punto. Sin embargo, descubrir la capacidad RTS/CTS en una UART y no en la otra bien podría llevarte a cambiar el diseño eléctrico.
Como siempre, depende.
Si tienes un proyecto con requisitos específicos y un microcontrolador que cumple con esos requisitos, no es necesario conocer las capacidades del microcontrolador que no estás utilizando. Puede haber un periférico USB, o un controlador de LCD, o el modo de decodificación Q de los temporizadores, los cuales no necesitas. No te preocupes por esos, excepto donde pueda causarte problemas. El modo predeterminado de ciertos pines puede ser LCD, por lo que para usarlos como GPIO debes saber cómo hacerlo. Los periféricos tienden a estar sin energía / sin reloj al inicio, por lo que probablemente necesitarás usar las características de gestión de reloj / energía. Quizás ni siquiera en detalle, podría haber una biblioteca provista por el proveedor (CMSIS u algo equivalente) que se encargará de los detalles feos por ti. Pero la calidad de dicho código puede ser de bajo nivel, en cuyo caso aún necesitarás sumergirte en los detalles.
Por otro lado, si tienes un microcontrolador que quieres usar en muchos proyectos diferentes, al menos querrás conocer las diversas capacidades de tu microcontrolador, para poder evaluar si ciertos requisitos pueden cumplirse. Cuántos detalles necesitas conocer para hacer esto generalmente depende de la diferencia entre las capacidades del microcontrolador y los requisitos. Para utilizar al máximo tu hardware necesitarás conocer todos los detalles relevantes.