Crocodile
09.10.2005, 19:09
Hallo zusammen,
habe ein problem mit dem ADC und zwar gibt der mir ganz falsche Werte als er müsste.Wenn ADC größer als 512 ist soll eine LED leuchten, Er gib mir aber schon einen Wert (bzw. die LED leuchtet) obwohl keine Spannung anliegt.
Vcc sowie AREF sind 4,5 V
vielen Dank schonmal
Der von mir verwendete code:
#include <avr/io.h>
int main(void)
{
int result;
ADMUX = (1<<MUX0);
ADCSRA = (1<<ADEN)|(1<<ADPS2);
while (1)
{
/* Wandlung starten */
ADCSRA |= (1<<ADSC);
/* Warten bis die AD-Wandlung abgeschloßen ist */
while ( !(ADCSRA & (1<<ADIF)) )
{
/* AD-Wert auslesen */
result = ADC;
if (result >300 )
{
DDRD |= (1<<PD6); /
PORTD |= (1<<PD6);/
PIND |= (1<<PD6);
}
else
{
DDRD &= ~(1<<PD6);
PORTD &= ~(1<<PD6);
PIND &= ~(1<<PD6);
}
}
}
}
habe ein problem mit dem ADC und zwar gibt der mir ganz falsche Werte als er müsste.Wenn ADC größer als 512 ist soll eine LED leuchten, Er gib mir aber schon einen Wert (bzw. die LED leuchtet) obwohl keine Spannung anliegt.
Vcc sowie AREF sind 4,5 V
vielen Dank schonmal
Der von mir verwendete code:
#include <avr/io.h>
int main(void)
{
int result;
ADMUX = (1<<MUX0);
ADCSRA = (1<<ADEN)|(1<<ADPS2);
while (1)
{
/* Wandlung starten */
ADCSRA |= (1<<ADSC);
/* Warten bis die AD-Wandlung abgeschloßen ist */
while ( !(ADCSRA & (1<<ADIF)) )
{
/* AD-Wert auslesen */
result = ADC;
if (result >300 )
{
DDRD |= (1<<PD6); /
PORTD |= (1<<PD6);/
PIND |= (1<<PD6);
}
else
{
DDRD &= ~(1<<PD6);
PORTD &= ~(1<<PD6);
PIND &= ~(1<<PD6);
}
}
}
}