Update
Dependencies: mbed mbed-rtos X_NUCLEO_IHM02A1
main.cpp@34:0dee9a606869, 2019-04-24 (annotated)
- Committer:
- scherfa2
- Date:
- Wed Apr 24 21:08:27 2019 +0000
- Revision:
- 34:0dee9a606869
- Parent:
- 33:de144094bdd1
- Child:
- 35:758191d5c6e1
asdf
Who changed what in which revision?
User | Revision | Line number | New 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 | } |