#include "avr/io.h"
#include "util/delay.h"
#include "stdlib.h"
#include "avr/interrupt.h"
#include "stdio.h"
int main (void) {
uint8_t durchlaufzaehler=0; //zählt die durchgänge
uint16_t messwerte=0; //messwerte werden hier abgespeichert
uint16_t endwert=0; //errechneter endwert
DDRD = 0xff; //DDRD alle Pins Ausgang
while(1)
{
for(durchlaufzaehler=0;durchlaufzaehler<30;durchla ufzaehler++) //diese schleife wird 30x durchlaufen
{
ADMUX = 0x40; // Avcc=Referenz--> AVCC geschalten wie
// im datenblatt seite 196, abbildung 96, Rechtsbündig, PC0 gewählt
ADCSRA = 0x83; // ADC eingeschaltet, Taktung/8
ADCSRA |= (1<<ADSC); // start conversion
while(ADCSRA & (1<<ADSC)); //Warte bis Wandlung wirklich fertig ist
messwerte+=ADCW; // aufsummierung der messwerte
}
endwert=messwerte/30; //durchschnitt errechnen
if(endwert<=200)
{
PORTD |= (1<<PD5);
PORTD &= ~(1<<PD6);
}
else
{
PORTD |= (1<<PD6);
PORTD &= ~(1<<PD5);
}
}
return 0;
}
Lesezeichen