ADwin
werden nicht verglichen, d.h. die Nachricht wird (sofern es von diesem
Bit abhängt) in das Objekt übernommen.
– Relevante Bits werden in der globalen Maske festgelegt, indem sie dort
gesetzt werden.
Durch die globale Maske kann ein Message-Objekt für den Empfang von Nach-
richten mit verschiedenen Identifiern (ID) genutzt werden. Das folgende Bei-
spiel zeigt die Zuordnung der Nachrichten-ID 1...4 zu den Message-Objekt-ID
1...4, wenn alle Bits der globalen Maske gesetzt sind bis auf die beiden nieder-
wertigsten (bei einem 11-Bit-Identifier also 11111111100b).
Nachrichten-ID
1 (...001b)
2 (...010b)
3 (...011b)
4 (...100b)
x: Nachricht wird übernommen
0: Nachricht wird nicht übernommen
In diesem Beispiel entscheidet nur der Vergleich des Bits 2 über die Zuordnung,
denn die Bits 3...10 der hier verglichenen Identifier sind identisch (= 0) und die
Bits 0 und 1 werden nicht verglichen, weil sie in der globalen Maske auf Null
gesetzt sind (= nicht relevant).
Busfrequenz einstellen
Die CAN-Bus-Frequenz hängt von der Konfiguration des Controllers ab.
Bei der Initialisierung mit
guriert, dass die CAN-Bus-Frequenz 1MHz beträgt. Soll der CAN-Bus mit einer
anderen Frequenz betrieben werden, geschieht dies am einfachsten mit dem
Befehl SET_CAN_BAUDRATE.
Bei CAN low speed muss die Busfrequenz auf Werte ≤125kBit/s eingestellt
werden.
In Sonderfällen kann es vorteilhaft sein, die Einstellungen anders zu wählen,
als es mit
SET_CAN_BAUDRATE
bestimmte Register mit dem Befehl
ist in der Dokumentation des Controllers beschrieben.
Interrupt freigeben / Event auslösen
Sie können bei einem Message-Objekt freigeben, ob es beim Eingang einer
Nachricht einen Interrupt auslöst. Der Interrupt-Ausgang des CAN-Controllers
ist intern mit dem Event-Eingang des Prozessors verbunden. Dadurch kann der
Prozessor sofort auf eingehende Nachrichten reagieren, ohne den Nachrich-
teneingang kontrollieren zu müssen (Polling).
Sie können die Interrupts mehrerer Message-Objekte freigeben. Welches
Objekt den Interrupt ausgelöst hat, kann aus dem Interrupt-Register (5Fh)
ersehen werden: Es enthält die Nummer des auslösenden Message-Objekts.
Wird das Interrupt-Flag (new message flag) im Message-Objekt zurückgesetzt,
wird das Interrupt-Register aktualisiert. Wenn kein Interrupt mehr ansteht, wird
das Register auf „0" gesetzt. Ist während der Bearbeitung des ersten Interrupts
ein weiterer aufgetreten, so wird dessen Quelle nun im Interrupt-Register ange-
zeigt. Ein weiterer Hardware-Interrupt erfolgt in diesem Fall nicht.
ADwin-Gold II , Handbuch Version 1.52, März 2010
ID des Message-Objekts
1
2
...001b
...010b
x
x
x
x
x
x
0
0
wird der Controller automatisch so konfi-
INIT_CAN
möglich ist. Zu diesem Zweck müssen
gesetzt werden. Der Registeraufbau
Poke
3
4
...011b
...100b
x
0
x
0
x
0
0
x
CAN-Erweiterung
Globale Maske
Busfrequenz für
Sonderfälle
35