Principio microcontroladores parte 6: Escribir el primer programa para encender un LED

Sé que estás listo para escribir el primer programa. Han sido a través de mucho hasta ahora! Mientras estamos en el tema, vamos a recapitular los acontecimientos. Salió y compró el Microcontrolador AVR de Atmel de su elección. Elegí theATMega32 para mi uso. Fueron introducidos al concepto de microcontroladores cómo funcionan; y también fueron introducidos para el programador, el dispositivo que ayuda a transferir el programa en el microcontrolador. Se construyó una cómoda interfaz que se utiliza para conectar los pines SPI a los pines correctos del microcontrolador. Se verifica que los controladores de programador (USBTinyISP) fueron instalados correctamente para las versiones 32-bit y 64-bit de Windows (XP, 7 y Vista). También instaló la programación ambiente instalado el "entorno de programación" llamado WinAVR para que puedan tener un ambiente en el que escribir su programa y luego transferirlo en el microcontrolador. Y para asegurarse de que todo funciona correctamente, que solía avrdude probado el programador mientras enchufado en el ordenador y el microcontrolador. Hay que recordar que este programa es la utilidad de transferencia de programa para mover nuestro programa compilado en la memoria en el microcontrolador. Finalmente, se construyó el primer circuito para que pudiéramos tener algo que escribir un programa para. ¡ UF... eso fue mucho! Pero desde que saltó a través de todos esos obstáculos, el trabajo es sobre y navegación lisa desde aquí en. Esperemos que hayas podido obtener a través de los pasos anteriores sin problemas, así que ahora vamos a obtener con nuestro primer programa.

Aras de la simplificación, vamos a categorizar la función del microcontrolador en tres categorías: Control, detección y comunicación. Dejaremos los detalles de cómo desarrollar cada una de estas funciones y profundizar en estos detalles que escribimos los programas. Tenga en cuenta que hay muchas formas de programar estas funciones. Para el primer programa, haremos el microcontrolador "controlar" algo. Y como ustedes saben desde el post anterior, usaremos un LED para este propósito. Básicamente, encenderá el LED. ¿Sí ya sé... aburrido, derecho? Bien tengo que empezar en alguna parte! Como te llevo a través de la experiencia de programación, voy a añadir más complejidad un poco a la vez por lo que son fácilmente capaces de envolver su cabeza alrededor de estos conceptos importantes.

Así que en este momento estás probablemente preguntando... ¿Cómo hacemos un programa para controlar un LED? Bueno, es muy fácil: simplemente diremos Pin0 en PORTB a 5 voltios de salida. Recuerde que este es el pin al que está conectado el positivo (ánodo). La primera clave en este escenario es «salida», y la siguiente es "5 voltios." Hay una manera que podemos decir un pin especial para ajustarse a ser una salida de la MCU. Una vez que se ha establecido un pin para proporcionar una salida, entonces será capaz de controlar que pin y sea alto (5 voltios) o hacerlo bajo (voltaje cero). Y puesto que hay solamente dos Estados para el pin en el modo de salida (5v o 0v) y sólo dos Estados para el modo de sí mismo (de entrada o de salida), usted sólo necesita establecer el valor lógico 1 o un 0. Tenga en cuenta que debe realizarse para cada pin que queremos utilizar en nuestro circuito. Pero antes de llegar a conectar en un 1 o 0, vamos a hablar de entrada y salida. Cuando un perno está en modo de entrada, escucha un voltaje. Cuando el pasador está en modo de salida, la it puede cargar 5v o no cargada de 0v. Eso es todo!

Hay muchas maneras de hacer esto. Se trata de no confundirte, sino hacer las cosas más simples. Va ser introduciéndote a una de las muchas maneras de realizar esta tarea, y más adelante voy a explicar otros métodos al escribir otros programas. Observe sin embargo que si bien este primer método es ideal para introducir el concepto, probablemente no es tan buena en la práctica. Por lo tanto, verá otros métodos en futuros programas que dejarán pernos contextuales (los pernos a cada lado del pin de interés) inafectado, como puede muy bien han sido previamente puesto en el programa. Pero ya que estamos escribiendo un programa sencillo, no preocuparse de esta complejidad en este momento.

Para seleccionar el modo de salida de un pin, se utiliza el registro de dirección de datos (DDR). ¡ Oh hombre! ¿Qué es un registro? No dejes que esto te preocupa. Un registro es simplemente una ubicación de memoria que hace el microcontrolador reacciona de alguna manera. Utilice un registro para establecer un estado para el microcontrolador, o hacer que el microcontrolador haga algo. Es como reflejos, o le hace cosquillas. Cuando una persona hace cosquillas a otra persona, invoca a la risa. Podemos hacer el MCU hacer algo mediante el establecimiento de un valor específico en un registro. Eso es todo lo que necesitas saber en este momento.

Así que cuando se utiliza el registro DDR, que son capaces de configurar el pin salida de datos, o aceptar entrada de datos. Pero dijimos de entrada o de salida, ahora estás diciendo que los datos también. El término "datos" usados aquí simplemente añade otra dimensión a esta idea en forma de "tiempo". Si usted hace un pin de 5 voltios, entonces cero voltios y 5 voltios otra vez... realmente están enviando 1s y 0s. Con el conector, esto no es más que un estado alto (5 voltios) y luego un estado bajo (cero voltios): MCU la ve esta lógica de alta y baja. Y también puede recibir datos de la misma manera.

Hay varias formas de programar el pin0 para el puerto B de salida. Una manera de hacer esto es escribir:

DDRB = 0b00000001;

Me explico. "DDRB" se refiere al registro de dirección de datos para el puerto B; "0b" es decirle al compilador que lo que sigue es la expresión binaria de un número; y el "1" al final indica la posición del pin 0 (el primer pin en el puerto B). Recordar que hay 8 pins para el puerto B; pasadores de 0 aunque 7. También hay 8 dígitos en la línea de código. Así que cada dígito representa un pin en el puerto, y podemos utilizar los dígitos individuales para referirse específicamente a alguno de los pines en el puerto B. Así que el '1' al final de nuestra declaración del código se refiere al primer pin en Puerto B, que en este caso es pin 0. (Recordar que C y C++ son cero, por lo que se refiere el primer índice de una estructura de datos es el elemento zero'th, el segundo índice se refiere al primer elemento, etc.). No necesitamos llegar más compleja en este punto, como esto se cubre en más detalle en el futuro tutoriales. Sin embargo si quieres saber más sobre el sistema binario, marque aquí.

Ahora necesitamos aplicar 5v al pin. Esto funciona igual que la DDR código declaración hemos usado arriba. Vamos a utilizar un número binario a 5v en este pin (pin 0) con esta declaración:

PORTB = 0b00000001;

La única diferencia entre esto y lo anterior es que ahora estamos utilizando el registro del puerto. Este registro sabe los pines de este puerto específico y nos da acceso para especificar el valor de datos real (lógico 0 o 1) para estos pines.

Ahora tenemos que hablar un poco sobre la estructura general de nuestro programa. Todos los programas necesitan un lugar especificado para comenzar la ejecución. Es como darle a alguien un conjunto de instrucciones sobre cómo hacer un pastel sin decirles que paso iniciar. La función "principal" es el lugar donde todos los programas C y C++ inician la ejecución. Así que vamos a crear una función principal.

int Main
{
}

En orden para el programa entender el DDR y puerto de registro de información y cómo éstos funcionan dentro del microcontrolador, se debe agregar una instrucción include que contiene toda la información acerca de los microcontroladores AVR. Esto incluye instrucción será probablemente en todos sus programas.

#include < avr/io.h >
int Main
{
}

Cuando se inicia el proceso de compilación, la porción del preprocesador del compilador busca en el directorio "avr" del archivo "io.h". La extensión ". h" aquí indica que se trata de un archivo de encabezado, y (como su nombre lo indica) el código dentro de ese archivo se insertará al principio (cabeza) del archivo de fuente que se está creando. Ahora podemos insertar las declaraciones de DDR y el puerto en nuestro código, ya que la inclusión del archivo de cabecera io.h informó el compilador acerca de ellos.

#include < avr/io.h >
int Main
{

DDRB = 0b00000001; //Data dirección registro ajuste pin0 en salida y los pernos restantes como entrada PORTB = 0b00000001; //Set pin0 a 5 voltios

}

Ahora se establece la dirección del pin0 en salida, con un valor de 5v. Pero estamos todavía no terminados. Tenemos que mantener el microcontrolador ejecuta indefinidamente, así que tenemos una rutina para hacer esto. Esto se llama un bucle sin fin (o infinito). El bucle infinito se cerciora de que el microcontrolador no deja de realizar sus operaciones. Explicaré esto con más detalle cuando tenemos cosas que hacer dentro de este bucle. Hay varios tipos de bucles que podemos usar para este propósito, pero para esta demostración se uso el tiempo bucle. Significa lo mismo en inglés como en el código: por ejemplo, que "mientras que" tengo mi mano hacia arriba, usted debe seguir aplaudiendo.

#include < avr/io.h >
int Main
{

DDRB = 0b00000001; Datos dirección registro ajuste pin0 en salida y los pernos restantes como entrada
PORTB = 0b00000001; Set pin0 a 5 voltios
While(1)
{

//Code sería aquí lo necesario para la ejecución de más y otra vez... sin parar

}

}

Nota que utilizamos un '1' como argumento el tiempo bucle, porque cualquier cosa que no sea '0' es una verdadera lógica. Por lo tanto el tiempo condición bucle nunca será cualquier cosa otro que lógicamente verdadera, y el programa continuará a ejecutar indefinidamente (es decir; Me quedo con mi mano levantada).

Así que, aquí está el fruto de nuestro trabajo. Era un largo recorrido hasta ahora, pero te prometo, todo de aquí en adelante va a ser gratificante y menos desperdiciador de tiempo. En el siguiente video y la instrucción, vamos a hacer el parpadeo del LED. Vamos a investigar cómo crear un retraso por lo que el LED no parpadea tan rapido que parece que no es intermitente.

Artículos Relacionados

Principio microcontroladores parte 7: Revisar el primer programa para hacer el parpadeo del LED

Principio microcontroladores parte 7: Revisar el primer programa para hacer el parpadeo del LED

Ha escrito el primer programa, que enciende un LED. sí, eso fue espectacular! Bueno, no realmente, pero vamos a introducir un poco de locura para el LED. Le daremos una personalidad "bipolar" por lo que es blink. Luego paso a otro nivel y hacer
Principio microcontroladores parte 3: Transferencia de un programa en el microcontrolador (conductores)

Principio microcontroladores parte 3: Transferencia de un programa en el microcontrolador (conductores)

¡ Bienvenido a parte 3. Este es un pequeño tutorial que tratará simplemente cargar los controladores para hacer que el programador pueda comunicarse con el ordenador correctamente.Tenga en cuenta que a veces los dispositivos TinyISP y USBAVR ahora vi
Principio microcontroladores parte 9: Botón y Software contra rebotes métodos

Principio microcontroladores parte 9: Botón y Software contra rebotes métodos

En esta parte del tutorial vamos a discutir el botón y software contra rebotes.Queremos estudiar botón contra rebotes primero y en detalle, así que tenemos una buena comprensión de lo que ello conlleva. Botón contra rebotes es importante y no debe se
Principio microcontroladores parte 5: Pruebas del programador y la construcción del primer circuito

Principio microcontroladores parte 5: Pruebas del programador y la construcción del primer circuito

Hasta ahora, tienes todo el software instalado y había construido la interfaz que proporcionará una conveniente conexión del programador al microcontrolador (MCU). Para el siguiente paso, usted necesitará un protoboard (los números son muy útiles), u
Principio microcontroladores parte 2: Creación de una interfaz SPI del programador para el microcontrolador

Principio microcontroladores parte 2: Creación de una interfaz SPI del programador para el microcontrolador

Hola, esperamos que te ha gustado la parte 1 del principio microcontroladores. Vamos a mover a lo largo de a parte 2 y empezar a hablar acerca de cómo obtener tu microcontrolador para comunicarse con una computadora e interfaces.Por lo tanto, en este
Principio microcontroladores parte 13: Introducción a la interfaz de LCD

Principio microcontroladores parte 13: Introducción a la interfaz de LCD

El microcontrolador es una maravillosa pieza de ingeniería y puede hacer muchas cosas (con la ayuda de alguna gran programación), pero sigue siendo una caja negra opaca. Si desea compartir información, o mostrar lo que está tratando de hacer, necesit
Principio microcontroladores parte 11: Temporizadores, contadores y el reloj del microcontrolador

Principio microcontroladores parte 11: Temporizadores, contadores y el reloj del microcontrolador

Temporizadores y contadores son tan esenciales que usted verá muchos ejemplos que a lo largo de esta serie. Como el nombre lo dice, se utilizan temporizadores para tiempo y contando. Cuenta y el tiempo le permite hacer algunas cosas muy prolijo como
Principio microcontroladores parte 8: Agregar un botón al microcontrolador y lo que es hacer algo

Principio microcontroladores parte 8: Agregar un botón al microcontrolador y lo que es hacer algo

Una manera muy simple y fácil para proporcionar para la interacción humana con el microcontrolador es insertar un botón en el circuito. Comunicarse con equipos mediante dos principales dispositivos de entrada: el ratón y el teclado. Un teclado no es
Cómo escribir el primer programa en JAVA

Cómo escribir el primer programa en JAVA

Con el fin de empezar a escribir programas en Java, configurar su entorno de trabajo.Cualquier tipo de programa de Bloc de notas-como será suficiente para la programación en Java.Asegúrese de que tiene el Kit de desarrollo de Software de Java instala
Principio microcontroladores parte 4: Instalar el entorno de programación (WinAVR)

Principio microcontroladores parte 4: Instalar el entorno de programación (WinAVR)

Bienvenido al siguiente paso en nuestra serie. Vamos a introducir algunos elementos básicos de programación ahora. Este tutorial es simplemente acerca de cómo instalar el entorno de programación. El entorno de programación que vamos a usar se llama W
Crear su primer programa C++ utilizando Visual Studio Express IDE

Crear su primer programa C++ utilizando Visual Studio Express IDE

IntroducciónEl uso de programas informáticos afecta a nuestra vida cotidiana. Computadoras, teléfonos inteligentes y tabletas son todos a cargo de un programa de alguien creado. Gama de estos programas en dificultad dependiendo de la meta de la tarea
Su primer programa en C

Su primer programa en C

este tutorial le ayudará a crear su primer programa en lenguaje C.Aquí está lo que necesita:Sistema operativo de Windows 7 (u otro)En este tutorial, llegar caminando a través de la creación de su programa mediante un sistema operativo de Windows 7.  
Inicio microcontroladores parte 12: Intro interrupciones

Inicio microcontroladores parte 12: Intro interrupciones

En esta parte del tutorial que vamos a hablar acerca de las interrupciones de trabajo usando el contador por ejemplo. Interrupciones mejoran el uso de microcontroladores de forma enorme. Interrupciones hacen sus programas reaccionan con el hardware d
KeyChainino - llavero juego primera programable con Arduino

KeyChainino - llavero juego primera programable con Arduino

KeyChainino es un vintage llavero juego programable con Arduino donde cualquiera puede subir su propio juego con el IDE de Arduino.Si realmente te gusta el juego de Arcade, KeyChainino es para ti!No tiene ningún LCD, pero sólo 30 LEDs controlado por