Microcontroladores: REGISTROS

!Bienvenidos a mi blog!

Continuando con nuestros aprendizajes en el mundo de la electrónica, pero antes quiero manifestar un agradecimiento público a todas esas personas que dedican tiempo a leer mis artículos y aquellos que me brindan apoyo, hacen que quiera entregar el máximo de mí en cada artículo.

Hoy seguimos con la introducción a los microcontroladores, ya vistas las partes físicas o de hardware en los artículos anteriores hoy nos introduciremos a la parte programable, vamos a ver qué son los registros dentro de un microcontrolador, importancia de estos, como gobiernan todo lo que ocurre en el microcontrolador, registros de propósito específico o especiales y registros de propósito general.

Pixabay

Podríamos generalizar el concepto de registro como una forma de almacenar datos o información que puede ser consultada en cualquier momento, así un registro es de naturaleza lectura/escritura.

Ahora vamos a llevarlo al plano de nuestro campo en estudio, un registro en terminos digitales es un bloque de datos en el cual se puede escribir o leer información, como pueden haber muchos registros en la memoria de un chip es necesario un direccionamiento para poder acceder a los datos correctos, es como si vamos a una ciudad a visitar a un familiar por primera vez, aunque no sepamos donde esta el lugar es fácil llegar si tenemos la dirección.

Direccionamiento: Aunque nosotros podemos darle un nombre que nos ayude a familiarizarnos con el registro estos tienen una dirección dentro de la arquitectura del microcontrolador, esta dirección nos permite usar instrucciónes para escribir o leer datos en un registro específico, el código más común para esto es el código hexadecimal. Para interpretrar una dirección se inicia con los caracteres 0x esto le indica a la máquina que el siguiente valor a leer vendrá en código hexadecimal, existen otros caracteres para binarios, decimales y octales pero por ahora no nos enredaremos en ello.

Los siguientes caracteres es un número compuesto en hexadecimal que nos dice la dirección del registro: Ejemplo 0x00 representaría el registro 0, también existe una forma conveniente de escribirlo la cual es colocar el número de la dirección en hexadecimal seguido de una h, así 0x00 es 00h.

Un registro está compuesto por bits, el número de bits representa la resolución del registro o capacidad de almacenar datos, en el caso del microcontrolador que estamos usando como ejemplo (PIC16F84) sus registros son de 8Bits iniciando en el bit0 y terminando en el bit07.

Un bloque de registro de 8 bits tendrá el siguiente formato:

BIT0BIT1BIT2BIT3BIT4BIT5BIT6BIT7
VALORVALORVALORVALORVALORVALORVALORVALOR

Donde VALOR representa el valor que pueda tener cada bit siendo posible solo 2 VALORES, a saber 0 o 1 ya que estamos en el conjunto de los números binarios como conveniencia entendemos 0 como inactivo y 1 como activo.

Registros especiales: Dentro de la arquitectura del microcontrolador existe una cantidad de registros que han sido nombrados por el diseñador así como cada uno de sus bits. Estos registros gobiernan el funcionamiento del microcontrolador y son los que nos permiten leer sus estados y escribir o modificar algunos valores para que el chip cumpla con nuestros requisitos de diseño cuando se presenten las condiciones específicas.

Un ejemplo de esto serían los puertos de lectura/escritura de datos, en el artículo Identificando los terminales de conexión dimos un vistazo al PORTA y PORTB que son aquellos pines dedicados a recibir y enviar señales desde y al exterior del microcontrolador.

PORTX se establece como un registro de datos en la arquitectura interna del microcontrolador y cada pin asociado al puerto tendra un bit asignado en el registro, si el puerto se configura como escritura cuando se lea un 0 o un 1 por un pin se escribirá este valor en el Bit Correspondiente, para tratar un solo bit en lugar de todo el registro se especifíca con una coma luego del nombre del registro, por ejemplo si queremos ver que ocurre en el Pin 0 del portA luego del comando correspondiente el direccionamiento es PORTA,0

En los registros de propósito específico existen bits que solo son de lectura, estos no pueden ser modificados y se usan solo para modificar algunos estados del micro con el fin de tomar decisiones en base a ellos o simplemente conocer ciertos valores específicos.

Registros de propósito general: Son los registros que estan libres para uso del diseñador, supongamos que quiero escribir 5 posibles valores en el PORTA según 5 condiciones posibles (un valor para cada condición), podría registrar estos valores en 5 registros de propósito general y establecer mediante programación que al darse una de las condiciones el programa seleccione el registro correspondiente a la condición dada y lo copie al PORTA.

Banco de registros: Los registros pueden ser agrupados en bancos, una conveniencia para emparejar registros o crear registros que configuren registros, ya se que suena confuso pero consideremos para simplificar un grupo de configuración y un grupo de operación, por conveniencia no deberían estar en el mismo banco ya que si intentamos escribir un dato de operación y por error lo escribimos en configuración puede afectar todo el funcionamiento del micro.


datasheet

En la imagen podemos identificar el registro PORTA en el banco 0 y a su lado en el banco 1 el regisrtro TRISA, el registro TRISA se usa para configurar el PORTA, aquí es donde se configura que pines actuaran como entrada de datos y que pones como salida, todo esto se hace al inicio del programa para lo cual es necesario mediante instrucciones cambiar al banco de configuración, configurar las operaciones y luego volver al banco de operación.

Para el caso de los microcontroladores los datasheet vienen con una gran cantidad de información, aprovechemos esto para ver cómo el datasheet nos describie un registro especifico y explica la función de cada bit.

datasheet

De la imagen podemos notar que dentro de un registro pueden existir bits que pueden cumplir una función por sí solos y otros que se deben leer en grupos, por ejemplo si queremos ver una información númerica que va desde el 1 al 10 no podremos representarlos con un solo bit, entonces se hace necesario crear grupos de bits dentro de un registro para este tipo de propósitos.

Explicar a detalle la función de cada bit de los registros específicos sería un derroche de palabras que redundarían en una información facilitada por el fabricante y de libre acceso, por eso las abordaremos según vayamos necesitando hacerlo a medida que desarrollemos nuestros programas.

Vale la pena mencionar que la forma como podemos comunicarnos con el microcontrolador para leer/escribir registros es mediante instrucciones o comandos, de estos existen muchos desde simples a complejos y dependen del lenguaje de programación que se use para programar, pero este es tema del siguiente artículo 😅.

Artículos relacionados.

Lecturas recomendadas

  • MICROCHIP, Datasheet PIC16F8X: 18-pin Flash/EEPROM 8-Bit Microcontrollers
  • José M. Angulo Usategui, Ignacio Angulo Martínez, Microcontroladores PIC: Diseño práctico de aplicaciones (primera parte)
  • Ronald J. Tocci, Neal S. Widmer, Sistemas digitales: principios y aplicaciones
  • Albert Paul Malvino, Principios de electrónica, Sexta edición.
  • Robert L. Boylestad, Electrónica: Teoría de Circuitos.
  • Timothy J. Maloney, Electrónica Industrial, dispositivos y sistemas.
H2
H3
H4
3 columns
2 columns
1 column
5 Comments