Forum: Mikrocontroller und Digitale Elektronik _sleep_ Funktion in Keil


von Denny C. (wooosa)


Lesenswert?

Hallo,

Ich hab mich letzte Woche ein wenig mit dem MDK-ARM beschäftigt und bin 
in der Hilfe auf die Funktion _sleep_ gestoßen. Dort heißt es:

>Summary

>void Sleep (ulong milliseconds) /* Delay script n milliseconds */

>Description

>The sleep function may be used to delay script execution in debug
>functions or signal functions. The sleep function is useful to allow
>small delays in the script language execution and can be used in
>simulation mode and target debugging mode.
>Return Value

>None
>Example

>The following script switches the oscillator on an ARM device for fast
>download speed.

>// Switching from Slow Clock to Main Oscillator for faster Downloading
>_WDWORD(0xFFFF4020, 0x002F0002);     // APMC_CGMR: Enable Main Oscillator
>_sleep_(10);                         // Wait for stable Main Oscillator
>_WDWORD(0xFFFF4020, 0x002F4002);     // APMC_CGMR: Switch to Main >Oscillator


Will ich nun aber die Funktion einbinden wie in den Beispiel, 
(_sleep_(1000);) bekomme ich immer eine Fehlermeldung. Muss ich dafür 
extra noch einen Header einbinden? Bisher hab ich nur die LPC2148.h und 
die iostream.h eingebunden.

Noch was, die Hilfe von Keil finde ich ja grausam. Gibt es irgendwo eine 
Aufstellung über die verfügbaren Header files und die Funktionen die 
darin enthalten sind? Die Kontrollerspezifischen Header bei Keil hab ich 
schon gefunden.

Danke.

MFG,
D.C.

von ARM-Fan (Gast)


Lesenswert?

Wie du schon mehrfach selbst zitierst:

>to allow small delays in the *script language*

handelt es sich dabei um Kommandos, die für µVisions Scriptsprache
gelten und nicht Teil einer Lib für den Microcontroller sind.

von Ampfing (Gast)


Lesenswert?

Hi,

Du hast aber schon gelesen, dass das eine Simulator-Funktion ist, oder? 
Das ist eben keine Funktion, die Du in Deinem Programm verwenden kannst, 
sondern um ein im µVision-Simulator ausgeführtes Skript warten zu 
lassen.
Nur um sicher zu gehen...

Viele Grüße

von Denny C. (wooosa)


Lesenswert?

argh, ok Danke. Gelesen schon, aber dann wohl überlesen. Dann werd ich 
meine Delays wohl weiterhin mit ner for Schleife oder per Timer 
abarbeiten lassen.

Was ist den mit den Headerfiles, gibts da irgendwo eine Liste was Keil 
da mitbringt bzw. was man alles verwenden kann? In der Hilfe kann ich 
leider nichts finden.

MFG
D.C.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Denny Crane schrieb:
> argh, ok Danke. Gelesen schon, aber dann wohl überlesen. Dann werd ich
> meine Delays wohl weiterhin mit ner for Schleife oder per Timer
> abarbeiten lassen.

Im Zweifel immer Timer. Es sein denn der Controller hat gar nichts 
anderes zu tun und man verzichtet auch auf Stromsparfunktionen. 
Schleifen sind grade bei Controllern mit diversen Einstellungen für z.B. 
Memory-Access-Wait-States und PLL. immer wieder Quelle für Verdruss. 
Leidlich genau geht das noch, wenn man beim Start eine Kalibrierung mit 
Hilfe eines Timers durchführt.

> Was ist den mit den Headerfiles, gibts da irgendwo eine Liste was Keil
> da mitbringt bzw. was man alles verwenden kann? In der Hilfe kann ich
> leider nichts finden.

Headerdateien für die Defintion von Controllerregistern finden sich im 
Installationsverzeichnis unter ...ARM\INC\... (oder ähnlich, 
Eval.-Version derzeit nicht installiert). Für Funktionen der C-Library 
(z.B. sowas wie strcat) sollte die Dokumentation schon erläutern, 
welcher .h-Datei eingebunden werden muss.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.