aboutsummaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2012-09-06 20:46:53 +0200
committerLorenz Meier <lm@inf.ethz.ch>2012-09-06 20:46:53 +0200
commit925f143433f2f40b2c4587783daf617c4d311df0 (patch)
tree8ed39ad1307945a0093cf1972b4fe5c957db87d5 /apps
parentdb6ec2d7d2c8f206208f6bd3b6534422fd80eaef (diff)
downloadpx4-firmware-925f143433f2f40b2c4587783daf617c4d311df0.tar.gz
px4-firmware-925f143433f2f40b2c4587783daf617c4d311df0.tar.bz2
px4-firmware-925f143433f2f40b2c4587783daf617c4d311df0.zip
Better AR interface initialization
Diffstat (limited to 'apps')
-rw-r--r--apps/ardrone_interface/ardrone_interface.c26
-rw-r--r--apps/ardrone_interface/ardrone_motor_control.c5
2 files changed, 15 insertions, 16 deletions
diff --git a/apps/ardrone_interface/ardrone_interface.c b/apps/ardrone_interface/ardrone_interface.c
index 220c3d3b5..c4cceaf90 100644
--- a/apps/ardrone_interface/ardrone_interface.c
+++ b/apps/ardrone_interface/ardrone_interface.c
@@ -205,18 +205,6 @@ int ardrone_interface_thread_main(int argc, char *argv[])
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 */
int 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");
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 */
if (OK != ar_init_motors(ardrone_write, gpios)) {
close(ardrone_write);
@@ -253,7 +253,7 @@ int ardrone_interface_thread_main(int argc, char *argv[])
/* close uarts */
close(ardrone_write);
- ar_multiplexing_deinit(gpios);
+ //ar_multiplexing_deinit(gpios);
/* enable UART, writes potentially an empty buffer, but multiplexing is disabled */
ardrone_write = ardrone_open_uart(&uart_config_original);
diff --git a/apps/ardrone_interface/ardrone_motor_control.c b/apps/ardrone_interface/ardrone_motor_control.c
index 2644a25cb..dd7a5655d 100644
--- a/apps/ardrone_interface/ardrone_motor_control.c
+++ b/apps/ardrone_interface/ardrone_motor_control.c
@@ -226,9 +226,7 @@ int ar_init_motors(int ardrone_uart, int gpios)
for (i = 1; i < 5; ++i) {
/* Initialize motors 1-4 */
errcounter += ar_select_motor(gpios, i);
-
- write(ardrone_uart, &(initbuf[3]), 1);
- fsync(ardrone_uart);
+ usleep(200);
/*
* write 0xE0 - request status
@@ -278,6 +276,7 @@ int ar_init_motors(int ardrone_uart, int gpios)
/* start the multicast part */
errcounter += ar_select_motor(gpios, 0);
+ usleep(200);
/*
* first round