Functional test program for MAXREFDES89# that ramps each motor driver output up/down and in each direction sequentially. Uses default configuration, i.e. pwm signals are on D4, D5, D9 and D10 along with default I2C addresses for supporting I.C.s.

Dependencies:   MAX14871_Shield mbed

Files at this revision

API Documentation at this revision

Comitter:
j3
Date:
Sat Jan 23 02:23:43 2016 +0000
Parent:
1:c9cf8a2fc829
Commit message:
Updated shield library, Sam's main loop for testing

Changed in this revision

MAX14871_Shield.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r c9cf8a2fc829 -r be568cc42d4b MAX14871_Shield.lib
--- a/MAX14871_Shield.lib	Wed Dec 23 19:04:16 2015 +0000
+++ b/MAX14871_Shield.lib	Sat Jan 23 02:23:43 2016 +0000
@@ -1,1 +1,1 @@
-https://developer.mbed.org/teams/Maxim-Integrated/code/MAX14871_Shield/#4e42c80f56b6
+https://developer.mbed.org/teams/Maxim-Integrated/code/MAX14871_Shield/#a206f6505109
diff -r c9cf8a2fc829 -r be568cc42d4b main.cpp
--- a/main.cpp	Wed Dec 23 19:04:16 2015 +0000
+++ b/main.cpp	Sat Jan 23 02:23:43 2016 +0000
@@ -34,94 +34,134 @@
 #include "mbed.h"
 #include "max14871_shield.h"
 
+template <typename T>
+static inline void REPORT (T set, T get)
+{
+    const char *resp = (set == get) ? "Pass" : "Fail";
+    printf("%08d: %s\n", __LINE__, resp);
+}
+
+float float_status = 0.0f;
+Max14871_Shield::max14871_current_regulation_mode_t reg_mode_status = Max14871_Shield::TCOFF_SLOW_EXTERNAL_REF;
+Max14871_Shield::max14871_operating_mode_t op_mode_status = Max14871_Shield::FORWARD;
 
 int main(void)
 {
-    
+
     uint8_t idx = 0;
     const uint8_t DELAY = 50;
     const float VREF = 2.0f;
     const float PWM_PERIOD = 0.000025f; //40KHz
     float pwm_duty_cycle = 0.0f;
-    
+
+    puts("Starting Test");
     Max14871_Shield shld(D14, D15, true);
-    
-    Max14871_Shield::max14871_motor_driver_t MD_ARRAY[] = {Max14871_Shield::MD1, Max14871_Shield::MD2, 
-                                                           Max14871_Shield::MD3, Max14871_Shield::MD4};
-    
+
+    Max14871_Shield::max14871_motor_driver_t MD_ARRAY[] = {Max14871_Shield::MD1, Max14871_Shield::MD2,
+            Max14871_Shield::MD3, Max14871_Shield::MD4
+                                                          };
+
     //configure motor drivers
-    for(idx = 0; idx < 4; idx++)
-    {
+    for(idx = 0; idx < 4; idx++) {
         shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
+        float_status = shld.get_pwm_duty_cycle(MD_ARRAY[idx]);
+        REPORT(pwm_duty_cycle, float_status);
+
         shld.set_pwm_period(MD_ARRAY[idx], PWM_PERIOD);
+        // no get pwm_period method
+        float_status = shld.get_pwm_period(MD_ARRAY[idx]);
+        REPORT(PWM_PERIOD, float_status);
+
         shld.set_current_regulation_mode(MD_ARRAY[idx], Max14871_Shield::RIPPLE_25_EXTERNAL_REF, VREF);
+        reg_mode_status = shld.get_current_regulation_mode(MD_ARRAY[idx]);
+        REPORT(Max14871_Shield::RIPPLE_25_EXTERNAL_REF, reg_mode_status);
+
         shld.set_operating_mode(MD_ARRAY[idx], Max14871_Shield::BRAKE);
+        op_mode_status = shld.get_operating_mode(MD_ARRAY[idx]);
+        REPORT(Max14871_Shield::BRAKE, op_mode_status);
     }
-    
-    for(idx = 0; idx < 4; idx++)
-    {
-         shld.set_operating_mode(MD_ARRAY[idx], Max14871_Shield::FORWARD);
-         
-         //Ramp up
-         printf("Ramping up Forward, MD = %d\n", MD_ARRAY[idx]);
-         for(pwm_duty_cycle = 0.0f; pwm_duty_cycle < 1.0f; pwm_duty_cycle += 0.1f)
-         {
-             printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
-             shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
-             wait_ms(DELAY);
-         }
-         
-         //100% duty cycle
-         printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
-         shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
-         wait_ms(DELAY);
-         
-         //Ramp down
-         printf("Ramping down Forward, MD = %d\n", MD_ARRAY[idx]);
-         for(pwm_duty_cycle = 1.0f; pwm_duty_cycle > 0.0f; pwm_duty_cycle -= 0.1f)
-         {
-             printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
-             shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
-             wait_ms(DELAY);
-         }
-         
-         //0% duty cycle
-         printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
-         shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
-         wait_ms(DELAY);
-         
-         shld.set_operating_mode(MD_ARRAY[idx], Max14871_Shield::REVERSE);
-         
-         //Ramp up
-         printf("Ramping up Reverse, MD = %d\n", MD_ARRAY[idx]);
-         for(pwm_duty_cycle = 0.0f; pwm_duty_cycle < 1.0f; pwm_duty_cycle += 0.1f)
-         {
-             printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
-             shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
-             wait_ms(DELAY);
-         }
-         
-         //100% duty cycle
-         printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
-         shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
-         wait_ms(DELAY);
-         
-         //Ramp down
-         printf("Ramping down Reverse, MD = %d\n", MD_ARRAY[idx]);
-         for(pwm_duty_cycle = 1.0f; pwm_duty_cycle > 0.0f; pwm_duty_cycle -= 0.1f)
-         {
-             printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
-             shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
-             wait_ms(DELAY);
-         }
-         
-         //0% duty cycle
-         printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
-         shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
-         wait_ms(DELAY);
-         
-         shld.set_operating_mode(MD_ARRAY[idx], Max14871_Shield::COAST);  
+
+    for(idx = 0; idx < 4; idx++) {
+        shld.set_operating_mode(MD_ARRAY[idx], Max14871_Shield::FORWARD);
+        op_mode_status = shld.get_operating_mode(MD_ARRAY[idx]);
+        REPORT(Max14871_Shield::FORWARD, op_mode_status);
+
+        //Ramp up
+        printf("Ramping up Forward, MD = %d\n", MD_ARRAY[idx]);
+        for(pwm_duty_cycle = 0.0f; pwm_duty_cycle < 1.0f; pwm_duty_cycle += 0.1f) {
+            printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
+            shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
+            float_status = shld.get_pwm_duty_cycle(MD_ARRAY[idx]);
+            REPORT(pwm_duty_cycle, float_status);
+            wait_ms(DELAY);
+        }
+
+        //100% duty cycle
+        printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
+        shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
+        float_status = shld.get_pwm_duty_cycle(MD_ARRAY[idx]);
+        REPORT(pwm_duty_cycle, float_status);
+        wait_ms(DELAY);
+
+        //Ramp down
+        printf("Ramping down Forward, MD = %d\n", MD_ARRAY[idx]);
+        for(pwm_duty_cycle = 1.0f; pwm_duty_cycle > 0.0f; pwm_duty_cycle -= 0.1f) {
+            printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
+            shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
+            float_status = shld.get_pwm_duty_cycle(MD_ARRAY[idx]);
+            REPORT(pwm_duty_cycle, float_status);
+            wait_ms(DELAY);
+        }
+
+        //0% duty cycle
+        printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
+        shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
+        float_status = shld.get_pwm_duty_cycle(MD_ARRAY[idx]);
+        REPORT(pwm_duty_cycle, float_status);
+        wait_ms(DELAY);
+
+        shld.set_operating_mode(MD_ARRAY[idx], Max14871_Shield::REVERSE);
+        op_mode_status = shld.get_operating_mode(MD_ARRAY[idx]);
+        REPORT(Max14871_Shield::REVERSE, op_mode_status);
+
+        //Ramp up
+        printf("Ramping up Reverse, MD = %d\n", MD_ARRAY[idx]);
+        for(pwm_duty_cycle = 0.0f; pwm_duty_cycle < 1.0f; pwm_duty_cycle += 0.1f) {
+            printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
+            shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
+            float_status = shld.get_pwm_duty_cycle(MD_ARRAY[idx]);
+            REPORT(pwm_duty_cycle, float_status);
+            wait_ms(DELAY);
+        }
+
+        //100% duty cycle
+        printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
+        shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
+        float_status = shld.get_pwm_duty_cycle(MD_ARRAY[idx]);
+        REPORT(pwm_duty_cycle, float_status);
+        wait_ms(DELAY);
+
+        //Ramp down
+        printf("Ramping down Reverse, MD = %d\n", MD_ARRAY[idx]);
+        for(pwm_duty_cycle = 1.0f; pwm_duty_cycle > 0.0f; pwm_duty_cycle -= 0.1f) {
+            printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
+            shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
+            float_status = shld.get_pwm_duty_cycle(MD_ARRAY[idx]);
+            REPORT(pwm_duty_cycle, float_status);
+            wait_ms(DELAY);
+        }
+
+        //0% duty cycle
+        printf("Duty Cycle = %0.2f\n", pwm_duty_cycle);
+        shld.set_pwm_duty_cycle(MD_ARRAY[idx], pwm_duty_cycle);
+        float_status = shld.get_pwm_duty_cycle(MD_ARRAY[idx]);
+        REPORT(pwm_duty_cycle, float_status);
+        wait_ms(DELAY);
+
+        shld.set_operating_mode(MD_ARRAY[idx], Max14871_Shield::COAST);
+        op_mode_status = shld.get_operating_mode(MD_ARRAY[idx]);
+        REPORT(Max14871_Shield::COAST, op_mode_status);
     }
-    
+
     return 0;
 }
diff -r c9cf8a2fc829 -r be568cc42d4b mbed.bld
--- a/mbed.bld	Wed Dec 23 19:04:16 2015 +0000
+++ b/mbed.bld	Sat Jan 23 02:23:43 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/4336505e4b1c
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/6f327212ef96
\ No newline at end of file