Skip to content
Snippets Groups Projects
Commit 3eb0b8d2 authored by Sergi Hernandez's avatar Sergi Hernandez
Browse files

Reduced the timeout of the dynamixel communications to 1 ms.

Removed the wait for the end of transmission in all dynamixel master communication functions.
parent 96060cb6
No related branches found
No related tags found
No related merge requests found
......@@ -61,6 +61,7 @@ void dyn_master_set_rx_mode(void)
/* interrupt handlers */
ISR(USART0_TX_vect)
{
cli();
if(dyn_master_sent_bytes==dyn_master_tx_buffer[3]+4)
{
dyn_master_set_rx_mode();
......@@ -71,6 +72,7 @@ ISR(USART0_TX_vect)
UDR0=dyn_master_tx_buffer[dyn_master_sent_bytes];
dyn_master_sent_bytes++;
}
sei();
}
ISR(USART0_RX_vect)
......@@ -127,7 +129,6 @@ uint8_t dyn_master_send(void)
uint8_t dyn_master_wait_reception(void)
{
// set timeout
dyn_master_start_timeout();
// wait for the status packet
if(dyn_master_rx_no_answer)
{
......@@ -136,6 +137,7 @@ uint8_t dyn_master_wait_reception(void)
}
else
{
dyn_master_start_timeout();
while(dyn_master_packet_ready==0x00)
{
if(dyn_master_timeout())
......@@ -278,12 +280,6 @@ uint8_t dyn_master_ping(uint8_t id)
dyn_master_set_rx_mode();
return error;
}
// wait for the transmission to end
if((error=dyn_master_wait_transmission())!=DYN_SUCCESS)
{
dyn_master_set_rx_mode();
return error;
}
// wait for the replay within the given timeout
error=dyn_master_wait_reception();
......@@ -328,12 +324,6 @@ uint8_t dyn_master_read_table(uint8_t id,uint16_t address,uint16_t length,uint8_
dyn_master_set_rx_mode();
return error;
}
// wait for the transmission to end
if((error=dyn_master_wait_transmission())!=DYN_SUCCESS)
{
dyn_master_set_rx_mode();
return error;
}
// wait for the replay within the given timeout
if(dyn_master_return_level!=no_return && id!=DYN_BROADCAST_ID)
{
......@@ -382,12 +372,6 @@ uint8_t dyn_master_write_table(uint8_t id, uint16_t address, uint16_t length, ui
dyn_master_set_rx_mode();
return error;
}
// wait for the transmission to end
if((error=dyn_master_wait_transmission())!=DYN_SUCCESS)
{
dyn_master_set_rx_mode();
return error;
}
// wait for the replay within the given timeout
if(dyn_master_return_level==return_all && id!=DYN_BROADCAST_ID)
error=dyn_master_wait_reception();
......@@ -416,12 +400,6 @@ uint8_t dyn_master_reg_write(uint8_t id, uint16_t address, uint16_t length, uint
dyn_master_set_rx_mode();
return error;
}
// wait for the transmission to end
if((error=dyn_master_wait_transmission())!=DYN_SUCCESS)
{
dyn_master_set_rx_mode();
return error;
}
// wait for the replay within the given timeout
if(dyn_master_return_level==return_all && id!=DYN_BROADCAST_ID)
error=dyn_master_wait_reception();
......@@ -447,12 +425,6 @@ uint8_t dyn_master_action(void)
dyn_master_set_rx_mode();
return error;
}
// wait for the transmission to end
if((error=dyn_master_wait_transmission())!=DYN_SUCCESS)
{
dyn_master_set_rx_mode();
return error;
}
return error;
}
......@@ -475,12 +447,6 @@ uint8_t dyn_master_sync_write(uint8_t num,uint8_t *ids,uint16_t address, uint16_
dyn_master_set_rx_mode();
return error;
}
// wait for the transmission to end
if((error=dyn_master_wait_transmission())!=DYN_SUCCESS)
{
dyn_master_set_rx_mode();
return error;
}
return error;
}
......@@ -511,12 +477,6 @@ uint8_t dyn_master_bulk_read(uint8_t num,uint8_t *ids,uint16_t *address, uint16_
dyn_master_set_rx_mode();
return error;
}
// wait for the transmission to end
if((error=dyn_master_wait_transmission())!=DYN_SUCCESS)
{
dyn_master_set_rx_mode();
return error;
}
// wait for the replay within the given timeout
if(dyn_master_return_level!=no_return)
{
......
......@@ -16,7 +16,7 @@
#define DYN_MASTER_MAX_TX_BUFFER_LEN 128
#define DYN_MASTER_MAX_RX_BUFFER_LEN 128
#define DYN_MASTER_DEFAULT_BAUDRATE 1000000
#define DYN_MASTER_DEFAULT_TIMEOUT_US 10000
#define DYN_MASTER_DEFAULT_TIMEOUT_US 1000
#define SERIAL_CONSOLE_MAX_BUFFER_LEN 128
// motion configuration parameters
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment