mit Buttons/PWM als einzelne cpp und init in main

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

Committer:
scherfa2
Date:
Wed Apr 24 21:08:27 2019 +0000
Revision:
34:0dee9a606869
Parent:
33:de144094bdd1
asdf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hagenrap 33:de144094bdd1 1 #include "SETUP.h"
Davidroid 1:9f1974b0960d 2
Davidroid 0:5148e9486cf2 3
scherfa2 27:23bd03a6a6f6 4 /* Status Spleisser definieren*/
scherfa2 27:23bd03a6a6f6 5 int StatusSpleisser = ST_SOLO;
scherfa2 27:23bd03a6a6f6 6
scherfa2 34:0dee9a606869 7 /*Buttons initialisieren*/
scherfa2 34:0dee9a606869 8 InterruptIn buttonSTART(USER_BUTTON);
scherfa2 34:0dee9a606869 9
scherfa2 34:0dee9a606869 10 volatile bool buttonSTART_pressed = false; // Used in the main loop
scherfa2 34:0dee9a606869 11 volatile bool buttonSTART_enabled = true; // Used for debouncing
scherfa2 34:0dee9a606869 12 Timeout buttonSTART_timeout; // Used for debouncing
scherfa2 34:0dee9a606869 13
scherfa2 34:0dee9a606869 14 /*PWMs initialisieren*/
scherfa2 34:0dee9a606869 15 PwmOut Servo(PB_4);
scherfa2 34:0dee9a606869 16
scherfa2 27:23bd03a6a6f6 17 /*Input initalisieren für Status Spleisser*/
hagenrap 33:de144094bdd1 18 DigitalIn InputKontrollmodul(COM_SIGNAL);
hagenrap 33:de144094bdd1 19
scherfa2 34:0dee9a606869 20 /* Motor Control Expansion Board. */
scherfa2 34:0dee9a606869 21 XNucleoIHM02A1 *x_nucleo_ihm02a1_1;
scherfa2 34:0dee9a606869 22 XNucleoIHM02A12 *x_nucleo_ihm02a1_2;
hagenrap 33:de144094bdd1 23
scherfa2 34:0dee9a606869 24 /* Initialization parameters of the motors connected to the expansion board. */
scherfa2 34:0dee9a606869 25 L6470_init_t init[L6470DAISYCHAINSIZE] = {
scherfa2 34:0dee9a606869 26 /* First Motor. */
scherfa2 34:0dee9a606869 27 {
scherfa2 34:0dee9a606869 28 12.0, /* Motor supply voltage in V. */
scherfa2 34:0dee9a606869 29 400, /* Min number of steps per revolution for the motor. */
scherfa2 34:0dee9a606869 30 1.7, /* Max motor phase voltage in A. */
scherfa2 34:0dee9a606869 31 3.06, /* Max motor phase voltage in V. */
scherfa2 34:0dee9a606869 32 300.0, /* Motor initial speed [step/s]. */
scherfa2 34:0dee9a606869 33 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
scherfa2 34:0dee9a606869 34 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
scherfa2 34:0dee9a606869 35 992.0, /* Motor maximum speed [step/s]. */
scherfa2 34:0dee9a606869 36 0.0, /* Motor minimum speed [step/s]. */
scherfa2 34:0dee9a606869 37 602.7, /* Motor full-step speed threshold [step/s]. */
scherfa2 34:0dee9a606869 38 3.06, /* Holding kval [V]. */
scherfa2 34:0dee9a606869 39 3.06, /* Constant speed kval [V]. */
scherfa2 34:0dee9a606869 40 3.06, /* Acceleration starting kval [V]. */
scherfa2 34:0dee9a606869 41 3.06, /* Deceleration starting kval [V]. */
scherfa2 34:0dee9a606869 42 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
scherfa2 34:0dee9a606869 43 392.1569e-6, /* Start slope [s/step]. */
scherfa2 34:0dee9a606869 44 643.1372e-6, /* Acceleration final slope [s/step]. */
scherfa2 34:0dee9a606869 45 643.1372e-6, /* Deceleration final slope [s/step]. */
scherfa2 34:0dee9a606869 46 0, /* Thermal compensation factor (range [0, 15]). */
scherfa2 34:0dee9a606869 47 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
scherfa2 34:0dee9a606869 48 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
scherfa2 34:0dee9a606869 49 StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
scherfa2 34:0dee9a606869 50 0xFF, /* Alarm conditions enable. */
scherfa2 34:0dee9a606869 51 0x2E88 /* Ic configuration. */
scherfa2 34:0dee9a606869 52 },
scherfa2 34:0dee9a606869 53
scherfa2 34:0dee9a606869 54 /* Second Motor. */
scherfa2 34:0dee9a606869 55 {
scherfa2 34:0dee9a606869 56 12.0, /* Motor supply voltage in V. */
scherfa2 34:0dee9a606869 57 400, /* Min number of steps per revolution for the motor. */
scherfa2 34:0dee9a606869 58 1.7, /* Max motor phase voltage in A. */
scherfa2 34:0dee9a606869 59 3.06, /* Max motor phase voltage in V. */
scherfa2 34:0dee9a606869 60 300.0, /* Motor initial speed [step/s]. */
scherfa2 34:0dee9a606869 61 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
scherfa2 34:0dee9a606869 62 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
scherfa2 34:0dee9a606869 63 992.0, /* Motor maximum speed [step/s]. */
scherfa2 34:0dee9a606869 64 0.0, /* Motor minimum speed [step/s]. */
scherfa2 34:0dee9a606869 65 602.7, /* Motor full-step speed threshold [step/s]. */
scherfa2 34:0dee9a606869 66 3.06, /* Holding kval [V]. */
scherfa2 34:0dee9a606869 67 3.06, /* Constant speed kval [V]. */
scherfa2 34:0dee9a606869 68 3.06, /* Acceleration starting kval [V]. */
scherfa2 34:0dee9a606869 69 3.06, /* Deceleration starting kval [V]. */
scherfa2 34:0dee9a606869 70 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
scherfa2 34:0dee9a606869 71 392.1569e-6, /* Start slope [s/step]. */
scherfa2 34:0dee9a606869 72 643.1372e-6, /* Acceleration final slope [s/step]. */
scherfa2 34:0dee9a606869 73 643.1372e-6, /* Deceleration final slope [s/step]. */
scherfa2 34:0dee9a606869 74 0, /* Thermal compensation factor (range [0, 15]). */
scherfa2 34:0dee9a606869 75 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
scherfa2 34:0dee9a606869 76 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
scherfa2 34:0dee9a606869 77 StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
scherfa2 34:0dee9a606869 78 0xFF, /* Alarm conditions enable. */
scherfa2 34:0dee9a606869 79 0x2E88 /* Ic configuration. */
scherfa2 34:0dee9a606869 80 }
scherfa2 34:0dee9a606869 81 };
hagenrap 33:de144094bdd1 82
scherfa2 27:23bd03a6a6f6 83
hagenrap 33:de144094bdd1 84
hagenrap 33:de144094bdd1 85
hagenrap 33:de144094bdd1 86 //------------------------------------------------------------------------------
hagenrap 33:de144094bdd1 87 //------------------------------------------------------------------------------
hagenrap 33:de144094bdd1 88 //------------------------------------------------------------------------------
hagenrap 33:de144094bdd1 89 //------------------------------------------------------------------------------
hagenrap 33:de144094bdd1 90
scherfa2 34:0dee9a606869 91 L6470B **motors2;
scherfa2 34:0dee9a606869 92 L6470 **motors;
Davidroid 0:5148e9486cf2 93
Davidroid 9:f35fbeedb8f4 94
Davidroid 0:5148e9486cf2 95 /* Main ----------------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 96
Davidroid 0:5148e9486cf2 97 int main()
Davidroid 0:5148e9486cf2 98 {
scherfa2 34:0dee9a606869 99 /*----- Initialization. -----*/
scherfa2 34:0dee9a606869 100 /* Initializing Motor Control Expansion Board. */
scherfa2 34:0dee9a606869 101 x_nucleo_ihm02a1_2 = new XNucleoIHM02A12(&init[0], &init[1],A4, A5, D4, D2, D11, D12, D3 );
scherfa2 34:0dee9a606869 102 x_nucleo_ihm02a1_1 = new XNucleoIHM02A1(&init[0], &init[1], A4, A5, D4, A2, D11, D12, D3 );
scherfa2 27:23bd03a6a6f6 103
scherfa2 34:0dee9a606869 104 /* Building a list of motor control components. */
scherfa2 34:0dee9a606869 105 motors2 = x_nucleo_ihm02a1_2->get_components();
scherfa2 34:0dee9a606869 106 motors = x_nucleo_ihm02a1_1->get_components();
scherfa2 34:0dee9a606869 107
scherfa2 34:0dee9a606869 108 buttonSTART.fall(callback(buttonSTART_onpressed_cb)); // Attach ISR to handle button press event
Davidroid 18:591a007effc2 109
scherfa2 27:23bd03a6a6f6 110 while(1)
scherfa2 27:23bd03a6a6f6 111 {
scherfa2 27:23bd03a6a6f6 112 switch (StatusSpleisser)
scherfa2 27:23bd03a6a6f6 113 {
scherfa2 27:23bd03a6a6f6 114 case ST_SOLO:
hagenrap 33:de144094bdd1 115 if(InputKontrollmodul == 0)
scherfa2 27:23bd03a6a6f6 116 {
scherfa2 27:23bd03a6a6f6 117 EntrySOLO();
scherfa2 27:23bd03a6a6f6 118 }
scherfa2 27:23bd03a6a6f6 119 else
scherfa2 27:23bd03a6a6f6 120 {
scherfa2 27:23bd03a6a6f6 121 StatusSpleisser = ST_DUO;
scherfa2 27:23bd03a6a6f6 122 }
scherfa2 27:23bd03a6a6f6 123 break;
scherfa2 27:23bd03a6a6f6 124 case ST_DUO:
hagenrap 33:de144094bdd1 125 if(InputKontrollmodul == 1)
scherfa2 27:23bd03a6a6f6 126 {
scherfa2 27:23bd03a6a6f6 127 EntryDUO();
scherfa2 27:23bd03a6a6f6 128 }
scherfa2 27:23bd03a6a6f6 129 else
scherfa2 27:23bd03a6a6f6 130 {
scherfa2 27:23bd03a6a6f6 131 StatusSpleisser = ST_SOLO;
scherfa2 27:23bd03a6a6f6 132 }
scherfa2 27:23bd03a6a6f6 133 break;
scherfa2 27:23bd03a6a6f6 134
scherfa2 27:23bd03a6a6f6 135 }
Davidroid 22:e81ccf73bc5d 136 }
Davidroid 22:e81ccf73bc5d 137 }