mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-28 02:36:37 +08:00
Better AR interface initialization
This commit is contained in:
@@ -205,18 +205,6 @@ int ardrone_interface_thread_main(int argc, char *argv[])
|
|||||||
printf("[ardrone_interface] Motor test mode enabled, setting 10 %% thrust.\n");
|
printf("[ardrone_interface] Motor test mode enabled, setting 10 %% thrust.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* enable UART, writes potentially an empty buffer, but multiplexing is disabled */
|
|
||||||
ardrone_write = ardrone_open_uart(&uart_config_original);
|
|
||||||
|
|
||||||
/* initialize multiplexing, deactivate all outputs - must happen after UART open to claim GPIOs on PX4FMU */
|
|
||||||
gpios = ar_multiplexing_init();
|
|
||||||
|
|
||||||
if (ardrone_write < 0) {
|
|
||||||
fprintf(stderr, "[ardrone_interface] Failed opening AR.Drone UART, exiting.\n");
|
|
||||||
thread_running = false;
|
|
||||||
exit(ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Led animation */
|
/* Led animation */
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
int led_counter = 0;
|
int led_counter = 0;
|
||||||
@@ -237,6 +225,18 @@ int ardrone_interface_thread_main(int argc, char *argv[])
|
|||||||
printf("[ardrone_interface] Motors initialized - ready.\n");
|
printf("[ardrone_interface] Motors initialized - ready.\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
|
/* enable UART, writes potentially an empty buffer, but multiplexing is disabled */
|
||||||
|
ardrone_write = ardrone_open_uart(&uart_config_original);
|
||||||
|
|
||||||
|
/* initialize multiplexing, deactivate all outputs - must happen after UART open to claim GPIOs on PX4FMU */
|
||||||
|
gpios = ar_multiplexing_init();
|
||||||
|
|
||||||
|
if (ardrone_write < 0) {
|
||||||
|
fprintf(stderr, "[ardrone_interface] Failed opening AR.Drone UART, exiting.\n");
|
||||||
|
thread_running = false;
|
||||||
|
exit(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
/* initialize motors */
|
/* initialize motors */
|
||||||
if (OK != ar_init_motors(ardrone_write, gpios)) {
|
if (OK != ar_init_motors(ardrone_write, gpios)) {
|
||||||
close(ardrone_write);
|
close(ardrone_write);
|
||||||
@@ -253,7 +253,7 @@ int ardrone_interface_thread_main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* close uarts */
|
/* close uarts */
|
||||||
close(ardrone_write);
|
close(ardrone_write);
|
||||||
ar_multiplexing_deinit(gpios);
|
//ar_multiplexing_deinit(gpios);
|
||||||
|
|
||||||
/* enable UART, writes potentially an empty buffer, but multiplexing is disabled */
|
/* enable UART, writes potentially an empty buffer, but multiplexing is disabled */
|
||||||
ardrone_write = ardrone_open_uart(&uart_config_original);
|
ardrone_write = ardrone_open_uart(&uart_config_original);
|
||||||
|
|||||||
@@ -226,9 +226,7 @@ int ar_init_motors(int ardrone_uart, int gpios)
|
|||||||
for (i = 1; i < 5; ++i) {
|
for (i = 1; i < 5; ++i) {
|
||||||
/* Initialize motors 1-4 */
|
/* Initialize motors 1-4 */
|
||||||
errcounter += ar_select_motor(gpios, i);
|
errcounter += ar_select_motor(gpios, i);
|
||||||
|
usleep(200);
|
||||||
write(ardrone_uart, &(initbuf[3]), 1);
|
|
||||||
fsync(ardrone_uart);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* write 0xE0 - request status
|
* write 0xE0 - request status
|
||||||
@@ -278,6 +276,7 @@ int ar_init_motors(int ardrone_uart, int gpios)
|
|||||||
|
|
||||||
/* start the multicast part */
|
/* start the multicast part */
|
||||||
errcounter += ar_select_motor(gpios, 0);
|
errcounter += ar_select_motor(gpios, 0);
|
||||||
|
usleep(200);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* first round
|
* first round
|
||||||
|
|||||||
Reference in New Issue
Block a user