@@ -804,13 +804,16 @@ static int pickit5_set_sck_period(const PROGRAMMER *pgm, double sckperiod) {
804804 const unsigned char * set_speed = my .scripts .SetSpeed ;
805805 unsigned int set_speed_len = my .scripts .SetSpeed_len ;
806806 unsigned char buf [4 ];
807- if (set_speed_len > 0 ) { // debugWire is fun . . .
808- pickit5_uint32_to_array (buf , frq );
809- if (pickit5_send_script (pgm , SCR_CMD , set_speed , set_speed_len , buf , 4 , 0 ) >= 0 ) {
810- if (pickit5_read_response (pgm ) >= 0 )
811- return 0 ;
812- }
807+ if (set_speed == NULL ) { // debugWire is fun . . .
808+ return 0 ; // No script, to execute, return success
809+ }
810+
811+ pickit5_uint32_to_array (buf , frq );
812+ if (pickit5_send_script (pgm , SCR_CMD , set_speed , set_speed_len , buf , 4 , 0 ) >= 0 ) {
813+ if (pickit5_read_response (pgm ) >= 0 )
814+ return 0 ;
813815 }
816+
814817 pmsg_error ("Failed to set speed.\n" );
815818 return -1 ;
816819}
@@ -1346,8 +1349,11 @@ static int pickit5_isp_write_fuse(const PROGRAMMER *pgm, const AVRMEM *mem, unsi
13461349 avr_set_bits (mem -> op [AVR_OP_WRITE ], (unsigned char * )& cmd );
13471350 avr_set_addr (mem -> op [AVR_OP_WRITE ], (unsigned char * )& cmd , mem_fuse_offset (mem ));
13481351 avr_set_input (mem -> op [AVR_OP_WRITE ], (unsigned char * )& cmd , value );
1349- cmd = __builtin_bswap32 (cmd ); // Swap bitorder
1350- pickit5_uint32_to_array (& write_fuse_isp [11 ], cmd ); // fill programming command
1352+
1353+ write_fuse_isp [14 ] = (uint8_t ) cmd ; // swap bitorder and fill array
1354+ write_fuse_isp [13 ] = (uint8_t ) (cmd >> 8 );
1355+ write_fuse_isp [12 ] = (uint8_t ) (cmd >> 16 );
1356+ write_fuse_isp [11 ] = (uint8_t ) (cmd >> 24 );
13511357
13521358 if (pickit5_send_script_cmd (pgm , write_fuse_isp , write_fuse_isp_len , NULL , 0 ) < 0 ) {
13531359 pmsg_error ("Write Fuse Script failed" );
@@ -1373,8 +1379,11 @@ static int pickit5_isp_read_fuse(const PROGRAMMER *pgm, const AVRMEM *mem, unsig
13731379 unsigned int cmd ;
13741380 avr_set_bits (mem -> op [AVR_OP_READ ], (unsigned char * )& cmd );
13751381 avr_set_addr (mem -> op [AVR_OP_READ ], (unsigned char * )& cmd , mem_fuse_offset (mem ));
1376- cmd = __builtin_bswap32 (cmd ); // Swap bitorder
1377- pickit5_uint32_to_array (& read_fuse_isp [11 ], cmd ); // fill programming command
1382+
1383+ read_fuse_isp [14 ] = (uint8_t ) cmd ; // swap bitorder and fill array
1384+ read_fuse_isp [13 ] = (uint8_t ) (cmd >> 8 );
1385+ read_fuse_isp [12 ] = (uint8_t ) (cmd >> 16 );
1386+ read_fuse_isp [11 ] = (uint8_t ) (cmd >> 24 );
13781387
13791388 if (pickit5_send_script_cmd (pgm , read_fuse_isp , read_fuse_isp_len , NULL , 0 ) < 0 ) {
13801389 pmsg_error ("Read Fuse Script failed" );
0 commit comments