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:
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.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'); }![]()
MFG OLiver G







Zitieren

Lesezeichen