Ich stelle mal mein Datenlogger Programm rein. Dann könnt Ihr bei Bedarf etwas experimentieren.
Grüße, Hans.
Code:
//* -------- Programm zum Loggen der Odometriedaten ----*/
/* Vorgehenweise:
Dem Asuro etwas Auslauf gönnen, bis er die Daten gesammelt hat.
Dann mittels Taste 1 drücken und Hyperterminal die Daten in z.B. "Capture.txt" speichern
und diese Daten dann in Excel importieren. Excell interpretiert das Trennzeichen ";"
als Feldende. Danach die Graphik zeichnen lassen.
Ein Wert größer iMax = 50 führt sehr schnell dazu, dass der Ram-Speicher des Atmel nicht
mehr ausreicht und mindestens wirres Zeug ausgegeben wird.
Das Programm ist eigentlich ein Abfallprodukt eines größeren Proggies,
also bitte nicht am Programmierstil stören.
*/
#include "asuro.h"
int main(void)
{
int iMax = 50;
long Zeitmarke[iMax]; // Arry für laufende Zeit
unsigned int OdoLinks [iMax];
unsigned int OdoRechts [iMax];
int Zeiger = 0;
unsigned int OdoDat[2]; // Ododaten für linke und rechte Scheibe
unsigned int long tmpZeit, tmpRegelZeit;
unsigned int Ta; // Intervall für Logger in Millisekunden
Init();
Ta = 1; //20L; // Tickzeit in msec
MotorDir(FWD,FWD);
tmpRegelZeit = Gettime();
MotorSpeed(200,200);
Msleep(500); // warte, bis Motoren laufen
while (Zeiger < iMax)
{
tmpZeit = Gettime();
if (tmpZeit >= (tmpRegelZeit + (unsigned int long)Ta)) //dann ist Tickzeit verstrichen ************!!!!!
{
OdometrieData(OdoDat); // Odo-Daten lesen
if (Zeiger < iMax)
{
// Daten mit loggen
Zeitmarke[Zeiger] = Gettime();
OdoLinks[Zeiger]= OdoDat[0];
OdoRechts[Zeiger]= OdoDat[1];
Zeiger++;
}
tmpRegelZeit = tmpZeit;
}
}
MotorSpeed(0,0); // alle Maschinen stop!
SerWrite("\n\r ==== Daten gesammelt! ====",29);
int i;
char taste;
SerWrite("\n\r",2); PrintInt(Zeiger--); SerWrite(" Datensaetze gesammelt.",23);
SerWrite("\n\r Zum Schreiben Taste 1 druecken",33);
do
{
taste = PollSwitch(); taste = PollSwitch();taste = PollSwitch();
}
while (taste != 1);
SerWrite("\n\r Schreibe Daten..... ",23);
SerWrite("\n\r lfd Zeit, OdoLinks, OdoRechts",32);
SerWrite("\n\r =============================",32);
SerWrite("\n\r",2);
for(i = 0; i < Zeiger; i++)
{
PrintInt(i); SerWrite("; ",2); // die ";" helfen Excel die Daten zu importieren
PrintInt((int)Zeitmarke[i]); SerWrite("; ",2);
PrintInt(OdoLinks[i]); SerWrite("; ",2);
PrintInt(OdoRechts[i]); SerWrite("\n\r",2);
}
SerWrite("\n\r ... bin fertig! ",23);
while(1);
}
Lesezeichen