Pytanie do znawców protokołu STK500. Oto fragment kodu w Pascalu tworzącego strukturę zapytania dla 3 komend (wejście w tryb programowania oraz odczyt i zapis FuseBit-ów) wysyłanych po RS-ie do procesora ATMEGA128.
Moje pytanie: co oznaczają parametry "cmd1" do "cmd4" w tym protokole w komendzie CMD_ENTER_PROGMODE_ISP i "cmd1" do "cmd3" w pozostałych komendach i dlaczego są przypisane akurat takie wartości?
Nie doszukałem się tej informacji w dokumentacji procesora: ATMEGA128 ani w dokumentacji protokołu STK500: STK500
Proszę o w miarę możliwości łopatologiczne wyjaśnienie i gdzie szukać informacji na ten temat również dla innych komend?
Jakie powinny być wartości tych parametrów dla innych procków, np. AT90CAN128?
Kod: Zaznacz cały
//=============== CMD_ENTER_PROGMODE_ISP ============
MessageArr[1]:= $1B; // StartMessage
MessageArr[2]:= MessageID; // MessageID
MessageArr[3]:= $00; // MSB Data Length
MessageArr[4]:= $0C; // LSB Data Length
MessageArr[5]:= $0E; // TOKEN
MessageArr[6]:= CMD_ID; // Command ID
MessageArr[7]:= $C8; // timeout
MessageArr[8]:= $64; // stabDelay
MessageArr[9]:= $19; // cmdexeDelay
MessageArr[10]:= $20; // synchLoops
MessageArr[11]:= $00; // byteDelay
MessageArr[12]:= $53; // pollValue
MessageArr[13]:= $03; // pollIndex
MessageArr[14]:= $AC; // cmd1 ??
MessageArr[15]:= $53; // cmd2 ??
MessageArr[16]:= $00; // cmd3 ??
MessageArr[17]:= $00; // cmd4 ??
//============ CMD_PROGRAM_FUSE_ISP =================
MessageArr[1]:= $1B; // StartMessage
MessageArr[2]:= MessageID; // MessageID
MessageArr[3]:= $00; // MSB Data Length
MessageArr[4]:= $05; // LSB Data Length
MessageArr[5]:= $0E; // TOKEN
MessageArr[6]:= CMD_ID; // Command ID
if (Param=1) then
begin
MessageArr[7]:= $AC; // cmd1
MessageArr[8]:= $A0; // cmd2 ??
MessageArr[9]:= $00; // cmd3 ??
MessageArr[10]:= $3F; // cmd4 (Fuse LSB)
end
else if (Param=2) then
begin
MessageArr[7]:= $AC; // cmd1 ??
MessageArr[8]:= $A8; // cmd2 ??
MessageArr[9]:= $00; // cmd3 ??
MessageArr[10]:= $C8; // cmd4 (Fuse MSB)
end
else if (Param=3) then
begin
MessageArr[7]:= $AC; // cmd1 ??
MessageArr[8]:= $A4; // cmd2 ??
MessageArr[9]:= $00; // cmd3 ??
MessageArr[10]:= $FF; // cmd4 (Fuse EXT)
end
//============ CMD_READ_FUSE_ISP ===================
MessageArr[1]:= $1B; // StartMessage
MessageArr[2]:= MessageID; // MessageID
MessageArr[3]:= $00; // MSB Data Length
MessageArr[4]:= $06; // LSB Data Length
MessageArr[5]:= $0E; // TOKEN
MessageArr[6]:= CMD_ID; // Command ID
MessageArr[7]:= $04; // RetAddr
if (Param=1) then
begin
MessageArr[8]:= $50; // cmd1 ??
MessageArr[9]:= $00; // cmd2 ??
MessageArr[10]:= $00; // cmd3 ??
MessageArr[11]:= $00; // cmd4 (Fuse LSB)
end
else if (Param=2) then
begin
MessageArr[8]:= $58; // cmd1 ??
MessageArr[9]:= $08; // cmd2 ??
MessageArr[10]:= $00; // cmd3 ??
MessageArr[11]:= $00; // cmd4 (Fuse MSB)
end
else if (Param=3) then
begin
MessageArr[8]:= $50; // cmd1 ??
MessageArr[9]:= $08; // cmd2 ??
MessageArr[10]:= $00; // cmd3 ??
MessageArr[11]:= $00; // cmd4 (Fuse EXT)
end;
Marogo