Ok ich hab des kleine fehler gefunden es waren sogar 2 / 3 der dritte war ein schönheits fehler.

Zu den fehlern ich hab nicht daran gedacht das die bei 0 beginne und so nie 10 ereichen können wenn die nur 10 mal zählen.

Fehler eins: if(Messung == Anzahl) -> if((Messung + 1) == Anzahl)
Fehler zwei: if(Zaehlen == Anzahl) -> if((Zaehlen + 1) == Anzahl)
Schönheits fehler: if(AkkuC0 >= 500) -> if(AkkuC0 == 500)

Und hir der ganze Code, OK den kann man noch verbessern. Was ich auch machen werde.

Code:

Code:
uint16_t SpannungsMessungen[10], Anzahl = 10;	
uint16_t Spannung = 0, Temp = 0;
int AkkuC0 = 0, I =0;
void AkkuCheck(void)															// Angabe wie oft gemessen wird ( Pro Funktion aufruf ).
{
	AkkuC0++;
	if(AkkuC0 == 500)															// Alle 500 Aufrufe wird die Funktion ausgeführt.
	{
		AkkuC0 = 0;
		Spannung = 0;
		Temp = 0;
		for(int Messung = 0; Messung < Anzahl; Messung++)
		{
			task_RP6System();													// Nur zur sicherheit
			SpannungsMessungen[Messung] = adcBat;								// 10 mal wird die AkkuSpannung gemessen.			
			if((Messung + 1) == Anzahl)
			{
				for(int Zaehlen = 0; Zaehlen < Anzahl; Zaehlen++)
				{
					Temp = Temp + SpannungsMessungen[Zaehlen];			        // Die 10 Messwerte werden Addiert.
					if((Zaehlen + 1) == Anzahl) Spannung  = Temp / Anzahl;		// Die 10 Messwerte werden und 10 geteilt.
				}
			}
		}	
	}
	// Test ausgabe 
	writeString_P(" || Akku Spannung: ");
	writeIntegerLength(Spannung , DEC, 3);
	writeChar('\n');
}
Es dauert aber bein ersten abfrage ein wenig bis die daten kommen der zähler muss ja erste 500 erreichen. ( Das mit den zähler han ich gemacht dammit der CPU nicht soviel rechnen muss.


MFG OLiver G