Gast
#3308663
Ich stehe vor folgendem Problem:
Ich muss 2 Spannungen über den ADC eines STK500-Boards mit
ATDVK90CAN1-Erweiterung einlesen.
Spannungen:0-4,5V
Ich verwende folgenden Code dafür:
#include <avr/io.h>
void AD(char Channl, char Led)
{
ADMUX &= ~(0x00 | (1<<MUX0) | (1<<MUX1) | (1<<MUX2) | (1<<MUX3));
ADMUX |= Channl;
ADCSRA |= (1 << ADSC);
while(!(ADCSRA & ~ADSC)){}
//wenn ADC-Wert über 512--> LED leuchtet nicht, unter 512--> LED
//leuchtet:
if(ADC > 512)
{
PORTB |= Led;
}
else
{
PORTB &= ~Led;
}
ADC = 0;
return;
}
int main(void)
{
DDRB = 0xFF;
PORTB = 0x00; //verbunden mit LED`s
ADCSRA |= ((1 << ADEN) | (1 << ADPS0) | (1 << ADPS1) |(1 <<ADPS2));
ADMUX |= (1 << REFS0);
while(1)
{
AD(1 << MUX2, 0b00000010);
AD((1 << MUX0) | (1 << MUX2), 0b00000001);
}
}
Das Einlesen der Spannung funktioniert zwar, allerdings lässt sich der
ADC-Wert nicht reseten. wenn ich an einem eingang eine spannung anlege
leuchtet die zweite LED also ebenfalls.
danke im voraus für jede Hilfe