diff --git a/quad/src/quad_app/send_actuator_commands.c b/quad/src/quad_app/send_actuator_commands.c index efc4e44f7e29a03a799655b75f0d6cc9c59aacd4..c361e74db2146e44b80881fec18dde14efef44d3 100644 --- a/quad/src/quad_app/send_actuator_commands.c +++ b/quad/src/quad_app/send_actuator_commands.c @@ -11,6 +11,7 @@ int send_actuator_commands(struct PWMOutputDriver *pwm_outputs, log_t* log_struct, actuator_command_t* actuator_command_struct) { int i; // write the PWMs to the motors + for (i = 0; i < 4; i++) { pwm_outputs->write(pwm_outputs, i, actuator_command_struct->pwms[i]); } diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_pwm_output.c b/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_pwm_output.c index 3d1b6e19c626b3e0b4428afe4bd8db5a7e0c1d00..3dd09e54379432529a3ce05614dedf648dffb3e2 100644 --- a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_pwm_output.c +++ b/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_pwm_output.c @@ -1,8 +1,10 @@ #include "hw_impl_zybo.h" -#define THROTTLE_PULSE_WIDTH_LOW 100000 // 1us -#define THROTTLE_PULSE_WIDTH_HIGH 200000 // 2us -#define PERIOD_WIDTH 222222 // 100000000 ns / 450 +#define SYS_CLOCK_RATE 100000000 // ticks per second +#define FREQUENCY 450 +#define PERIOD_WIDTH SYS_CLOCK_RATE/FREQUENCY +#define THROTTLE_PULSE_WIDTH_LOW SYS_CLOCK_RATE/1000 // 1 ms +#define THROTTLE_PULSE_WIDTH_HIGH SYS_CLOCK_RATE/500 // 2 ms #define PULSE_WIDTH_ADDR_OFFSET 1 struct PWMOutputDriverState { diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_tests.c b/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_tests.c index 530c5afe0f81a30aba768b783080107cd86bae76..cf36cb0afeab045c36d06747b7c9d95c716962cc 100644 --- a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_tests.c +++ b/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_tests.c @@ -117,17 +117,14 @@ int test_zybo_pwm_outputs() { struct SystemDriver sys = create_zybo_system(); sys.reset(&sys); - unsigned long pwms[4]; - pwms[0] = 100000; - pwms[1] = 100000; - pwms[2] = 100000; - pwms[3] = 100000; - int n = 0; while (1) { - int i; - for (i = 0; i < 4; i += 1) { - pwm_outputs.write(&pwm_outputs, i, pwms[i] + n++); - sys.sleep(&sys, 50); + int j; + for (j = 100000; j < 200000; j += 1) { + int i; + for (i = 0; i < 4; i += 1) { + pwm_outputs.write(&pwm_outputs, i, j); + sys.sleep(&sys, 50); + } } continue; } diff --git a/quad/xsdk_workspace/modular_quad_pid/src/main.c b/quad/xsdk_workspace/modular_quad_pid/src/main.c index 03612577dfc3fddee8be5afcc442527b1986eae7..fe31f0fb683d269ac188b3a0e06c55c23b7d5d11 100644 --- a/quad/xsdk_workspace/modular_quad_pid/src/main.c +++ b/quad/xsdk_workspace/modular_quad_pid/src/main.c @@ -4,7 +4,7 @@ #include "type_def.h" #include "platform.h" -#define RUN_TESTS +//#define RUN_TESTS int setup_hardware(hardware_t *hardware) { hardware->i2c = create_zybo_i2c(); @@ -30,7 +30,7 @@ int main() //test_zybo_pwm_outputs(); //test_zybo_uart(); //test_zybo_axi_timer(); - test_zybo_uart(); + //test_zybo_uart(); return 0; #endif