Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Emebidos PDF
Emebidos PDF
SISTEMAS EMBEBIDOS
Descripción breve
Programación y montaje de:
Visualización de secuencias con Leds implementado con el microcontrolador Atmega328
OBJETIVOS.
MARCO TEORICO.
Implementar un código de
Atmega328: Microcontrolador de alto
manera exitosa sin la
desempeño Atmega328P de 8 bits, con
utilización de las librerías de
arquitectura RISC. El Atmega328P en
arduino.
formato DIP es utilizado en el Arduino
Diseñar un código el cual
Uno R3. Posee características como: 32
nos permita crear 2
KB de memoria flash; con la capacidad
secuencias para 6 leds que
de leer-mientras escribe, 1 KB de
cuenten con un delay de
memoria EEPROM, 2 KB de SRAM, 23
300mS.
líneas de E/S de propósito general, 32
Implementar de manera
registros de proceso general, tres
correcta un pulsador, que
temporizadores flexibles/contadores
con modo de comparación, 011000
1
IMAGEN DEL PROTOTIPO
DESARROLLO.
2
/******** DECLARACION DE PORTC= 0B00100001; // Se le
VARIABLES ********/ indica al controlador encender los
leds de acuerdo a la configuracion
int secu; // Indicador de Secuencia
(0-> Sec 1 ; 1-> Sec2) _delay_ms (300); // Delay de
300ms
}
else{ // Sino (al presionar
void setup() {
pulsador...)
secu=1; // secu=1 ->
/************* CONFIGURACION SECUENCIA 2
PINES *************/
break; // // Se corta la
DDRC= 0B00111111; // PC0-5 secuencia y sale del ciclo while
Salidas para continuar a la secuencia #2
3
} break; // Se corta la
secuencia y sale del ciclo while
if ( PIND & (1<<PD2) ){
para continuar a la secuencia #1
PORTC= 0B00010010;
}
_delay_ms (300);
if ( PIND & (1<<PD2) ){
}
secu=1;
else{
PORTC= 0B00011000;
secu=1;
_delay_ms (300);
break;
}
}
else{
}
secu=0;
break;
/********** SECUENCIA 2 **********/
}
while (secu==1){ // Condición y
if ( PIND & (1<<PD2) ){
repetición Para SECUENCIA 2
secu=1;
if ( PIND & (1<<PD2) ){ // Este
condicional entra a funcionar PORTC= 0B00001100;
cuando no se presiona en
_delay_ms (300);
interruptor en el circuito
}
secu=1; // La variable se
mantiene para seguir mostrando la else{
secuencia #2
secu=0;
PORTC= 0B00110000; // Se
le indica al controlador encender break;
los leds de acuerdo a la }
configuracion
if ( PIND & (1<<PD2) ){
_delay_ms (300); // Delay de
300ms secu=1;
} PORTC= 0B00000110;
4
break; if ( PIND & (1<<PD2) ){
} secu=1;
if ( PIND & (1<<PD2) ){ PORTC= 0B00011000;
secu=1; _delay_ms (300);
PORTC= 0B00000011; }
_delay_ms (300); else{
} secu=0;
else{ break;
secu=0; }
break; }
} }
if ( PIND & (1<<PD2) ){
secu=1; CONCLUSIONES.
PORTC= 0B00000110;
Pudimos lograr los objetivos
_delay_ms (300);
descritos de este informe.
}
En el momento de realizar el
else{ código de programación, tuvimos
secu=0; en cuenta los siguientes aspectos:
break; no utilizar librerías de Arduino y
} realizar el código en lenguaje C
if ( PIND & (1<<PD2) ){ para el entorno de Arduino.
secu=1; El montaje del circuito en físico se
PORTC= 0B00001100; realizó en protoboard, teniendo en
_delay_ms (300); cuenta que se usaría el Atmega328
} fuera de la placa (hardware)
else{ Arduino Uno. Siendo así debimos
5
microcontrolador y cables para la se describía en el diagrama de
interconexión de componentes. Al conexiones). Corregimos esto, y de
momento de montar el circuito, nuevo editamos el código de
accidentalmente se colocaron los programación y nuevamente todo
leds de forma contraria. A esto y funcionó correctamente, como se
siguiendo el diagrama de esperaba.
conexiones para este montaje, solo Entendimos que la diferencia entre
pasamos el lado de las resistencias usar las interrupciones y no tener
que iba tierra, a positivo (5V), el necesidad de condicionar todo el
cual funciono, pero no programa, hace que sea más lento,
correctamente. La secuencia no se ya que el programa se hace más
visualizaba como se pedía. Por largo y le resta optimización al
consiguiente, se editó el código de sistema.
programación cambiando los ceros
por unos y unos por ceros en los
“PORTC” que se encuentran dentro
de los bucles, el cual hizo que la REFERENCIAS:
secuencia se visualizara
ATMEGA 328:
correctamente. Al analizar el
montaje en físico nuevamente, http://ww1.microchip.com/downloads/