Paso 2: Control de la resistencia de pull-up
Así que, ¿cómo la resistencia de pull-up [12,13] mediante programación controlable?
Recuerdo del start-up #3, DDR, puerto, y declaraciones de PIN en Atmel Studio C/C++ controlan de la función y el estado de los puertos MCU. Por ejemplo, la instrucción parcial ' DDRB =' establecerá el registro de dirección de datos de 8 bits para el puerto B con 0s y 1s que el MCU interpreta entonces configurar los pines de puerto físico B correspondiente a la entrada y salida, respectivamente. La declaración parcial '= PINB' (por ejemplo en x = PINB), por ejemplo, lee el registro de entrada de los pines del puerto físico B. El ' PORTB =' declaración parcial a escribir registro de 8 bits a la salida del puerto B que interpreta el MCU para establecer los correspondientes pines puerto físico B - con una salvedad con respecto a las resistencias de pull-up. Y esto comienza nuestra discusión del paso actual. El paso actual utiliza el puerto B como ejemplo pero otros puertos disponibles en un MCU AVR de Atmel (tales como A, B,...) se comportan semejantemente. Recordar que la ATTiny2313A utiliza pernos de 12 a 19 para portB denota por B0 a B7, respectivamente [1] como se muestra en la tabla 1.
Consideramos un ejemplo que muestra el uso de mezcla de entrada y salida de portB que también activa una resistencia de pull-up. Por ejemplo, supongamos que sólo tenemos salidas físicos pines 13 y 14 (es decir, B1 y B2, ver tabla 1), pero requieren de insumos en el resto de los pines de Puerto B. Más Supongamos que pin 18 (es decir, B6) debe tener una resistencia de pull-up como para un interruptor similar al mostrado en el paso anterior.
En primer lugar, se centran en la resistencia de pull-up. Puede ser contratado por escrito un '1' a la entrada del perno. Deje fregadero un rato. Escribir un '0' a una clavija de entrada deshabilita el resistor de pull-up interno y establece la entrada a un estado de alta impedancia [1].
Tabla 1: Un ejemplo de pines 12-19, con entradas y salidas y PU de pull-up activadas y HZ de alta impedancia.
Pernos de físicos | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 |
Nombre | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
DDRB | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
Física PortB | En | En | En | En | En | Hacia fuera | Hacia fuera | En |
PORTB = 0b0100100
0
1
0
0
0
1
0
0
Resultado físico del Pin
HZ
PU
HZ
HZ
HZ
VCC
0V
HZ
Así que para este ejemplo, para obtener las entradas y salidas se muestra en la cuarta fila de la tabla 1, tenemos que establecer primero DDRB = 0b00000110 modo que físico pines 13 y 14 salidas y el resto son entradas. Para activar la resistencia de pull-up (PU) para el perno 18, escribimos '1' a B6, que es una entrada, como en la sexta fila. A continuación, configuramos PORTB = 0b0100100 como se muestra en la sexta fila de la tabla. La última fila muestra los Estados físicos resultantes de las clavijas de físicas 12-19. Para físicas pines 13 y 14, los valores lógicos en el registro DDRB han sido traducidos a los voltajes en los pines como se esperaba. Pernos de 12, 15-17 y 19 son las entradas y se han establecido en un estado de alta impedancia, tal como se indica por los HZ, porque DDRB puso como entradas y los bits correspondientes en la escritura PORTB ha deshabilitado las resistencias de pull-up. A menudo (pero no siempre) el programa establece DDRB y las resistencias de pull-up al inicio de la ejecución y no los reinicia. Para utilizar el puerto de entrada/salida mixto, se necesita un método para distinguir entre las clavijas de entrada y salidas así como proporcionar la capacidad independientemente leer y escribir sin afectar las resistencias de pull-up y Puerto configuración mediante programación. Aquí es donde el enmascaramiento se convierte en importante.