PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gettime();



µcFlo
03.07.2012, 20:33
Hi,
ich wollte den Gettime() Befehl mahl ausprobieren. Und so wie ich das verstanden habe gibt es mir die Zeit seit der Asuro eingeschaltet wurde in milliSekunden an.
Also müsste es nach sagen wir 5sec 500 ausgeben und nach 10sec 10.000, ...
Also ich hab das einfach mal probiert:


#include "asuro.h"

int main(void) {
Init();
unsigned long aktTemp;
for(;;){
aktTemp = Gettime();
PrintInt(aktTemp);
SerWrite("\r\n",4);
}
}

Doch es gibt mir inerhalb von ca. 5sec werte von 1000 und größer.
Warum ist das so.

Danke
Mfg Florian

radbruch
03.07.2012, 21:14
Hallo

Gettime() gibt es ab Version 2.2 der Library und zählt die Millisekunden seit dem Programmstart in einem Longint (32bit):


// neue Zeitfunktion
unsigned long Gettime(void)
{
return ((timebase*256)+count72kHz)/72;
// return ((timebase*256)+count36kHz)/36; // Formel für 36kHz-Lib ab Version 2.3
}



ASURO Library Versions History
==============================


Version 2.2
===========

- 31.03.2005 Erweiterte Funktionen (Author: weja - Robotrixer Buxtehude)

Kurzbeschreibung der Funktionen in der neuen asuro.h, asuro.c vom 31.03.05



Leider konnten die neuen Funktionen nicht mehr in einer Extradatei untergebracht
werden, weil mehrere "alte" Funktionen verändert wurden, damit z.B. die Systemzeit
integriert werden konnte. Auch wurde die PollSwitch Funktion vom Ballast der Fließkomma-
berechnung befreit. Nun ist wieder mehr Platz für eigenen Code vorhanden.





Encoder_Init()

Dieser Befehl installiert die Interrupt Funktion für den automatischen Wegzähler.

Encoder_Start()

Startet die automatische Zählung nach

Encoder_Stop()

neu. Diese Stopp Funktion hält den Zähler an

Encoder_Set(int,int)

Setzt die Variablen encoder[0] und encoder[1]. Z.B.: Encoder_Set(0,0) setzt beide
Variablen auf Null.

switches

ist eine Variable, die, wenn Startswitch() gestartet wurde, auf wahr gesetzt wird,
sobald eine Taste gedrückt wurde. gleichzeitig wird die Tastenüberwachung wieder
abgeschaltet. Beispiel:
Start_Switch();
while (!switches){;} //wartet auf Tastendruck
// an dieser Stelle kann mit Pollswitch geprüft werden
// welche Taste gedrückt wurde, wenn nötig.
switches=FALSE; // für eine neuen Aufruf von Startswitch()

Msleep(int)

wartet die angegebene Zeit in ms. Z.B warte 10 Sekunden: Msleep(10000);

Gettime()

Gibt die Zeit, die seit dem letzten Start des Asuro vergangen ist als unsigned long zurück.
Die Angabe erfolgt auch hier in Millisekunden.

PrintInt(int)

Eine kleine Ausgabehilfe für Integerwerte.
Beispiel Zeilenweise Ausgabe der encoder Werte:
PrintInt(encoder[0]);SerWrite(" ",3);PrintInt(encoder[1]);SerWrite("\n\r",2);


31.03.05 Robotrixer Buxtehude

Version 2.1
===========

- 10.11.2003 Original Version von der ASURO CD (Author Jan Grewe - DLR)(http://sourceforge.net/projects/asuro/files/AsuroLib/)

Gruß

mic

P.S.: Ach ja, 1000ms ergeben eine Sekunde...