Problema al leer la entrada analógica

0

He conectado una terminal de foto-resistencias al PIN ADC0 (PC0) de atmega320, la otra a 5V y la tercera a tierra mediante la resistencia

Estoy alimentando mi atmega con 3.7v. Mi objetivo es generar el valor de ADC0 en el pin DC6 utilizando PWM. Tengo el siguiente código:

#define F_CPU 8000000UL

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
    initPWM();
    initADC();

    while(1)
    {
        startConversion();

        OCR0A = ADCH;

        _delay_ms(20);  
    }
}

void initPWM()
{
    DDRD   = 0b01100000;   
    TCCR0A = 0b10100011; 
    TCCR0B = 0b00000001; 
}


void initADC()
{
    // Internal 2.56V voltage reference
    // set ADC0 as the ADC input channel
    ADMUX  = 0b11000000;

    // enable ADC
    // set prescaler to 128
    ADCSRA = 0b10000111;
}


void startConversion()
{
    // enable ADC
    // start conversion
    // set prescaler to 128
    ADCSRA = 0b11000111;
}

Intenté emitir tanto ADCH como ADCL a través de OCR0A, pero la intensidad de la luz del PD6 no cambia, pero si configuro 0CR0A a 255, brilla súper brillante, por lo que PWM está funcionando. Probé el fotorresistor con multímetro y obtengo de 0,6 a 1 V entre el suelo y el ADC0. ¿Alguna sugerencia?

    
pregunta 0x29a

2 respuestas

0

Resulta que el problema era un pin suelto en el ADC0, el código y la configuración son correctos. Lo siento todo el mundo.

    
respondido por el 0x29a
1

Mida el voltaje del pin con un medidor de alta impedancia (el voltaje entre el fototransistor y la resistencia) y vea si coincide con lo que tiene en el software. Si es así, debe corregir su sesgo en su transistor fotográfico o el transistor podría romperse.
Si el voltaje no coincide con el valor de su software, entonces tiene que hacer algunas tareas de depuración.

    
respondido por el laptop2d

Lea otras preguntas en las etiquetas