also ich hab jetzt ein programm im internet gefunden. ich habs n bisschen verändert. ich möchte jetzt das die led's an portD leuchten wenn an PC0 ADC0 mehr als 2,5V (>512) anliegen. ist das so ok. bei mir passiert nämlich nichts.
Code:
#include <avr/io.h>
uint16_t auswertung (void);
volatile uint16_t wert=0;
int main (void)
{
uint16_t i=0,ergebnis=0;
//Ports initialisieren
DDRC = 0xFF; //Port C als Ausgang für die LED's
PORTC = 0XFF; //Pull Up's aktiviert
while(1)
{
ergebnis = auswertung();
if ( (ergebnis < 512) && (ergebnis > 1) )
{
PORTC = (0b00001111);
}
else PORTC = (0b10101010);
}
}
uint16_t auswertung (void)
{
//Initialisieren
ADCSRA = ((1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0));
ADMUX = ((1<<MUX0) | (1<<MUX1) | (1<<MUX2));
//Dummy Auslesung als Warm-Up wie im Tutorial
ADCSRA |= (1<<ADSC);
while (ADCSRA & (1<<ADSC));
//Messung
ADCSRA |= (1<<ADSC);
while (ADCSRA & (1<<ADSC));
wert = ADCL; //ERR
wert += (ADCH<<8); //Alternativ 'wert = ADCW;'
ADCSRA &= ~(1<<ADEN); //ADC Disable
return wert;
}
Lesezeichen