Herunterladen Inhalt Inhalt Diese Seite drucken

Systemcalls; Zugriff Auf Das Objektverzeichnis - Nanotec CANopen N5 Handbuch

Vorschau ausblenden Andere Handbücher für CANopen N5:
Inhaltsverzeichnis

Werbung

{
[...]
Out.controlWord = 1;
[...]
od_write(0x6040, 0x00, 5 ); // der Wert wird durch das Mapping
überschrieben
[...]
}
Die Zeile mit dem Befehl od_write(0x6040, 0x00, 5 ); ist wirkungslos. Wie in der Einleitung
beschrieben, werden alle Mappings am Ende jeder Millisekunde in das Objektverzeichnis kopiert.
Damit ergibt sich folgender Ablauf:
Die Funktion od_write schreibt den Wert "5" in das Objekt 6040
Am Ende des 1 ms-Zyklusses wird das Mapping geschrieben, welches ebenfalls das Objekt
6040
:00
beschreibt, allerdings mit dem Wert "1".
h
h
Somit wird - aus Sicht des Benutzers - der od_write-Befehl wirkungslos.

10.8 Systemcalls

10.8.1 Einleitung
Mit Systemcalls ist es möglich, in der Firmware eingebaute Funktionen direkt aus einem
Benutzerprogramm aufzurufen. Da eine direkte Codeausführung nur in dem geschützten Bereich
der Sandbox möglich ist, wird dies ü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 Codeausführung außerhalb der Sandbox zuzulasssen. Der Entwickler
des Benutzerprogramms muss sich jedoch um diesen Mechanismus nicht kümmern - für ihn sind die
Systemcalls wie ganz normale C-Funktionen aufrufbar. Lediglich die Datei "wrapper.h" muss - wie
üblich - eingebunden werden.

10.8.2 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
Hinweis
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() angehalten worden sein.
void 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
Version 1.2.0 / 23.07.2014 / FIR-v1426
Index des zu schreibenden Objektes im Objektverzeichnis
Subindex des zu schreibenden Objektes im Objektverzeichnis
Zu schreibender Wert
Index des zu lesenden Objektes im Objektverzeichnis
Subindex des zu lesenden Objektes im Objektverzeichnis
Inhalt des OD-Eintrags
Handbuch N5 (CANopen)
10 Programmierung mit NanoJ
:00
.
h
h
83

Werbung

Inhaltsverzeichnis
loading

Diese Anleitung auch für:

N5N5-1-2N5-2-2

Inhaltsverzeichnis