Paso 2: IO Pins
Una de las primeras cosas que quieres hacer con un microcontrolador es leer un botón y encender un LED.
Para este ejemplo voy a usar un MCU ATtiny2313. Son baratas y vienen con 18 pernos del IO, 2K de Flash y sólo 128 bytes de RAM!
Usted debe abrir la hoja de datos para seguir: Hoja de datos del ATtiny2313
Comience por construir el circuito en un protoboard. El MCU puede utilizar entre 1.8/2.7 y 5.5v, dependiendo de la versión que tienes.
Para alimentar el chip, estoy usando un 3.3v regulador, puede utilizar un valor diferente, sin embargo permanecen dentro de los valores de funcionamiento y mantener por encima de 2v, por lo que fácilmente puede encender el LED.
Conecte el regulador a una fuente de energía como una batería de 9v o un paquete de enchufe (tengo uno nominal de 9v que realmente entrega 12v!).
En el MCU conectar el pin 10 (GND) al negativo / tierra del regulador y 20 pin a VCC (alimentación).
Conecte un pulsador entre GND y el pin 13 (cualquier pin de IO se hacer, pero pegan con el mismo así que las obras sólo código para usted).
Conectar el cátodo del LED (un punto plano en el LED y el cable más corto) a través de una resistencia a tierra. Conectar el ánodo (más plomo) al pin 12.
Ahora, en el código.
Si no sabes cómo poner código en un AVR, habrá un apéndice al final de este instructable explicarla, vaya Lea ahora y volver cuando esté listo.
Para tan poco código, tenemos un montón de explicar para hacer!
DDRB es el "datos dirección registro para PortB"
Este registro determina si se utilizan los pernos del IO al medir voltaje en el pin o si puede hundir / fuente actuales.
Cuando 0 son de alta impedancia y no suministrar suficiente corriente para alimentar un LED por ejemplo, pero pueden ser utilizados para comprobar si un pin está alto o bajo.
Cuando 1 son de baja impedancia y puede suministrar o fregadero hasta generalmente 20mA, lo suficiente como para encender un LED y un transistor (para cargas más grandes).
Aquí PB0 (Pin 12) se establece en baja impedancia para manejar el LED.
La siguiente línea establece el registro PORTB. Este registro se utiliza para establecer el valor de un pin, como este perno (PB1 = Pin 13) está siendo utilizado por un botón, vamos a establecer alta por defecto.
Cuando se presiona el botón, conexión a tierra, este pin se va desplazando bajo.
El siguiente es hasta nuestro bucle infinito.
Este bucle se ejecutará hasta que se corta la corriente.
Dentro del bucle prueba el estado del botón, es una línea ocupada, así permite descomponerlo. Para el if condición tenemos:
! (PINB & (1 << PB1))
Empezamos con un no (!) que torna un verdadero a falso y visa versa.
A continuación tenemos:
PINB & (1 << PB1)
PINB es el registro de que leer para encontrar el valor de los pernos del IO.
El "&" se utiliza a la máscara sólo el valor de (1 << PB1) que como aprendimos antes, es un poco solo encendido en la posición de la PB5.
Así todo hasta estamos comprobando si el bit en PB1 en PINB es alto y luego invertirlo.
Por lo que estamos comprobando si la PB1 pin es baja (la tecla).
Si se pulsa enciende el LED: PORTB | = (1 << PB0)
Esto es usando el operador OR y la cambio izquierda que hemos cubiertos antes, ajuste el perno alto. Si no se presiona el botón desea borrar el pin (tire bajo):
PORTB & = ~ (1 << PB0)
Esto usa el operador y junto con el no y shift izquierdo para activar solo que uno de los pines de (bajo).