Update

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

main.cpp

Committer:
hagenrap
Date:
2019-05-10
Revision:
37:a74d377d8f74
Parent:
35:758191d5c6e1
Child:
38:3776ee18e56f

File content as of revision 37:a74d377d8f74:

/* ------------------------ INCLUDE ----------------------------------------- */
#include "SETUP.h"

/* ---------------------------- END ----------------------------------------- */


/* Zum testen */
DigitalOut myled(LED1);
DigitalIn  mybutton(USER_BUTTON);



/* ----------------------- INITIALISIERUNG ---------------------------------- */
/* -------------------------------------------------------------------------- */

/* Status Spleisser definieren*/
int StatusSpleisser = ST_SOLO;


/*Buttons initialisieren*/

InterruptIn buttonSTART(START_BUTTON);
//DigitaIn Button1(START_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

InterruptIn buttonAbbruch(ABBRUCH_BUTTON);
//DigitaIn Button2(ABBRUCH_BUTTON);
volatile bool buttonAbbruch_pressed = false; // Used in the main loop
volatile bool buttonAbbruch_enabled = true;  // Used for debouncing
Timeout buttonAbbruch_timeout;               // Used for debouncing


/*PWMs initialisieren*/
PwmOut Servo        (SERVO_PWM);
PwmOut Cutter_1     (CUTTER_ARC_1);
PwmOut Cutter_2     (CUTTER_ARC_2);
PwmOut Spleisser_1  (SPLEISSER_ARC_1);
PwmOut Spleisser_2  (SPLEISSER_ARC_2);

/*Lichtschranken*/
DigitalIn LS_1(LICHTSCHRANKE_1);  // HIGH - kein Filament / LOW - Filament
DigitalIn LS_2(LICHTSCHRANKE_2);  // HIGH - kein Filament / LOW - Filament  /* Mit LS_x.read(); auslesen */
DigitalIn LS_3(LICHTSCHRANKE_3);  // HIGH - kein Filament / LOW - Filament

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

/* Motor Objekte */
L6470B **motors2;
L6470 **motors;

/* --------------------------------- END ------------------------------------ */
/* -------------------------------------------------------------------------- */






/* ---------------------------------- MAIN ---------------------------------- */
/* -------------------------------------------------------------------------- */

int main()
{

/* Initializing Motor Control Expansion Board. */
x_nucleo_ihm02a1_1 = new XNucleoIHM02A1 (&init[0], &init[1], IRQ_FLAG_MOTOR, IRQ_BUSY_MOTOR, STB_MOTOR, SPI_CS_1, SPI_MOSI, SPI_MISO, SPI_CLK );
x_nucleo_ihm02a1_2 = new XNucleoIHM02A12(&init[0], &init[1], IRQ_FLAG_MOTOR, IRQ_BUSY_MOTOR, STB_MOTOR, SPI_CS_2, SPI_MOSI, SPI_MISO, SPI_CLK );
  
/* Building a list of motor control components. */
motors2 = x_nucleo_ihm02a1_2->get_components();
motors =  x_nucleo_ihm02a1_1->get_components();

/* Attach ISR to handle button press event */    
buttonSTART.fall(callback(buttonSTART_onpressed_cb)); 
buttonAbbruch.fall(callback(buttonAbbruch_onpressed_cb)); 

/* Init PWM */
Init_Servo();
Init_Cutter();
Init_Spleisser();

/*Display*/
wait_ms(250);
DisplayInit();






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