Hi, stimmt ich hätte ja auch mal den kompletten Code nehmen können.
Ist alles der Reihe nach aufgebaut, ohne Interrupts.
Hier noch einmal das, was vor meiner Hauptschleife steht:
Code:
#define F_CPU 8000000UL //Geschwindigkeit des MCs 10MHz da 3.3V Versorgungsspannung
#include <util/delay.h> //Damit Verzögerungszeiten angegeben werden können
#include <avr/io.h> //Für Ein- und Ausgänge
#include <avr/pgmspace.h>
#include <inttypes.h>
#include <math.h>
//////////////////////////////////////////////////////////////////////////
//ADC Messung mit Dummyreadout
uint16_t readADC(uint8_t channel)
{
//Variablendefinition ohne Vorzeichen
uint8_t i;
uint16_t result = 0;
// Den ADC aktivieren, kein Prescaling
ADCSRA = (1<<ADEN);
//Kanal des Multiplexers wählen, AVcc als Referenzspannung einstellen
ADMUX = channel | (1<<REFS0);
// Dummyreadout
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));
//Spannung auslesen und Durchschnittswert ausrechnen.
for(i=0; i<3; i++)
{
//Einmalige Wandlung
ADCSRA |= (1<<ADSC);
//Auf Ergebnis warten
while(ADCSRA & (1<<ADSC));
//Ergebnis in Variable "result" speichern
result += ADCW;
}
// ADC wieder deaktivieren
ADCSRA &= ~(1<<ADEN);
result /= 3;
return result;
}
Ahh klasse habs nun gerafft wie das mit der Box geht...immerhin schonmal das ^^
Lesezeichen