Aus iSysBus Doku
Hauptseite / Firmware / Firmware:Konfigurationsbefehle
Befehl / Antwort
Der Befehl und die Antwort befinden sich immer im Datenbyte 0
| Data0
|
| 2 Bit
| 6 Bit
|
| Antwort
| Command
|
AVRLIB: Defines befinden sich in der Datei isb_srv_config.def.h
| Antwort
|
| Code
| Antwort
| Config-Dienst
| Bootloader
|
| 0xC0
| Maske
| x
| x
|
| 0x40
| NACK: Der Befehl konnte nicht fehlerfrei ausgeführt werden.
| x
| x
|
| 0x80
| Nicht erlaubt.
| x
| x
|
| 0xC0
| ACK: Der Befehl wurde erfolgreich ausgeführt.
| x
| x
|
AVRLIB: Defines befinden sich in der Datei isb_srv_config.def.h
SetNodeId
(neue Firmware: Stand 18.10.2009)
Mit dem Befehl SetNodeId wird einem Knoten seine NodeId zugewiesen.
| SetNodeId
|
| -
| Data 0
| Data 1
| Data 2
| Data 3
| Data 4
| Data 5
| Data 6
| Data 7
| -
|
| Richtung
| Cmd/Answer
| SerialNumber (0x01234567)
| NodeId (0x0123)
| -
| Bemerkung
|
| ->
| 0x01
| 0x67
| 0x45
| 0x23
| 0x10
| 0x23
| 0x01
| -
| Befehl
|
Dieser Befehl wird vom Knoten nicht bestätigt. Wenn der Knoten die NodeId übernommen hat, rebootet er automatisch. Es folgt eine Bootnachricht mit der neuen NodeId.
Beispiel:
-> 01 07 00 00 SourceId 01 67 45 23 01 23 01 00 00 0D
SetMode
(neue Firmware: Stand 14.03.2010)
Der Befehl schaltet den Knoten in einen Modus um. Je nach Modus (Bootloader oder Firmware) werden die Befehle unterschiedlich unterstützt.
| SetMode
|
| Richtung
| Data 0
| Data 1
| Data 2
| Data 3
| Data 4
| Data 5
| Data 6
| Data 7
| -
|
| -
| Cmd/Answer
| Mode
| -
| -
| -
| -
| -
| -
| Bemerkung
|
| ->
| 0x02
| 0x??
| -
| -
| -
| -
| -
| -
| Befehl
|
| Mode
|
| Mode
| Erklärung
| Config-Dienst
| Bootloader
|
| 0x00
| Bootloader
| x (Reboot)
| x (Reboot)
|
| 0x01
| Firmware Normal
| x (Reboot)
| x (Jump)
|
| 0x02
| Firmware Config
| x (Reboot)
| x (Jump)
|
| else
| Reboot
| x (Reboot)
| x (Reboot)
|
Beispiel:
-> 01 02 DestId SourceId 02 ?? 00 00 0D
GetPageSize
(neue Firmware: Stand 18.10.2009)
Mit diesem Befehl kann man die Page-Grösse des Controllers auslesen
| GetPageSize
|
| Richtung
| Data 0
| Data 1
| Data 2
| Data 3
| Data 4
| Data 5
| Data 6
| Data 7
| Bemerkung
|
| ->
| 0x03
| -
| -
| -
| -
| -
| -
| -
| Befehl
|
| <-
| 0xC3
| 0x??
| 0x??
| -
| -
| -
| -
| -
| ACK
|
Beispiel:
-> 01 01 DestId SourceId 03 00 00 0D
<- 01 03 SourceId DestId C3 ?? ?? 00 00 0D ACK
SetPageAddr
(neue Firmware: Stand 18.10.2009)
Dieser Befehl setzt die Adresse der nächsten Page.
| SetPageAddr
|
| Richtung
| Data 0
| Data 1
| Data 2
| Data 3
| Data 4
| Data 5
| Data 6
| Data 7
| Bemerkung
|
| ->
| 0x04
| 0x??
| 0x??
| -
| -
| -
| -
| -
| Befehl
|
| <-
| 0x44
| -
| -
| -
| -
| -
| -
| -
| NACK Datenlänge
|
| <-
| 0xC4
| 0x??
| 0x??
| -
| -
| -
| -
| -
| ACK
|
| Page Adresse
|
| 0x????
| Page Adresse
|
Beispiel:
-> 01 31 DestId SourceId 04 ?? ?? 00 0D
<- 01 31 SourceId DestId 44 00 0D NACK Datenlänge
<- 01 33 SourceId DestId C4 ?? ?? 00 0D ACK
WriteFlash
(neue Firmware: Stand 18.10.2009)
Dieser Befehl ist zum füllen einer Page. Sobald die Page voll ist wird sie automatisch geschrieben.
Eine Antwort kommt erst wenn die ganze Page vollständig geschrieben ist.
| WriteFlash
|
| Richtung
| Data 0
| Data 1
| Data 2
| Data 3
| Data 4
| Data 5
| Data 6
| Data 7
| Bemerkung
|
| ->
| 0x05
| 0x??
| 0x??
| 0x??
| 0x??
| 0x??
| 0x??
| 0x??
| Befehl
|
| <-
| 0x45
| -
| -
| -
| -
| -
| -
| -
| NACK Datenlänge
|
| <-
| 0xC5
| -
| -
| -
| -
| -
| -
| -
| ACK
|
| Flash
|
| 0x??
| 1-7 Bytes Flash
|
Beispiel:
-> 01 38 DestId SourceId 06 ?? ?? ?? ?? ?? ?? ?? 00 0D
<- 01 38 SourceId DestId 26 ?? ?? 00 0D ACK
<- 01 31 SourceId DestId 86 00 0D NACK Datenlänge
InitEeprom
| ReadEepromBlock
|
| Richtung
| Data 0
| Data 1
| Data 2
| Data 3
| Data 4
| Data 5
| Data 6
| Data 7
| Bemerkung
|
| ->
| 0x06
| -
| -
| -
| -
| -
| -
| -
| Befehl
|
| <-
| 0xC6
| -
| -
| -
| -
| -
| -
| -
| ACK
|
ReadEepromBlock
| ReadEepromBlock
|
| Richtung
| Data 0
| Data 1
| Data 2
| Data 3
| Data 4
| Data 5
| Data 6
| Data 7
| Bemerkung
|
| ->
| 0x07
| 0xAA
| 0xAA
| 0x..
| 0x..
| 0x..
| 0x..
| 0x..
| Befehl
|
| <-
| 0xC7
| 0xAA
| 0xAA
| 0xDD
| 0xDD
| 0xDD
| 0xDD
| 0xDD
| ACK
|
Beispiel:
-> 01 04 01 00 FF 07 06 AA AA .. 00 00 0D
<- 01 04 01 00 FF 07 06 AA AA DD 00 00 0D ACK
-> 01 05 01 00 FF 07 06 AA AA .. .. 00 00 0D
<- 01 05 01 00 FF 07 06 AA AA DD DD 00 00 0D ACK
-> 01 06 01 00 FF 07 06 AA AA .. .. .. 00 00 0D
<- 01 06 01 00 FF 07 06 AA AA DD DD DD 00 00 0D ACK
-> 01 07 01 00 FF 07 06 AA AA .. .. .. .. 00 00 0D
<- 01 07 01 00 FF 07 06 AA AA DD DD DD DD 00 00 0D ACK
-> 01 08 01 00 FF 07 06 AA AA .. .. .. .. .. 00 00 0D
<- 01 08 01 00 FF 07 06 AA AA DD DD DD DD DD 00 00 0D ACK