Herunterladen Inhalt Inhalt Diese Seite drucken

Nanoj-Funktionen Im Nanoj-Programm; Zugriff Auf Das Objektverzeichnis - Nanotec CL3-E Technisches Handbuch

Feldbus: canopen, usb, modbus rtu
Vorschau ausblenden Andere Handbücher für CL3-E:
Inhaltsverzeichnis

Werbung

10 Programmierung mit NanoJ
1. Die Funktion od_write schreibt den Wert 5 in das Objekt 6040
2. Am Ende des 1 ms-Zyklus wird das Mapping geschrieben, welches ebenfalls das Objekt 6040
beschreibt, allerdings mit dem Wert 1.
3. Somit wird - aus Sicht des Benutzers - der od_write-Befehl wirkungslos.

10.3 NanoJ-Funktionen im NanoJ-Programm

Mit NanoJ-Funktionen ist es möglich, in der Firmware eingebaute Funktionen direkt aus einem
Benutzerprogramm aufzurufen. Eine direkte Code-Ausführung ist nur in dem geschützten Bereich der
geschützten Ausführungsumgebung möglich und wird über sogenannte Cortex-Supervisor-Calls (Svc
Calls) realisiert. Dabei wird mit dem Aufruf der Funktion ein Interrupt ausgelöst und die Firmware hat so die
Möglichkeit, temporär eine Code-Ausführung außerhalb der geschützten Ausführungsumgebung zuzulassen.
Der Entwickler des Benutzerprogramms muss sich jedoch um diesen Mechanismus nicht kümmern - für ihn
sind die NanoJ-Funktionen wie ganz normale C-Funktionen aufrufbar. Lediglich die Datei wrapper.h muss -
wie üblich - eingebunden werden.

10.3.1 Zugriff auf das Objektverzeichnis

void od_write (U32 index, U32 subindex, U32 value)
Diese Funktion schreibt den übergebenen Wert an die angegebene Stelle in das Objektverzeichnis.
index
subindex
value
Es wird dringend empfohlen, nach dem Aufruf eines od_write() die Prozessorzeit mit
yield() abzugeben. Der Wert wird zwar sofort ins OD geschrieben. Damit die Firmware jedoch
davon abhängige Aktionen auslösen kann, muss diese Rechenzeit erhalten und somit das
Benutzerprogramm beendet oder mit yield() unterbrochen worden sein.
U32 od_read (U32 index, U32 subindex)
Diese Funktion liest den Wert an der angegebenen Stelle aus dem Objektverzeichnis und gibt ihn zurück.
index
subindex
Rückgabewert
Aktives Warten auf einen Wert im Objektverzeichnis sollte immer mit einem yield() verbunden
werden.
Beispiel
while (od_read(2400,2) != 0) // wait until 2400:2 is set
{ yield(); }
Version: 3.4.0 / FIR-v2213
Index des zu schreibenden Objekts im Objektverzeichnis
Subindex des zu schreibenden Objekts im Objektverzeichnis
zu schreibender Wert
HINWEIS
Index des zu lesenden Objekts im Objektverzeichnis
Subindex des zu lesenden Objekts im Objektverzeichnis
Inhalt des OD-Eintrags
HINWEIS
:00
.
h
h
:00
h
h
181

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis