Witam:)
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?
Pzdr.
Marogo
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?
//=============== 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;
Pzdr.
Marogo