Autor Tema: Ejemplo ADC en Free Running con un Atmega48  (Leído 4782 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JCAK

  • PIC18
  • ****
  • Mensajes: 325
Ejemplo ADC en Free Running con un Atmega48
« en: 07 de Junio de 2008, 16:07:32 »
Probado en un Atmega48

Para el que quiera comenzar con ADC, puede copiar esto en un WinAVR, compilarlo y ya sale andando.
Solo hacen falta un par de LED en el port B, y poner en el pin ADC0 una tensión entre 0 y 5 Volts.


Código: [Seleccionar]
#include <avr/io.h>

int main (void)
{

// Input/Output Ports initialization
// Port B initialization
DDRB |= (1<<1); //Configura el pin en modo OUT
DDRB |= (1<<2); //Configura el pin en modo OUT

// Habilita el ADC
ADCSRA |= (1<<ADEN);
// Selecciona el voltage de referencia.
// En este caso el voltage de ref es AVCC. En el pin AREF se debe coloca un capacitor de 100n a GND
ADMUX |= (0<<REFS1)|(1<<REFS0);
// Selecciona el canal de entrada
ADMUX |= (0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0);
//Selecciona el valor del prescaler en 64
//Con este valor se logra una velocidad de sampleo de 125 KSPS
ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);
// Ponemos el ADC en modo free-running para que todo el tiempo esté sampleando
ADCSRB |= (0<<ADTS2)|(0<<ADTS1)|(0<<ADTS0);
// Cambia la posición de los bits para hacer más facil la lectura, porque
// en este proyecto no se aprovechan los 10 bits y solo se leen 8
ADMUX |= (1<<ADLAR);
// Habilita el modo Auto Trigger
ADCSRA |= (1<<ADATE);
// Inicia la medición del ADC
ADCSRA |= (1<<ADSC);

for(;;) // loop forever
{
if(ADCH<128) // Girando el preset, según el valor en que se encuentre enciende un led u otro
{
PORTB |= (1<<1);
PORTB &= ~(1<<2);
}
else
{
PORTB &= ~(1<<1);
PORTB |= (1<<2);
}
}

// return 1;
}


Saludos
 :-/
« Última modificación: 07 de Junio de 2008, 21:52:51 por migsantiago »
Julio - Argentina

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Ejemplo ADC en Free Running con un Atmega48
« Respuesta #1 en: 26 de Noviembre de 2008, 16:17:17 »
Tu codigo esta halgo largo, se puede reducir mas.