Update

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

Revision:
34:0dee9a606869
Parent:
33:de144094bdd1
Child:
35:758191d5c6e1
--- a/main.cpp	Mon Apr 22 11:56:38 2019 +0000
+++ b/main.cpp	Wed Apr 24 21:08:27 2019 +0000
@@ -4,59 +4,108 @@
 /* Status Spleisser definieren*/
 int StatusSpleisser = ST_SOLO;
 
+/*Buttons initialisieren*/
+InterruptIn buttonSTART(USER_BUTTON);
+
+volatile bool buttonSTART_pressed = false; // Used in the main loop
+volatile bool buttonSTART_enabled = true;  // Used for debouncing
+Timeout buttonSTART_timeout;               // Used for debouncing
+
+/*PWMs initialisieren*/
+PwmOut Servo(PB_4);
+
 /*Input initalisieren für Status Spleisser*/
 DigitalIn InputKontrollmodul(COM_SIGNAL);
 
+/* Motor Control Expansion Board. */
+XNucleoIHM02A1 *x_nucleo_ihm02a1_1;
+XNucleoIHM02A12 *x_nucleo_ihm02a1_2;
 
+/* Initialization parameters of the motors connected to the expansion board. */
+L6470_init_t init[L6470DAISYCHAINSIZE] = {
+    /* First Motor. */
+    {
+        12.0,                           /* Motor supply voltage in V. */
+        400,                           /* Min number of steps per revolution for the motor. */
+        1.7,                           /* Max motor phase voltage in A. */
+        3.06,                          /* Max motor phase voltage in V. */
+        300.0,                         /* Motor initial speed [step/s]. */
+        500.0,                         /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
+        500.0,                         /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
+        992.0,                         /* Motor maximum speed [step/s]. */
+        0.0,                           /* Motor minimum speed [step/s]. */
+        602.7,                         /* Motor full-step speed threshold [step/s]. */
+        3.06,                          /* Holding kval [V]. */
+        3.06,                          /* Constant speed kval [V]. */
+        3.06,                          /* Acceleration starting kval [V]. */
+        3.06,                          /* Deceleration starting kval [V]. */
+        61.52,                         /* Intersect speed for bemf compensation curve slope changing [step/s]. */
+        392.1569e-6,                   /* Start slope [s/step]. */
+        643.1372e-6,                   /* Acceleration final slope [s/step]. */
+        643.1372e-6,                   /* Deceleration final slope [s/step]. */
+        0,                             /* Thermal compensation factor (range [0, 15]). */
+        3.06 * 1000 * 1.10,            /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
+        3.06 * 1000 * 1.00,            /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
+        StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
+        0xFF,                          /* Alarm conditions enable. */
+        0x2E88                         /* Ic configuration. */
+    },
+
+    /* Second Motor. */
+    {
+        12.0,                           /* Motor supply voltage in V. */
+        400,                           /* Min number of steps per revolution for the motor. */
+        1.7,                           /* Max motor phase voltage in A. */
+        3.06,                          /* Max motor phase voltage in V. */
+        300.0,                         /* Motor initial speed [step/s]. */
+        500.0,                         /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
+        500.0,                         /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
+        992.0,                         /* Motor maximum speed [step/s]. */
+        0.0,                           /* Motor minimum speed [step/s]. */
+        602.7,                         /* Motor full-step speed threshold [step/s]. */
+        3.06,                          /* Holding kval [V]. */
+        3.06,                          /* Constant speed kval [V]. */
+        3.06,                          /* Acceleration starting kval [V]. */
+        3.06,                          /* Deceleration starting kval [V]. */
+        61.52,                         /* Intersect speed for bemf compensation curve slope changing [step/s]. */
+        392.1569e-6,                   /* Start slope [s/step]. */
+        643.1372e-6,                   /* Acceleration final slope [s/step]. */
+        643.1372e-6,                   /* Deceleration final slope [s/step]. */
+        0,                             /* Thermal compensation factor (range [0, 15]). */
+        3.06 * 1000 * 1.10,            /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
+        3.06 * 1000 * 1.00,            /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
+        StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
+        0xFF,                          /* Alarm conditions enable. */
+        0x2E88                         /* Ic configuration. */
+    }
+};
 
 
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-InterruptIn button1(USER_BUTTON);
-volatile int idx = 0;
-volatile bool button1_pressed = false; // Used in the main loop
-volatile bool button1_enabled = true; // Used for debouncing
-Timeout button1_timeout; // Used for debouncing
-
-// Enables button when bouncing is over
-void button1_enabled_cb(void)
-{
-    button1_enabled = true;
-}
-
-// ISR handling button pressed event
-void button1_onpressed_cb(void)
-{
-    if (button1_enabled) { // Disabled while the button is bouncing
-        button1_enabled = false;
-        button1_pressed = true; // To be read by the main loop
-        
-        if(idx<4){
-            idx++;
-        }
-        else{idx=1;}
-            
-        button1_timeout.attach(callback(button1_enabled_cb), 0.03); // Debounce time 300 ms
-    }
-}
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
 
-
-
-
+L6470B **motors2;
+L6470 **motors;
 
 
 /* Main ----------------------------------------------------------------------*/
 
 int main()
 {
-    /*----- Initialization. -----*/
+/*----- Initialization. -----*/
+/* Initializing Motor Control Expansion Board. */
+x_nucleo_ihm02a1_2 = new XNucleoIHM02A12(&init[0], &init[1],A4, A5, D4, D2, D11, D12, D3 );
+x_nucleo_ihm02a1_1 = new XNucleoIHM02A1(&init[0], &init[1], A4, A5, D4, A2, D11, D12, D3 );
     
-    SchrittmotorenInit();
-    button1.fall(callback(button1_onpressed_cb)); // Attach ISR to handle button press event
+/* Building a list of motor control components. */
+motors2 = x_nucleo_ihm02a1_2->get_components();
+motors = x_nucleo_ihm02a1_1->get_components();
+    
+buttonSTART.fall(callback(buttonSTART_onpressed_cb)); // Attach ISR to handle button press event
 
  while(1)
     {