Also.... ich hab nen kleines programm geschrieben, welches die batteriespannung ausliest:
Meine Frage: Ist es wichtig nach jedem Beschreiben eines Feldelementes ne pause(msleep) zu machen, damit ich die neuen daten aus dem adc dataregister lese und nicht ein neues feldelement mit alten daten beschreibe?Code:void ubat_mess (void) { task_ADC(); uint16_t ubat_feld [MESSWERTE]; //Feld für die Anzahl der MESSWERTE uint16_t ubat_ges=0, u_mittel, u_korrekt; uint8_t i; startStopwatch1(); //Stoppuhr wird gestartet if(getStopwatch1() > ZEITZYKLUS) //erreicht die Stoppuhr den Wert so wird die Messung durchgeführt { for(i=0; i<MESSWERTE; i++) //Schleife für definition der einzelnen feldelemente { ubat_feld[i] = adcBat; //jedes feldelement bekommt einen wert zugewiesen ubat_ges=ubat_ges+ubat_feld[i]; //die gesamtspannung wird ermittelt mSleep(0.26); //260us warten //******FRAGE**** } u_mittel=ubat_ges/MESSWERTE; // der Mittelwert wird berechnet u_korrekt=u_mittel * 0.9815; //AUSGABE von Batteriespannung writeString_P("Batteriespannung:"); writeInteger(u_mittel, DEC); writeString_P("\n"); writeString_P("Batteriespannung mit Korrektur:"); writeInteger(u_korrekt, DEC); writeString_P("\n"); setStopwatch1(0); } }
Nächste Frage: ist es ok, wenn ich einen berechneten korrekturfaktor einfach mit dem ermmittelten wert des adc multipliziere?
Gruß patrick







Zitieren

Lesezeichen