Está en la página 1de 1

...DC_UART_TIMER_ATMEGA328P\ADC_UART_TIMER_ATMEGA328P\main.

c 1
/*
* ADC_UART_TIMER_ATMEGA328P.c
*
* Created: 01/04/2020 01:21:08 p. m.
* Author : lvarela
*/
#define F_CPU 16000000UL //FRECUENCIA DEL RELOJ CON QUE TRABAJA EL MICROCONTROLADOR
#include <avr/io.h> //ARCHIVO DE DEFINICIONES DE REGISTROS Y BITS
#include <util/delay.h> //EN CASO DE USAR LA FUNCION DELAY
#include <avr/interrupt.h> //LIBRERIA PARA CUANDO SE VAYAN A UTILIZAR INTERRUPCIONES

char Valor;

ISR(TIMER1_COMPA_vect)//RUTINA DE SERVICIO DE INTERRUPCION DEL VECTOR DE COMPARACION A


DEL TIMER 1
{
PORTB=PORTB|0X01;//PONE A 1 EL BIT PB5 (PIN 13 DE LA TARJETA ARDUINO UNO)
Valor=ADCH;//LEE EL RESULTADO DE LA CONVERSION
ADCSRA=0XC7;//CONFIGURACIONES VARIAS AL ADC
UDR0=Valor;//ENVIA EL Valor OBTENIDO CON EL ADC POR LA UART
PORTB=PORTB&0XFE;//PONE A 0 EL BIT PB5 (PIN 13 DE LA TARJETA ARDUINO UNO)
}

int main(void)
{
DDRD=0x02;//BIT PD1 DE SALIDA PARA TX DE LA UART
DDRB=255; //TODO EL PUERTO B COMO SALIDA
PORTB=0;//PONE EN CERO TODOS LOS BITS DEL PUERTO B

UCSR0B=0X18;//HABILITA TRANSMISION Y RECEPCION POR LA UART


UBRR0=3; //PARA CONFIGURAR LA VELOCIDAD

TCCR1B=0X0B;//PREESCALADOR Y OTRAS CONFIGURACIONES DEL TIMER


OCR1A=25000; //VALOR CON EL QUE SE COMPARA PARA QUE GENERE LA INTERRUPCION DE
COMPARACION A
TIMSK1=0X02;//HABILITA INTERRUPCION DE COMPARACION A DEL TIMER 1

ADMUX=0xE3; //SELECCIONA FUENTE DE AREF, TIPO DE JUSTIFICACION, CANAL DE


CONVERSION
ADCSRA=0XC7;//CONFIGURACIONES VARIAS AL ADC

sei();//HABILTA GLOBALMENTE LAS INTERRUPCIONES


while (1)
{
//AQUI SE QUEDA ESPERANDO A QUE SUCEDA ALGUNA INTERRUPCION
}
}

También podría gustarte