#include "adc.h"
#include <avr/io.h>


adc::adc()
{

  ADMUX = 129; //(1<<REFS0); 1.1 volt referenz und eingang A1

  // Bit ADFR ("free running") in ADCSRA steht beim Einschalten
  // schon auf 0, also single conversion
  ADCSRA = (1<<ADPS1) | (1<<ADPS0);     // Frequenzvorteiler
  ADCSRA |= (1<<ADEN);                  // ADC aktivieren



  	ADMUX	|= (1<<MUX2) | (1<<MUX1) | (1<<MUX0);				//Kanal 7
	ADCSRA	|= (1<<ADEN) | (1<<ADSC) | (1<<ADPS2) | (1<<ADPS0);

  // nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man liest
  //also einen Wert und verwirft diesen, um den ADC "einschwingen" zu lassen
  ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung
  while (ADCSRA & (1<<ADSC) )
    {                                   // auf Abschluss der Konvertierung warten
    }

  // ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten
  // Wandlung nicht übernommen.
  (void) ADCW;
}


int adc::single()                           //macht genau eine messung
{
  ADMUX = 129; //(ADMUX & ~(0x1F)) | (0 & 0x1F);   // Kanal waehlen, ohne andere Bits zu beeinflußen
  ADCSRA |= (1<<ADSC);                      // eine Wandlung "single conversion"
  while (ADCSRA & (1<<ADSC) )
    {                                       // auf Abschluss der Konvertierung warten
    }
  return ADCW;                              // ADC auslesen und zurückgeben
}



