Subversion Repositories FlightCtrl

Rev

Blame | Last modification | View Log | RSS feed

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');