Resetkommando für FlightCtrl oder BL-Ctrl - Software SendOutData('R', 0, NULL, 0); Daten sind entsprechend codiert und mit CRC ############################################# dann mit Bootloader verbinden: SEND_CHAR(27); // ESC Delay(20); // ms - etwas warten SEND_CHAR(0xAA); Delay(80); // ms - etwas warten Bootloader antwortet mit "MKBL", wenn erfolgreich verbunden ---- AVR-Signature abfragen SEND_CHAR('t'); // get signature Antwort: RxBuffer[0] = 0x74 ; RxBuffer[1] = 0x00 = MEGA644 RxBuffer[0] = 0x76 ; RxBuffer[1] = 0x00 = MEGA8 ---- Device setzen SEND_CHAR('T'); SEND_CHAR(devicetyp); // set devicetyp = 0x74 oder 0x76 Antwort: RxBuffer[0] = 0x0D // OKAY ---- Version abfragen (BootBlock) SEND_CHAR('V'); Antwort: RxBuffer[0] = Hauptversion; RxBuffer[1] = Nebenversion ---- Puffergrösse ermitteln SEND_CHAR('b'); Antwort: RxBuffer[0] = 'Y' (unsigned int) SendBufferSize = RxBuffer[1]* 0x100 + RxBuffer[2]; ---- Flash löschen SEND_CHAR('e'); Antwort: RxBuffer[0] = 0x0D // OKAY ---- Adresse setzen cmd[0] = 'A'; cmd[1] = 0x00; cmd[2] = 0x00; SEND_BYTES(cmd, 3); Antwort: RxBuffer[0] = 0x0D // OKAY ---- Block übertragen (Grösse wurde zuvor ermittelt) cmd[0] = 'B'; cmd[1] = (SendBufferSize >> 8) & 0xFF; cmd[2] = SendBufferSize & 0xFF; cmd[3] = 'F'; SEND_BYTES(cmd, 4); SEND_BYTES(data, SendBufferSize); Antwort: RxBuffer[0] = 0x0D // OKAY ## Anmerkung ## Der letzte Block ist meistens kleiner als die Blockgrösse. Hier ist dann cmd[1] & cmd[2] entsprechend zu verkleinern ! ---- Lesen (für Kontrolle) zu Beginn auf Adresse auf 0x00 setzen (siehe oben) cmd[0] = 'g'; cmd[1] = (SendBufferSize >> 8) & 0xFF; cmd[2] = SendBufferSize & 0xFF; cmd[3] = 'F'; SEND_BYTES(cmd, 4); Antwort: 1 Block Daten, Länge entsprechend cmd[1] & cmd[2] ---- Exit Bootloader SEND_CHAR('E');