¡Esta es una revisión vieja del documento!


← descripcion_software_hardware ^ inicio^primeros_pasos→

Primeros Pasos


La aplicación contiene un conjunto de bloques gráficos para diversas aplicaciones divididos por categorias. A continuación se explica la categoría de retrasos y pines de Entrada-Salida:

  1. Retrasos: Contiene los bloques para hacer retrasos en milisegundos (ms) y microsegundos (us), los bloques son:

  2. Pines E-S: Permite configurar los pines de entrada y salida de cada uno de los puertos del microcontrolador Atmega 328p. Este microcontrolador contiene 4 puertos (A,B,C,D), con un total de 32 pines. La tarjeta de desarrollo no cambia el orden de los pines (numeración) y respeta su estructura como aparece en el siguiente esquema:

Esquemático Atmega328P

  • Los bloques de esta categoria son los siguientes:

Bloques categoría Bloques

  • Pin en alto: Permite asignar un (1) lógico al pin seleccionado. Este bloque configura automáticamente el Pin seleccionado.
  • Pin en bajo: Permite asignar un (0) lógico al pin seleccionado. Este bloque configura automáticamente el Pin seleccionado.
  • Leer pin en alto: Permite leer el estado de un pin en 1 lógico, por ejemplo, si cuando se presiona el pulsador su estado es 1 este bloque leerá el valor.
  • Leer pin en bajo: Permite leer el estado de un pin en 0 lógico.
  • Escribir Puerto: Asigna el valor seleccionado al puerto (A,B,C o D).
  • Configurar Puerto: Permite configurar el puerto seleccionado, tomando en cuenta que un uno lógico en el registro DDRx, donde x simboliza el puerto seleccionado, un (1) colocará este pin en modo salida y un (0) en modo entrada. Por ejemplo, si DDRD=0 indica que todo el puerto D servirá como entrada y DDRD=255 indicará que el puerto D es todo de salida. Se debe recordar que todos los registros del microcontrolador ATmega328p son de 8 bits.

2. Configuración

Siempre que se deseen usar pines E-S el algoritmo tendrá la siguiente estructura general:

  1. Configurar los pines seleccionados como entrada o salida.
  2. Usar los pines en la aplicación de acuerdo a los bloques establecidos.

A continuación se muestra un video ejemplo con el manejo de los anteriores bloques (para software y hardware). El ejemplo hace oscilar un LED sobre el PIN (PD0) con un periodo de 100ms inicialmente.


2.1.1 Código Generado

La aplicación genera un código listo para el compilador AVR-GCC, el código es el siguiente:

#include<avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>

int main(void){//Rutina principal
DDRD=1<<PD0;//Configura el PD0 como salida.
DDRD=255;//Todo el PuertoD como salida
while(1){//Bucle infinito
PORTD=1<<PD0;//Asignar un 1 al pin PD0
_delay_ms(100);//Retraso de 100ms
PORTD&=~(1<<PD0);//Asignar un o al pin PD0
_delay_ms(100);//Delay de 100ms
}
}

De acuerdo con lo mencionado el esquema para el programa de oscilación quedaría como (Conexión LED PD0-pin 30):

Ejercicios propuestos

  1. Modifica el algortimo visual para obtener diferentes unidades de tiempo para la oscilación, por ejemplo, 1 seg, 2 seg, 100ms, etc.
  2. Modifica el algoritmo para detectar cuando un pulsador es presionado, para ello utiliza la función de pin de entrada disponible en la paleta de bloques. Si el botón es presionado un LEDA debe encender indicando este evento. Para este ejemplo, el esquema de desarrollo se ve en la figura 4.
  3. Modifica el código para manejar todo un puerto de salida y mostrar el conteo de una variable tipo char declarada al inicio del algoritmo visual.

  • primeros_pasos.1559010471.txt.gz
  • Última modificación: 2019/05/28 02:27
  • por admin