Update

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

main.cpp

Committer:
scherfa2
Date:
2019-04-24
Revision:
34:0dee9a606869
Parent:
33:de144094bdd1
Child:
35:758191d5c6e1

File content as of revision 34:0dee9a606869:

#include "SETUP.h"


/* 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. */
    }
};




//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

L6470B **motors2;
L6470 **motors;


/* Main ----------------------------------------------------------------------*/

int main()
{
/*----- 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 );
    
/* 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)
    {
        switch (StatusSpleisser)
        {   
            case ST_SOLO: 
                   if(InputKontrollmodul == 0)
                    {
                        EntrySOLO(); 
                    }    
                    else
                    {
                        StatusSpleisser = ST_DUO;
                    }
            break;
            case ST_DUO:
                    if(InputKontrollmodul == 1)
                    {
                        EntryDUO(); 
                    }    
                    else
                    {
                        StatusSpleisser = ST_SOLO;
                    }               
            break;
               
            }
    }
}