patrick-rp6
17.05.2010, 22:13
Also.... ich hab nen kleines programm geschrieben, welches die batteriespannung ausliest:
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);
}
}
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?
Nächste Frage: ist es ok, wenn ich einen berechneten korrekturfaktor einfach mit dem ermmittelten wert des adc multipliziere?
Gruß patrick
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);
}
}
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?
Nächste Frage: ist es ok, wenn ich einen berechneten korrekturfaktor einfach mit dem ermmittelten wert des adc multipliziere?
Gruß patrick