Atmel Inicio 3: Binky uno – puerto, PIN, DDR y LED (4 / 12 paso)

Paso 4: Atmel secreto: DDR y puertos y alfileres

Este paso de la corriente toma un descanso de la construcción y prueba. La gente a menudo pregunta (y debe preguntar) como cambiar el nivel de voltaje (es decir, estado de la lógica) en un pin de Puerto MCU para que un LED parpadee (Figura 1) y como leer una entrada digital.

A menudo con respecto a un procesador o microcontrolador (MCU), uno habla de 'Puerto' significa un grupo de cables que tampoco aporta datos de la MCU o en el MCU. Para un circuito integrado, los 'cables' se refieren a las clavijas de físicas en la IC. Los microcontroladores AVR de Atmel tienen generalmente puertos con 8 pernos desde la MCU utiliza buses de datos amplia de 1 byte. Los puertos se refieren a menudo como puertos de entrada / salida o como puertos IO solo IO; Estos son los puertos de E/S digitales. Los microcontroladores de Atmel puede tener muchos puertos IO que están etiquetados como A, B y así sucesivamente. Uno encuentra a menudo las palabras clave de Atmel de PORTA, PORTB, PORTC, PORTD. Por favor leer este párrafo y observe que un puerto físico se refiere a los pins de físicos en la IC. Atmel utiliza las palabras clave de puerto y PIN (Nota caps) en referencia a la salida y la entrada y registros. Por definición, un registro [14] es un tipo de localización de memoria (tal vez mejor llamado 'ubicación de almacenamiento') con especial relaciones/interconexión de hardware. El registro no se considera para ser parte de la memoria de programa y la variable aunque es posible leer, escribir, manipular y transferir el contenido del registro.

Ahora aquí está parte del secreto. En la jerga de Atmel, la palabra puerto (según lo utilizado por ejemplo en PORTB) se refiere a un puerto de salida digital, por el que el MCU generará una tensión en los cables de salida del MCU. La palabra Atmel PIN (como los utilizados por ejemplo en PINB) significa el MCU pone el grupo de cables físicos en un estado de alta impedancia y el MCU puede leer voltajes digitales (0 o Vcc donde Vcc = 5 para la configuración de tablero del experimentador). Quizás más importantemente, PORTB y PINB se refieren al mismo grupo de cables físicos en el MCU. Un comentario similar se aplica a PORTA y PINA excepto los pines físicos serán general difieren de las que refieren el PORTB y PINB. Así que ¿cómo uno determina si un alfiler físico en el MCU es una entrada o una salida para el MCU?

Vamos a decirlo otra vez con otras palabras. Hay una diferencia entre el puerto y PIN en ATMEL usando C y C++. La palabra puerto se refiere a un registro que proporciona salidas a los pines físicos del MCU. El registro de Puerto tiendas de 1s y 0s y el MCU traduce estos valores lógicos a voltajes de Vcc y cero, respectivamente, en los pines físicos. La palabra PIN se refiere a un registro que recibe la entrada de un grupo de pines físicos. El MCU traducirá los voltajes de Vcc y cero en las clavijas físicas lógica 1s y 0s, respectivamente, para el registro PIN. Aviso la palabra física se refiere a los cables cortos reales que sobresalen del paquete MCU. A menudo usamos la palabra 'Puerto' en referencia a la colección de 8 pines; Esto debe leerse como puerto físico y pines físicos.

OK, entonces, ¿cómo se especifica si pin físico es una entrada o una salida para el MCU? Atmel AVR utiliza el concepto de datos dirección registro DDR. Cada grupo de hilos formando un puerto físico de IO tiene tal DDR y etiquetado como DDRA, DDRB, DDR, DDRD y así sucesivamente. Un DDR es un registro de 8 bits (es decir, la ubicación de almacenamiento de memoria) similar al correspondiente registro para los puertos del IO de 8 bits. Un valor de 1 en una posición de la DDR corresponde a una salida por el pin físico correspondiente. Un valor de 0 produce una entrada en el pin físico correspondiente. Por ejemplo, DDRB corresponde a física PortB. Cuando DDRB bit #i tiene el valor de 1 y luego pin #i en PortB física será una salida para el MCU. Por otro lado, cuando DDRB bit #i tiene un valor de cero pin físico #i en PortB física será una entrada. Quizás los ejemplos más concretos sería mejores.

Ejemplo 1: Solo siete entradas digitales y salida digital

Considerar física PortB en el ATTiny2313A y considere la tabla 1. La fila superior muestra los pines físicos en el paquete de la inmersión de 20 pines como se muestra en la primera página o dos de la hoja de datos de Atmel. La segunda fila muestra el nombre de Atmel para el pin físico.

Tabla 1: Ejemplo de ATTiny2313A Pin 12 como una salida y los otros pines puerto B como entradas.

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

0

0

1

Física PortB

En

En

En

En

En

En

En

Hacia fuera

Ahora, supongamos que hemos creado primero DDRB = 1 como se muestra en la tercera fila del cuadro 1. El registro DDRB ordinariamente se establecería antes de leer o escribir PortB. El MCU lee el registro DDRB y establece el pin físico #12 como una salida. Porque los otros bits de DDRB son cero, los restantes pines físicos 13-19, que se denominan B1-B7, son todas las entradas. En este punto, el programa puede leer o escribir el PortB desde la entrada y salida se han fijado.

Ejemplo 2: Dos de salida pines y 6 entradas

Tabla 2: Ejemplo con pin 13 y 14 como el resto de entradas y salidas.

Pernos de físicos

19

18

17

16

15

14

13

12

Nombre

B7

B6

B5

B4

B3

B2

B1

B0

DDRB = 00000110

0

0

0

0

0

1

1

0

Física PortB

En

En

En

En

En

Hacia fuera

Hacia fuera

En

La tercera fila de la tabla 2 muestra que en primer lugar hemos puesto DDRB = 00000110 en binario. En C/C++ está escrito como DDRB = 0b110 donde '0b' significa 'binario'. Los ceros se han omitido por simplicidad para formar el '110' parte pero pueden ser incluidos en la declaración C DDRB = 0b00000110 si lo desea. El mismo valor se puede escribir en decimal como DDRB = 6. Y se puede escribir en hexadecimal como DDRB = 0 x 06 donde el '0 x' está parado para hexadecimal. El PortB física por lo tanto tiene pin13 y pin 14 salidas y todos los otros pines como entradas.

Comentario: Esos pines físicos que son salidas serán capaces de generar cualquiera de los dos Estados, es decir, cero y Vcc. Para nuestro proyecto, el Consejo del experimentador utiliza Vcc = 5 v, mientras que la cuerda en una caja de plástico utiliza Vcc como el voltaje de la batería, que puede ir desde 4,9 voltios a 3 voltios dependiendo del estado de carga de las baterías. La tensión de salida puede utilizarse entonces para controlar otros componentes. Atmel pines físicos pueden 40mA fuente o sumidero de corriente. Para verificar, se refieren a las características eléctricas de las hojas de especificaciones y datos como http://www.atmel.com/Images/doc8246.pdf. Así que puede proporcionar el pin de salida (es decir, origen) corriente diagonal cuando el pin físico tiene sobre la tensión de salida de + Vcc o puede recibir corriente (es decir, fregadero) cuando el pin físico tiene 0v.

Ejemplo 3: Escribir valores en salidas

OK, así que vamos a tomar un par de ejemplos para usar DDRB, PORTB y PINB. Primero considerar el PORTB.

Tabla 3: Ejemplo fabricación de pernos del IO puerto B salidas.

Pernos de físicos

19

18

17

16

15

14

13

12

Nombre

B7

B6

B5

B4

B3

B2

B1

B0

DDRB

1

1

1

1

1

1

1

1

Física PortB

Hacia fuera

Hacia fuera

Hacia fuera

Hacia fuera

Hacia fuera

Hacia fuera

Hacia fuera

Hacia fuera

PORTB = 0b0100100

0

1

0

0

0

1

0

0

Resultado físico del Pin

0V

VCC

0V

0V

0V

VCC

0V

0V

En el ejemplo de la tabla 3, primero fijamos DDRB = 0b11111111 = 0xFF = 255 decimal que pines físicos 12-19 son todas las salidas para el MCU. A continuación Supongamos que escribimos el siguiente byte al registro de salida de B como PORTB = 0b0100100 como se muestra en la sexta fila de la tabla 3. Nota ' PORTB =' significa establecer el PortB salida de registro a un valor – es más fácil pensar de PORTB como una variable y ' PORTB =' igualan de medios para establecer esta variable a un valor, que el MCU se traduce en tensiones en el puerto físico. Cuando el PORTB tiene lógica '1', la salida debe exhibir la realización física de la '1' que es Vcc o, para el tablero de nuestro experimentador,

Lógica 1 = > Vcc = + 5volts

Usando la lógica 1, de esta manera permite un gran muchas plataformas diferentes con la misma codificación mientras el MCU sabe cómo transformar los valores de la lógica en los voltajes. Así que comparando las sexta y séptima filas de la tabla 3 muestra que los pernos físicos a la que se ha escrito una lógica 1 exhibirá una tensión de Vcc. Los otros pines tienen cero potencial de voltios. PUNTO importante: Los caracteres "PORTB =" significa en este caso escribir algo a los pines físicos en PortB (realmente esto primero escribe en el PORTB registrarse y luego los valores de la lógica son traducidos por tensión generando circuitos en el MCU). De esta manera, la MCU puede controlar circuitos externos.

Ejemplo 4: Leer valores de pines de entrada

Ahora consideremos otro caso donde montamos primero (en nuestro programa) DDRB = 0b00000000 (binario) = 0 x 00 (hexadecimal) = 0 (decimal) como en la tabla 4. Aquí todos los pines físicos 12-19 serán entradas debido a todos los ceros en DDRB.

Tabla 4: Ejemplo de pines 12-19 son todas las entradas.

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

0

0

0

Física PortB

En

En

En

En

En

En

En

En

V aplicada al Pin

0V

0V

0V

0V

0V

VCC

0V

VCC

Contenido PINB

0

0

0

0

0

1

0

1

Más Supongamos que algún agente externo (como yo o tú) se aplica tensiones a la MCU física fija 12-19 como se muestra en la sexta fila de la tabla 4. PUNTO importante: Usando «= PINB» significa leer los voltajes en los pines físicos correspondientes a IO PortB y convertirlos en valores de lógica. Esto se utilizaría en una instrucción de asignación de C/C++ tales como ' x = PINB'. El contenido de la variable x (es decir, PINB) puede verse en la última fila de la tabla 4 que el valor

x = 0b00000101 (binario) = 0 x 05 (hexadecimal) = 5 (decimal)

El MCU convierte Vcc sobre un pin de entrada para el valor lógico de 1 y cero de otra manera. De esta manera, la MCU puede leer los Estados de los circuitos externos.

Ejemplo 5: IO mixta y resistencias pull-up

Existe otra situación posible, mediante el cual un puerto IO tiene tanto entrada y salida y el MCU realiza una escritura al puerto. ¿Qué pasa? Para un pin que es una entrada, la escritura (usando PORTB etc.) puede activar o desactivar un resistor interno de pull-up según el bit correspondiente en la escritura sea un 1 o 0 respectivamente. Consulte Inicio 4. Lectura de un puerto (usando PINB etc.) de mezclado IO (salen unas pinzas en el puerto y el resto son de entrada) leerá la entrada cuando el pin está configurado como entrada y leerá el valor escrito anteriormente (que todavía está en el registro PORTB) si el pin físico es una salida. Consulte Inicio 4 o el manual del usuario para más detalles [0,1].

Ahora al código el Blinky uno proyecto.

Artículos Relacionados

Atmel Inicio 5: Lifeline

Atmel Inicio 5: Lifeline

M. A. Parker c2015La vida es un circuito simple basado en el microcontrolador de Atmel ATTiny2313A unidad (MCU) que funciona como una fuente de reloj sustituto para un objetivo MCU inoperante de fusibles reloj incorrecto. El proyecto, destinado a ser
Atmel Inicio 4: Dos Blinky, interruptores, resistencias pull-up y poco Ops

Atmel Inicio 4: Dos Blinky, interruptores, resistencias pull-up y poco Ops

Figura 1: Interruptores de ejemplo que pueden utilizar resistentes a las tracción MCU, delantero: foto resistor, transistor de la foto, botón; Parte posterior: ejemplo clave los cojines.M. A. Parker c2015Dos Blinky demuestra cómo el MCU puede leer fá
Atmel Inicio 2: Fusibles y circuitos de microcontroladores

Atmel Inicio 2: Fusibles y circuitos de microcontroladores

M. A. Parker c2015Fusibles y circuitos crea un circuito simple pero importante en protoboard de un experimentador que se utilizará como plataforma básica para muchos proyectos de microcontrolador y los parámetros del microcontrolador (es decir, fusib
Partir de Arduino (puertos, Pins y programación)

Partir de Arduino (puertos, Pins y programación)

todos los derechos, por lo que estoy aprendiendo el arte de Arduinoing y pensamiento te llevo a lo largo del paseo...En este tutorial:Pins - los agujeros en su Arduino y cómo utilizarlosPuertos--colecciones de pinsProgramación - Basic de programación
Cómo utilizar mBlock software para control de tablero de Arduino UNO - potenciómetro con luz LED

Cómo utilizar mBlock software para control de tablero de Arduino UNO - potenciómetro con luz LED

Comienzo a utilizar el software mBlock ya tengo mi kit de la robusteza de mBot . mBlock es un software de programación gráfico que está diseñado en base a Scratch 2.0 y compaible con Arduino UNO, mega 2560, leonardo y etc., más hardware se apoyará en
9-Charlieplexor (9-pines para 72 LEDs)

9-Charlieplexor (9-pines para 72 LEDs)

Este Instructable muestra cómo cablear una 9-Charlieplexor. (Formalmente se trata de un "circuito de Charlieplexing con 9 nodos" capaz de controlar 72 LEDs o menos.) Un método general podría tomarse de este diseño para Charlieplexors más grande.
Utilice un Linkit uno para Control de un LED de Color en la nube

Utilice un Linkit uno para Control de un LED de Color en la nube

Este es el primero de espero que muchos proyectos. Este ha sido un aprendizaje para mí y espero integrar lo que he aprendido aquí en futuros proyectos. Este proyecto supone que ya configuró arduino para trabajar con el One de Linkit.Paso 1: Herramien
Atmel arranque 1: Estudio de Atmel y programador

Atmel arranque 1: Estudio de Atmel y programador

M. A. Parker c2015Estudio instalación de Atmel (AS) y un programador representan los primeros pasos [0] en el camino al uso de una unidad individual de Atmel AVR microcontrolador MCU [1] en contraposición a la MCU-en-una-junta como Arduino [2]. Aquí
La caja del tesoro Arduino Knock-Knock

La caja del tesoro Arduino Knock-Knock

Este es mi primer proyecto de Arduino y Instructable. Que hice para mis tres nietos jóvenes que han disfrutado mucho. Compré el cuadro de la tela de Jo-Ann y tienda de artesanía y había instalado un sistema Arduino. Pongo dulces en la caja y el progr
Subir bocetos a Arduino Mini Pro uso de Arduino UNO (sin quitar el Atmel Chip)

Subir bocetos a Arduino Mini Pro uso de Arduino UNO (sin quitar el Atmel Chip)

Esto describe un procedimiento para hacer uso de USB incorporado de Arduino UNO a Serial(TTL) subir bocetos a tablero de Arduino Mini Pro sin necesidad de quitar la viruta de regulador micro Atmel de UNO. Esto es útil para aquellos empezando con plac
Cómo hacer la placa Arduino Uno más fácil... SIEMPRE! -El Breduino! (Y cómo subir bocetos directamente a él!) With Additional Hardware Options - UPDATED - JULY 2013

Cómo hacer la placa Arduino Uno más fácil... SIEMPRE! -El Breduino! (Y cómo subir bocetos directamente a él!) With Additional Hardware Options - UPDATED - JULY 2013

Paso 1: Sección 1 - construcción de la fuente de alimentación regulada de 5 voltios. Okay now before i start, something about my notes for my step-by-step PICTURE instructables that i Love to create:"solía etiquetar todas mis fotos en mi instructable
Sistema Ambilight para cada entrada conectado a su televisor. WS2812B Arduino UNO frambuesa Pi

Sistema Ambilight para cada entrada conectado a su televisor. WS2812B Arduino UNO frambuesa Pi

Siempre he querido agregar ambilight a mi TV. Se ve tan genial! Finalmente lo hice y no me decepcionó!He visto muchos videos y muchos tutoriales sobre la creación de un sistema Ambilight para tu TV pero nunca he encontrado un tutorial completo para m
Música disco con LinkIt uno

Música disco con LinkIt uno

Ahora que tienes tu LinkIt una tabla de desarrollo, ¿qué puede hacer con él?Para empezar, la oferta de conectividad que vienen con esta placa es increíblemente diversa, así que ¿por qué no hacer algo que puede disfrutar de una comunidad? En este Inst
Cómo programar ATtiny85 con la placa de Arduino uno

Cómo programar ATtiny85 con la placa de Arduino uno

En este tutorial vamos a utilizar una placa de Arduino como programador ATtiny.Para ello vamos a utilizar una tarjeta Arduino UNO como un ISP (programador) y un micro-controlador de ATtiny85.Vamos a utilizar Codebender - IDE de Arduino en línea.Con e