LECTURA Y ESCRITURA DE LOS PUERTOS DE PSoC
Una de la principales características y herramientas de trabajo con las que cuenta cualquier microcontrolador es el interactuar e intercambiar datos con diferentes dispositivos electrónicos externos, esto se consigue haciendo uso de los puertos de entrada y salida de datos con los que cuenta cada microcontrolador.
Para el caso de esta publicación se va a presentar como hacer el manejo de entrada y salida de datos digitales con los microcontroladores PSoC1, específicamente el PSoC CY8C29466.
Este PSoC cuenta con tres puertos (Port_0, Port_1 y Port_2), cualquiera de ellos puede ser utilizado como entrada o salida de tipo digital, contrario a lo que sucede con las entradas o salidas de tipo análogo para las cuales solo se cuenta con algunos pines específicos de los puertos Port_0 y Port_2.
La lectura y escritura de puertos de PSoC se puede hacer de varias maneras, en esta ocasión se van a observar dos, la primera controlando cada uno de los bits del puerto con una instrucción diferente para cada bit y la segunda controlando todos los 8 bits del puerto mediante una sola instrucción.
Lectura y escritura bit por bit:
Para poder llevar a cabo la lectura o escritura de un bit de cualquiera de los puertos se utiliza el registro PRTXDR donde “X” es el número del puerto que se quiere controlar. Para hacer referencia a alguno de los bits del puerto que se está manejando se utilizan los siguientes números hexadecimales:
Además de tener en cuenta el nombre del registro y el valor en hexadecimal del bit a utilizar, también hay que hacer uso de diferentes operaciones booleanas con las cuales se llevan a cabo comparaciones para así leer un bit del puerto o escribir un estado alto o bajo del mismo. Las operaciones más utilizadas son:
OR (a | b): Se utiliza para escribir un estado alto en un bit y su sintaxis es PRTXDR |= Bit.
AND (a & b): Se utiliza para leer un bit y su sintaxis es PRTXDR & Bit.
COMPLEMENTO (~a): Se utiliza para escribir un estado bajo en un bit y su sintaxis es PRTXDR&=~Bit.
Por ejemplo:
- Para leer el estado del Port_1_6 se debe escribir PRT1DR & 0X40;
- Para establecer un valor alto en el Port_2_1 se debe escribir PRT2DR |= 0X02;
- Para establecer un valor bajo en el Port_3_4 se debe escribir PRT3DR &= ~0X10;
Lectura y escritura de todo el puerto:
Con este método se simplifica la manera de hacer la lectura y la escritura de los puertos ya que con una sola línea de instrucciones se puede realizar la acción deseada en los 8 bits que componen el puerto que se desea controlar, ahorrándose de esta manera la tediosa labor de escribir una línea de instrucción por cada bit.
Para este método se sigue utilizando el registro PRTXDR, las diferencias con el método anterior son básicamente dos:
- Cada puerto se ve como un numero de 8 bits, por lo tanto en el momento de leer o escribir en un puerto lo que se está haciendo es comparar o asignar un numero a todo el puerto seleccionado y no solamente asignando un estado alto o bajo a cada pin. Por ejemplo si se quiere que se pongan en alto los tres primeros bits del puerto 1 bastara con la instrucción PRT1DR = 0b00000111 o lo que es igual PRT1DR = 0x07.
- En lugar de utilizar operaciones booleanas (|, &, ~, ^) para realizar las comparaciones de los estados de los bits del puerto, en este método se utilizan operadores relacionales como lo son (<, <=, >, >=, =).
PRACTICA 1 (Control de dos LED por medio de un pulsador)
El objetivo de esta práctica es leer un bit de un puerto en el cual se va a encontrar conectado un pulsador. Dependiendo si el pulsador indica un estado alto o bajo se deben prender ó apagar los LED conectados en otro puerto, esta labor se debe realizar mediante el uso de registro PRTXDR. El funcionamiento debe ser el siguiente:
En los siguientes link pueden descargar los archivos de los proyectos realizados en PSoC Designer 5.1, cada link es uno de los dos métodos descritos en esta publicación.
Práctica 1 – Método 1 (manejo bit por bit)
Práctica 1 – Método 2 (manejo de todo el puerto)
Ademas en el siguiente vídeo se muestra el desarrollo y funcionamiento de esta primera practica con los microcontroladores PSoC.
Pingback: ¿QUÉ ES PSoC DESIGNER? – Geek Electrónica
Pingback: MEJORES PRACTICAS Y RECOMENDACIONES CON PSoC 1 (PARTE 1) – Geek Electrónica