Konfigurationsbefehle

Aus iSysBus Doku

Wechseln zu: Navigation, Suche

Hauptseite / Firmware / Firmware:Konfigurationsbefehle

Befehl / Antwort

Der Befehl und die Antwort befinden sich immer im Datenbyte 0

Data0
2 Bit 6 Bit
Antwort Command
Befehl
Code Befehl Config-Dienst Bootloader
0x3F Maske - -
0x01 SetNodeId - x
0x02 SetMode x x
0x03 GetPageSize - x
0x04 SetPageAddr - x
0x05 WriteFlash - x
0x06 InitEeprom x -
0x07 ReadEepromBlock x x
0x08 WriteEepromBlock x -
0x09 ResetErrorMemory x -

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
Pagesize
0x???? Pagesize
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
Address
0x???? Address
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
Meine Werkzeuge