Está en la página 1de 5

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

(Universidad del Perú, DECANA DE AMÉRICA)

Alumno: Franco Jose Huaman Strohmeier


Código: 14190137
Profesor: Cifuentes Noreña Ever Ernesto
Curso: Ingeniería de Control I
Implementación de un circuito de muestreo con un
atmega328p

I. Objetivos

 Implementar un contador de 4 bits mediante interrupciones.


 Aprender el uso de los temporizadores (Timer1).
 Usar interrupciones.
 Hacer un diagrama de flujo correctamente.

II. Teoría

Interrupción timer1 AVR, mediante la interrupción timer1 AVR se puede detener el


programa principal con el cual este trabajando el microcontrolador AVR, para
indicarle al microcontrolador que se dedique a realizar otras tareas, al finalizar la
interrupción timer1 AVR, se seguirá con el programa principal desde donde fue
interrumpido.
Modos de interrupción:
 Por desbordamiento del timer1
 Por la igualdad entre el registro TCNT1 y el registro OCR1A o el registro
ICR1 cuando se utiliza timer1 en modo CTC, esto quiere decir que justo en el
momento que el registro TCNT1 se iguale al valor almacenado en el registro
OCR1A o el registro ICR1, se puede programar el timer1 para que produzca una
interrupción timer1 AVR y se ejecute un evento en el pin OC1A.
 ICR1 al producirse un evento en el pin ICP1 los eventos que producen la captura
son cuando una señal que llega al pin ICP1 pasa de un alto a un bajo o cuando
la señal que llega al pin ICP1 pasa de un bajo a un alto, esto se decide por
programa, al producirse la captura se puede habilitar que el timer1 produzca
una interrupción timer1 AVR.
ISR(TIMER1_OVF_vect){
}
ISR(TIMER1_COMPA_vect){
}
ISR(TIMER1_COMPB_vect){
}
ISR(TIMER1_CAPT_vect){}
III. Diagrama de flujo
IV. Código:
#include <avr/interrupt.h>
#include <avr/io.h>
#include <stdint.h>

#define DDR_LEDS DDRF


#define PORT_LEDS PORTF

volatile static uint8_t contador=0;

int main(void){
DDR_LEDS=0xFF;
PORT_LEDS=0x00;
sei();
TIMSK1 |= (1<<OCIE1C);
OCR1C=46874;
while(1){
}}
ISR(TIMER1_COMPC_vect){
contador++;
TCNT1=0;
PORT_LEDS = contador;
If (contador==15){
Contador=0;
}
}

V. Software

Eclipse es una plataforma de desarrollo, diseñada para ser extendida de forma


indefinida a través de plug-ins. Fue concebida desde sus orígenes para

convertirse en una plataforma de integración de herramientas de desarrollo.


No tiene en mente un lenguaje específico. Proporciona herramientas para la
gestión de espacios de trabajo, escribir, desplegar, ejecutar y depurar
aplicaciones.
VI. Recomendaciones
 Lo primero que se hace en la interrupción es reiniciar y mostrar el valor después se
realizan las operaciones.
 EL modo menos complicado de conseguir el contador es usando la interrupción
por comparación.

VII. Conclusiones

 El contador se debe reiniciar al inicio de la interrupción para no perder


ningún ciclo de reloj.
 Para que una interrupción inicie, primero debes activar las interrupciones
globales con sei(), después la interrupción que queremos y finalmente la
condición para que se active.
 El timer1 permite contar hasta 65535 ciclos de reloj, lo que son 4 segundos
en el prescaler máximo.
 La forma más fácil de conseguir los 3 segundos es con el timer1.

También podría gustarte