Subversion Repositories FlightCtrl

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
61 ingob 1
Resetkommando für FlightCtrl oder BL-Ctrl - Software
2
 
3
	SendOutData('R', 0, NULL, 0);
4
 
5
	Daten sind entsprechend codiert und mit CRC
6
 
7
 
8
#############################################
9
 
10
 
11
dann mit Bootloader verbinden:
12
 
13
	SEND_CHAR(27);      // ESC
14
	Delay(20);          // ms - etwas warten
15
	SEND_CHAR(0xAA);
16
	Delay(80);          // ms - etwas warten
17
 
18
Bootloader antwortet mit "MKBL", wenn erfolgreich verbunden
19
 
20
 
21
---- AVR-Signature abfragen
22
	SEND_CHAR('t');   // get signature
23
 
24
	Antwort:
25
	RxBuffer[0] = 0x74 ; RxBuffer[1] = 0x00 = MEGA644
26
	RxBuffer[0] = 0x76 ; RxBuffer[1] = 0x00 = MEGA8
27
 
28
 
29
---- Device setzen
30
	SEND_CHAR('T');
31
	SEND_CHAR(devicetyp);   // set devicetyp = 0x74 oder 0x76
32
 
33
    Antwort:
34
	RxBuffer[0] = 0x0D      // OKAY
35
 
36
 
37
---- Version abfragen (BootBlock)
38
	SEND_CHAR('V');
39
 
40
	Antwort:
41
	RxBuffer[0] = Hauptversion; RxBuffer[1] = Nebenversion
42
 
43
---- Puffergrösse ermitteln
44
	SEND_CHAR('b');
45
 
46
	Antwort:
47
	RxBuffer[0] = 'Y'
48
    (unsigned int) SendBufferSize = RxBuffer[1]* 0x100 + RxBuffer[2];
49
 
50
 
51
---- Flash löschen
52
	SEND_CHAR('e');
53
 
54
    Antwort:
55
	RxBuffer[0] = 0x0D      // OKAY
56
 
57
---- Adresse setzen
58
	cmd[0] = 'A';
59
	cmd[1] = 0x00;
60
	cmd[2] = 0x00;
61
	SEND_BYTES(cmd, 3);
62
 
63
    Antwort:
64
	RxBuffer[0] = 0x0D      // OKAY
65
 
66
---- Block übertragen (Grösse wurde zuvor ermittelt)
67
	cmd[0] = 'B';
68
	cmd[1] = (SendBufferSize >> 8) & 0xFF;
69
	cmd[2] = SendBufferSize & 0xFF;
70
	cmd[3] = 'F';
71
	SEND_BYTES(cmd, 4);
72
    SEND_BYTES(data, SendBufferSize);
73
 
74
    Antwort:
75
	RxBuffer[0] = 0x0D      // OKAY
76
 
77
    ## Anmerkung ##
78
	Der letzte Block ist meistens kleiner als die Blockgrösse.
79
	Hier ist dann cmd[1] & cmd[2] entsprechend zu verkleinern !
80
 
81
---- Lesen (für Kontrolle)
82
    zu Beginn auf Adresse auf 0x00 setzen (siehe oben)
83
 
84
	cmd[0] = 'g';
85
	cmd[1] = (SendBufferSize >> 8) & 0xFF;
86
	cmd[2] = SendBufferSize & 0xFF;
87
	cmd[3] = 'F';
88
    SEND_BYTES(cmd, 4);
89
 
90
	Antwort:
91
	1 Block Daten, Länge entsprechend cmd[1] & cmd[2]
92
 
93
---- Exit Bootloader
94
   SEND_CHAR('E');
95
 
96
 
97
 
98
 
99