Abschluss

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

Committer:
scherfa2
Date:
Sun May 19 20:46:32 2019 +0000
Revision:
44:d5481d289b78
Parent:
42:0aaa3b282b6e
Abschluss

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hagenrap 35:758191d5c6e1 1 /* ------------------------ INCLUDE ----------------------------------------- */
hagenrap 33:de144094bdd1 2 #include "SETUP.h"
Davidroid 1:9f1974b0960d 3
hagenrap 35:758191d5c6e1 4 /* ---------------------------- END ----------------------------------------- */
hagenrap 35:758191d5c6e1 5
hagenrap 35:758191d5c6e1 6
hagenrap 35:758191d5c6e1 7 /* Zum testen */
hagenrap 35:758191d5c6e1 8 DigitalOut myled(LED1);
hagenrap 35:758191d5c6e1 9 DigitalIn mybutton(USER_BUTTON);
hagenrap 35:758191d5c6e1 10
hagenrap 35:758191d5c6e1 11
hagenrap 35:758191d5c6e1 12
hagenrap 35:758191d5c6e1 13 /* ----------------------- INITIALISIERUNG ---------------------------------- */
hagenrap 35:758191d5c6e1 14 /* -------------------------------------------------------------------------- */
Davidroid 0:5148e9486cf2 15
scherfa2 27:23bd03a6a6f6 16 /* Status Spleisser definieren*/
scherfa2 27:23bd03a6a6f6 17 int StatusSpleisser = ST_SOLO;
scherfa2 27:23bd03a6a6f6 18
scherfa2 40:117b324843ee 19 extern int StatusDUO;
scherfa2 40:117b324843ee 20 extern int StatusSOLO;
scherfa2 40:117b324843ee 21
hagenrap 35:758191d5c6e1 22
scherfa2 34:0dee9a606869 23 /*Buttons initialisieren*/
hagenrap 37:a74d377d8f74 24
scherfa2 38:3776ee18e56f 25 //InterruptIn buttonSTART(START_BUTTON);
scherfa2 38:3776ee18e56f 26 DigitalIn Button1(START_BUTTON);
scherfa2 34:0dee9a606869 27 volatile bool buttonSTART_pressed = false; // Used in the main loop
scherfa2 34:0dee9a606869 28 volatile bool buttonSTART_enabled = true; // Used for debouncing
scherfa2 34:0dee9a606869 29 Timeout buttonSTART_timeout; // Used for debouncing
scherfa2 34:0dee9a606869 30
scherfa2 38:3776ee18e56f 31 //InterruptIn buttonAbbruch(ABBRUCH_BUTTON);
scherfa2 38:3776ee18e56f 32 DigitalIn Button2(ABBRUCH_BUTTON);
hagenrap 35:758191d5c6e1 33 volatile bool buttonAbbruch_pressed = false; // Used in the main loop
hagenrap 35:758191d5c6e1 34 volatile bool buttonAbbruch_enabled = true; // Used for debouncing
hagenrap 35:758191d5c6e1 35 Timeout buttonAbbruch_timeout; // Used for debouncing
hagenrap 35:758191d5c6e1 36
hagenrap 35:758191d5c6e1 37
scherfa2 34:0dee9a606869 38 /*PWMs initialisieren*/
hagenrap 35:758191d5c6e1 39 PwmOut Servo (SERVO_PWM);
hagenrap 35:758191d5c6e1 40 PwmOut Cutter_1 (CUTTER_ARC_1);
hagenrap 35:758191d5c6e1 41 PwmOut Cutter_2 (CUTTER_ARC_2);
hagenrap 35:758191d5c6e1 42 PwmOut Spleisser_1 (SPLEISSER_ARC_1);
hagenrap 35:758191d5c6e1 43 PwmOut Spleisser_2 (SPLEISSER_ARC_2);
hagenrap 35:758191d5c6e1 44
hagenrap 35:758191d5c6e1 45 /*Lichtschranken*/
hagenrap 35:758191d5c6e1 46 DigitalIn LS_1(LICHTSCHRANKE_1); // HIGH - kein Filament / LOW - Filament
hagenrap 35:758191d5c6e1 47 DigitalIn LS_2(LICHTSCHRANKE_2); // HIGH - kein Filament / LOW - Filament /* Mit LS_x.read(); auslesen */
hagenrap 35:758191d5c6e1 48 DigitalIn LS_3(LICHTSCHRANKE_3); // HIGH - kein Filament / LOW - Filament
scherfa2 34:0dee9a606869 49
scherfa2 27:23bd03a6a6f6 50 /*Input initalisieren für Status Spleisser*/
hagenrap 33:de144094bdd1 51 DigitalIn InputKontrollmodul(COM_SIGNAL);
scherfa2 40:117b324843ee 52 int val_InputKontrollmodul = 0;
hagenrap 33:de144094bdd1 53
scherfa2 40:117b324843ee 54 DigitalIn CutSignal(CUT_SIGNAL);
scherfa2 42:0aaa3b282b6e 55 DigitalIn FertigSignal(FERTIG_SIGNAL);
scherfa2 42:0aaa3b282b6e 56
scherfa2 42:0aaa3b282b6e 57
scherfa2 34:0dee9a606869 58 /* Motor Control Expansion Board. */
scherfa2 34:0dee9a606869 59 XNucleoIHM02A1 *x_nucleo_ihm02a1_1;
scherfa2 34:0dee9a606869 60 XNucleoIHM02A12 *x_nucleo_ihm02a1_2;
hagenrap 33:de144094bdd1 61
scherfa2 34:0dee9a606869 62 /* Initialization parameters of the motors connected to the expansion board. */
scherfa2 34:0dee9a606869 63 L6470_init_t init[L6470DAISYCHAINSIZE] = {
scherfa2 34:0dee9a606869 64 /* First Motor. */
scherfa2 34:0dee9a606869 65 {
hagenrap 35:758191d5c6e1 66 12.0, /* Motor supply voltage in V. */
scherfa2 34:0dee9a606869 67 400, /* Min number of steps per revolution for the motor. */
scherfa2 34:0dee9a606869 68 1.7, /* Max motor phase voltage in A. */
scherfa2 34:0dee9a606869 69 3.06, /* Max motor phase voltage in V. */
scherfa2 34:0dee9a606869 70 300.0, /* Motor initial speed [step/s]. */
scherfa2 34:0dee9a606869 71 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
scherfa2 34:0dee9a606869 72 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
scherfa2 34:0dee9a606869 73 992.0, /* Motor maximum speed [step/s]. */
scherfa2 34:0dee9a606869 74 0.0, /* Motor minimum speed [step/s]. */
scherfa2 34:0dee9a606869 75 602.7, /* Motor full-step speed threshold [step/s]. */
scherfa2 34:0dee9a606869 76 3.06, /* Holding kval [V]. */
scherfa2 34:0dee9a606869 77 3.06, /* Constant speed kval [V]. */
scherfa2 34:0dee9a606869 78 3.06, /* Acceleration starting kval [V]. */
scherfa2 34:0dee9a606869 79 3.06, /* Deceleration starting kval [V]. */
scherfa2 34:0dee9a606869 80 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
scherfa2 34:0dee9a606869 81 392.1569e-6, /* Start slope [s/step]. */
scherfa2 34:0dee9a606869 82 643.1372e-6, /* Acceleration final slope [s/step]. */
scherfa2 34:0dee9a606869 83 643.1372e-6, /* Deceleration final slope [s/step]. */
scherfa2 34:0dee9a606869 84 0, /* Thermal compensation factor (range [0, 15]). */
scherfa2 34:0dee9a606869 85 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
scherfa2 34:0dee9a606869 86 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
scherfa2 34:0dee9a606869 87 StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
scherfa2 34:0dee9a606869 88 0xFF, /* Alarm conditions enable. */
scherfa2 34:0dee9a606869 89 0x2E88 /* Ic configuration. */
scherfa2 34:0dee9a606869 90 },
scherfa2 34:0dee9a606869 91
scherfa2 34:0dee9a606869 92 /* Second Motor. */
scherfa2 34:0dee9a606869 93 {
scherfa2 34:0dee9a606869 94 12.0, /* Motor supply voltage in V. */
scherfa2 34:0dee9a606869 95 400, /* Min number of steps per revolution for the motor. */
scherfa2 34:0dee9a606869 96 1.7, /* Max motor phase voltage in A. */
scherfa2 34:0dee9a606869 97 3.06, /* Max motor phase voltage in V. */
scherfa2 34:0dee9a606869 98 300.0, /* Motor initial speed [step/s]. */
scherfa2 34:0dee9a606869 99 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
scherfa2 34:0dee9a606869 100 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
scherfa2 34:0dee9a606869 101 992.0, /* Motor maximum speed [step/s]. */
scherfa2 34:0dee9a606869 102 0.0, /* Motor minimum speed [step/s]. */
scherfa2 34:0dee9a606869 103 602.7, /* Motor full-step speed threshold [step/s]. */
scherfa2 34:0dee9a606869 104 3.06, /* Holding kval [V]. */
scherfa2 34:0dee9a606869 105 3.06, /* Constant speed kval [V]. */
scherfa2 34:0dee9a606869 106 3.06, /* Acceleration starting kval [V]. */
scherfa2 34:0dee9a606869 107 3.06, /* Deceleration starting kval [V]. */
scherfa2 34:0dee9a606869 108 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
scherfa2 34:0dee9a606869 109 392.1569e-6, /* Start slope [s/step]. */
scherfa2 34:0dee9a606869 110 643.1372e-6, /* Acceleration final slope [s/step]. */
scherfa2 34:0dee9a606869 111 643.1372e-6, /* Deceleration final slope [s/step]. */
scherfa2 34:0dee9a606869 112 0, /* Thermal compensation factor (range [0, 15]). */
scherfa2 34:0dee9a606869 113 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
scherfa2 34:0dee9a606869 114 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
scherfa2 34:0dee9a606869 115 StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
scherfa2 34:0dee9a606869 116 0xFF, /* Alarm conditions enable. */
scherfa2 34:0dee9a606869 117 0x2E88 /* Ic configuration. */
scherfa2 34:0dee9a606869 118 }
scherfa2 34:0dee9a606869 119 };
hagenrap 33:de144094bdd1 120
hagenrap 35:758191d5c6e1 121 /* Motor Objekte */
scherfa2 34:0dee9a606869 122 L6470B **motors2;
scherfa2 34:0dee9a606869 123 L6470 **motors;
Davidroid 0:5148e9486cf2 124
hagenrap 35:758191d5c6e1 125 /* --------------------------------- END ------------------------------------ */
hagenrap 35:758191d5c6e1 126 /* -------------------------------------------------------------------------- */
Davidroid 9:f35fbeedb8f4 127
hagenrap 35:758191d5c6e1 128
hagenrap 35:758191d5c6e1 129
hagenrap 35:758191d5c6e1 130
hagenrap 35:758191d5c6e1 131
hagenrap 35:758191d5c6e1 132
hagenrap 39:6cc9a40bc8a6 133 /* ------------------------------- BOOT SCREEN ------------------------------ */
hagenrap 39:6cc9a40bc8a6 134 void Boot_Screen()
Davidroid 0:5148e9486cf2 135 {
hagenrap 35:758191d5c6e1 136
hagenrap 39:6cc9a40bc8a6 137 DisplaySendeBefehl(0x01);
hagenrap 39:6cc9a40bc8a6 138 DisplaySendeBefehl(0x0C);
hagenrap 39:6cc9a40bc8a6 139 gotoxy(1, 1);
hagenrap 39:6cc9a40bc8a6 140 DisplaySendeString("BOOT:");
hagenrap 39:6cc9a40bc8a6 141 gotoxy(1, 3);
hagenrap 39:6cc9a40bc8a6 142 DisplaySendeString("SPLEISSER FIRMWARE");
hagenrap 39:6cc9a40bc8a6 143
hagenrap 39:6cc9a40bc8a6 144 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 145 DisplaySendeString("[ 0% ]");
hagenrap 39:6cc9a40bc8a6 146 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 147 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 148 DisplaySendeString("[- 7% ]");
hagenrap 39:6cc9a40bc8a6 149 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 150 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 151 DisplaySendeString("[-- 14% ]");
hagenrap 39:6cc9a40bc8a6 152 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 153 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 154 DisplaySendeString("[--- 21% ]");
hagenrap 39:6cc9a40bc8a6 155 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 156 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 157 DisplaySendeString("[---- 28% ]");
hagenrap 39:6cc9a40bc8a6 158 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 159 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 160 DisplaySendeString("[----- 35% ]");
hagenrap 39:6cc9a40bc8a6 161 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 162 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 163 DisplaySendeString("[------ 42% ]");
hagenrap 39:6cc9a40bc8a6 164 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 165 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 166 DisplaySendeString("[-------49% ]");
hagenrap 39:6cc9a40bc8a6 167 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 168 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 169 DisplaySendeString("[-------56%- ]");
hagenrap 39:6cc9a40bc8a6 170 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 171 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 172 DisplaySendeString("[-------63%-- ]");
hagenrap 39:6cc9a40bc8a6 173 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 174 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 175 DisplaySendeString("[-------70%--- ]");
hagenrap 39:6cc9a40bc8a6 176 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 177 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 178 DisplaySendeString("[-------77%---- ]");
hagenrap 39:6cc9a40bc8a6 179 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 180 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 181 DisplaySendeString("[-------84%----- ]");
hagenrap 39:6cc9a40bc8a6 182 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 183 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 184 DisplaySendeString("[-------91%------ ]");
hagenrap 39:6cc9a40bc8a6 185 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 186 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 187 DisplaySendeString("[-------98%------- ]");
hagenrap 39:6cc9a40bc8a6 188 Thread::wait((BOOTTIME/14)*1000);
hagenrap 39:6cc9a40bc8a6 189 gotoxy(1, 4);
hagenrap 39:6cc9a40bc8a6 190 DisplaySendeString("[-------100%-------]");
hagenrap 39:6cc9a40bc8a6 191 Thread::wait(500);
hagenrap 39:6cc9a40bc8a6 192 }
hagenrap 39:6cc9a40bc8a6 193 /* --------------------------------- END ------------------------------------ */
hagenrap 35:758191d5c6e1 194
hagenrap 35:758191d5c6e1 195
hagenrap 35:758191d5c6e1 196
hagenrap 35:758191d5c6e1 197
hagenrap 35:758191d5c6e1 198
hagenrap 35:758191d5c6e1 199
hagenrap 39:6cc9a40bc8a6 200
hagenrap 39:6cc9a40bc8a6 201 /* ---------------------------------- MAIN ---------------------------------- */
hagenrap 39:6cc9a40bc8a6 202 /* -------------------------------------------------------------------------- */
hagenrap 39:6cc9a40bc8a6 203
hagenrap 39:6cc9a40bc8a6 204 int main()
hagenrap 39:6cc9a40bc8a6 205 {
hagenrap 39:6cc9a40bc8a6 206
hagenrap 39:6cc9a40bc8a6 207 /* Initializing Motor Control Expansion Board. */
hagenrap 39:6cc9a40bc8a6 208 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 );
hagenrap 39:6cc9a40bc8a6 209 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 );
hagenrap 39:6cc9a40bc8a6 210
hagenrap 39:6cc9a40bc8a6 211 /* Building a list of motor control components. */
hagenrap 39:6cc9a40bc8a6 212 motors2 = x_nucleo_ihm02a1_2->get_components();
hagenrap 39:6cc9a40bc8a6 213 motors = x_nucleo_ihm02a1_1->get_components();
hagenrap 39:6cc9a40bc8a6 214
hagenrap 39:6cc9a40bc8a6 215 /* Attach ISR to handle button press event
hagenrap 39:6cc9a40bc8a6 216 buttonSTART.fall(callback(buttonSTART_onpressed_cb));
hagenrap 39:6cc9a40bc8a6 217 buttonAbbruch.fall(callback(buttonAbbruch_onpressed_cb));
hagenrap 39:6cc9a40bc8a6 218 */
hagenrap 39:6cc9a40bc8a6 219 /* Init PWM */
hagenrap 39:6cc9a40bc8a6 220 Init_Servo();
hagenrap 39:6cc9a40bc8a6 221 Init_Cutter();
hagenrap 39:6cc9a40bc8a6 222 Init_Spleisser();
hagenrap 39:6cc9a40bc8a6 223
hagenrap 39:6cc9a40bc8a6 224 /*Display*/
hagenrap 39:6cc9a40bc8a6 225 wait_ms(250);
hagenrap 39:6cc9a40bc8a6 226 DisplayInit();
hagenrap 39:6cc9a40bc8a6 227
hagenrap 39:6cc9a40bc8a6 228
hagenrap 39:6cc9a40bc8a6 229
hagenrap 39:6cc9a40bc8a6 230 Boot_Screen();
hagenrap 39:6cc9a40bc8a6 231
hagenrap 39:6cc9a40bc8a6 232
hagenrap 35:758191d5c6e1 233 /* -------------------- ---- STATE_MACHINE ------------------------------ */
hagenrap 39:6cc9a40bc8a6 234 while(1) {
scherfa2 40:117b324843ee 235 val_InputKontrollmodul=InputKontrollmodul;
scherfa2 40:117b324843ee 236 // printf("%i",val_InputKontrollmodul);
scherfa2 40:117b324843ee 237
scherfa2 40:117b324843ee 238 //val_InputKontrollmodul = InputKontrollmodul.read();
hagenrap 39:6cc9a40bc8a6 239 switch (StatusSpleisser) {
hagenrap 39:6cc9a40bc8a6 240 case ST_SOLO:
scherfa2 40:117b324843ee 241 if(InputKontrollmodul == 0)
scherfa2 40:117b324843ee 242 {
hagenrap 39:6cc9a40bc8a6 243 EntrySOLO();
scherfa2 40:117b324843ee 244 }
scherfa2 40:117b324843ee 245 else if(InputKontrollmodul == 1)
scherfa2 40:117b324843ee 246 {
scherfa2 40:117b324843ee 247 StatusDUO =DUO_DEFAULT;
hagenrap 39:6cc9a40bc8a6 248 StatusSpleisser = ST_DUO;
hagenrap 39:6cc9a40bc8a6 249 }
hagenrap 39:6cc9a40bc8a6 250 break;
scherfa2 27:23bd03a6a6f6 251 case ST_DUO:
hagenrap 39:6cc9a40bc8a6 252 if(InputKontrollmodul == 1) {
scherfa2 40:117b324843ee 253
hagenrap 39:6cc9a40bc8a6 254 EntryDUO();
scherfa2 40:117b324843ee 255 }
scherfa2 40:117b324843ee 256 else if (InputKontrollmodul == 0)
scherfa2 40:117b324843ee 257 {
scherfa2 40:117b324843ee 258 StatusSOLO =SOLO_DEFAULT;
hagenrap 39:6cc9a40bc8a6 259 StatusSpleisser = ST_SOLO;
hagenrap 39:6cc9a40bc8a6 260 }
scherfa2 40:117b324843ee 261 break;
hagenrap 39:6cc9a40bc8a6 262 }
scherfa2 40:117b324843ee 263
Davidroid 22:e81ccf73bc5d 264 }
hagenrap 35:758191d5c6e1 265 /* ------------------------------ END ----------------------------------- */
hagenrap 39:6cc9a40bc8a6 266
hagenrap 39:6cc9a40bc8a6 267
hagenrap 39:6cc9a40bc8a6 268
hagenrap 39:6cc9a40bc8a6 269
Davidroid 22:e81ccf73bc5d 270 }
hagenrap 35:758191d5c6e1 271 /* --------------------------------- END ------------------------------------ */
hagenrap 35:758191d5c6e1 272 /* -------------------------------------------------------------------------- */