Update

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

Committer:
scherfa2
Date:
Thu Apr 11 15:20:05 2019 +0000
Revision:
30:e464b2bb2376
Parent:
27:23bd03a6a6f6
Child:
32:297989ec8abf
Child:
33:de144094bdd1
mit Display;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Davidroid 0:5148e9486cf2 1 /**
Davidroid 0:5148e9486cf2 2 ******************************************************************************
Davidroid 0:5148e9486cf2 3 * @file main.cpp
scherfa2 27:23bd03a6a6f6 4 * @author Fabian Scherrer
Davidroid 0:5148e9486cf2 5 * @version V1.0.0
scherfa2 27:23bd03a6a6f6 6 * @date April 7th, 2019
scherfa2 27:23bd03a6a6f6 7 * @brief
Davidroid 0:5148e9486cf2 8 ******************************************************************************
Davidroid 0:5148e9486cf2 9 * @attention
scherfa2 27:23bd03a6a6f6 10 * Verwendete I/O's: Input:
scherfa2 27:23bd03a6a6f6 11 * PA9 (InputKontrollmodul Pin von Kontroll-Modul)(CN5-1)
scherfa2 27:23bd03a6a6f6 12 *
scherfa2 27:23bd03a6a6f6 13 * Output:
scherfa2 27:23bd03a6a6f6 14 * PA10 (D2) (Select Steppmotor Treiber2)
scherfa2 30:e464b2bb2376 15 PA9 (InputKontrollModul)
scherfa2 27:23bd03a6a6f6 16 * PA7 (D11) (mosi Steppmotor Treiber1)
scherfa2 27:23bd03a6a6f6 17 * PA6 (D12) (miso Steppmotor Treiber1)
scherfa2 27:23bd03a6a6f6 18 * PA4 (A2) (Select Steppmotor Treiber1)
Davidroid 0:5148e9486cf2 19 *
scherfa2 27:23bd03a6a6f6 20 * PB15 (mosi Steppmotor Treiber2)
scherfa2 27:23bd03a6a6f6 21 * PB14 (miso Steppmotor Treiber2)
scherfa2 27:23bd03a6a6f6 22 * PB13 (slk Steppmotor Treiber2)
scherfa2 27:23bd03a6a6f6 23 * PB6 (D10)(pwm_io)(CN5-3)
scherfa2 27:23bd03a6a6f6 24 * PB5 (D4)(Standby_reset Steppmotor)
scherfa2 27:23bd03a6a6f6 25 * PB4 (D5)(pwm_io2)(CN9-6)
scherfa2 27:23bd03a6a6f6 26 * PB3 (D3)(Select Steppmotor Treiber1)
scherfa2 27:23bd03a6a6f6 27
scherfa2 27:23bd03a6a6f6 28 * PC1 (A4)(Flag_irq Steppmotor)
scherfa2 27:23bd03a6a6f6 29 * PC0 (A5)(Busy_irq Steppmotor)
scherfa2 30:e464b2bb2376 30
scherfa2 30:e464b2bb2376 31
scherfa2 27:23bd03a6a6f6 32 ******************************************************************************/
scherfa2 27:23bd03a6a6f6 33
Davidroid 0:5148e9486cf2 34 /* Includes ------------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 35
Davidroid 0:5148e9486cf2 36 /* mbed specific header files. */
Davidroid 0:5148e9486cf2 37 #include "mbed.h"
scherfa2 27:23bd03a6a6f6 38 #include "main.h"
scherfa2 27:23bd03a6a6f6 39 #include "PWM.h"
scherfa2 27:23bd03a6a6f6 40 #include "ST_SOLO.h"
scherfa2 27:23bd03a6a6f6 41 #include "ST_DUO.h"
scherfa2 30:e464b2bb2376 42 #include "SCHRITTMOTOREN_INIT.h"
Davidroid 0:5148e9486cf2 43
Davidroid 0:5148e9486cf2 44 /* Helper header files. */
Davidroid 0:5148e9486cf2 45 #include "DevSPI.h"
Davidroid 0:5148e9486cf2 46
Davidroid 0:5148e9486cf2 47 /* Expansion Board specific header files. */
Davidroid 26:caec5f51abe8 48 #include "XNucleoIHM02A1.h"
Davidroid 0:5148e9486cf2 49
Davidroid 0:5148e9486cf2 50
Davidroid 0:5148e9486cf2 51 /* Definitions ---------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 52
Davidroid 1:9f1974b0960d 53
Davidroid 0:5148e9486cf2 54
scherfa2 27:23bd03a6a6f6 55 /* Status Spleisser definieren*/
scherfa2 27:23bd03a6a6f6 56 int StatusSpleisser = ST_SOLO;
scherfa2 27:23bd03a6a6f6 57
scherfa2 27:23bd03a6a6f6 58 /*Input initalisieren für Status Spleisser*/
scherfa2 27:23bd03a6a6f6 59 DigitalIn InputKontrollmodul(PA_9);
scherfa2 27:23bd03a6a6f6 60
scherfa2 27:23bd03a6a6f6 61 InterruptIn button1(USER_BUTTON);
scherfa2 27:23bd03a6a6f6 62 volatile int idx = 0;
scherfa2 27:23bd03a6a6f6 63 volatile bool button1_pressed = false; // Used in the main loop
scherfa2 27:23bd03a6a6f6 64 volatile bool button1_enabled = true; // Used for debouncing
scherfa2 27:23bd03a6a6f6 65 Timeout button1_timeout; // Used for debouncing
scherfa2 27:23bd03a6a6f6 66
scherfa2 27:23bd03a6a6f6 67 // Enables button when bouncing is over
scherfa2 27:23bd03a6a6f6 68 void button1_enabled_cb(void)
scherfa2 27:23bd03a6a6f6 69 {
scherfa2 27:23bd03a6a6f6 70 button1_enabled = true;
scherfa2 27:23bd03a6a6f6 71 }
scherfa2 27:23bd03a6a6f6 72
scherfa2 27:23bd03a6a6f6 73 // ISR handling button pressed event
scherfa2 27:23bd03a6a6f6 74 void button1_onpressed_cb(void)
scherfa2 27:23bd03a6a6f6 75 {
scherfa2 27:23bd03a6a6f6 76 if (button1_enabled) { // Disabled while the button is bouncing
scherfa2 27:23bd03a6a6f6 77 button1_enabled = false;
scherfa2 27:23bd03a6a6f6 78 button1_pressed = true; // To be read by the main loop
scherfa2 27:23bd03a6a6f6 79
scherfa2 27:23bd03a6a6f6 80 if(idx<4){
scherfa2 27:23bd03a6a6f6 81 idx++;
scherfa2 27:23bd03a6a6f6 82 }
scherfa2 27:23bd03a6a6f6 83 else{idx=1;}
scherfa2 27:23bd03a6a6f6 84
scherfa2 27:23bd03a6a6f6 85 button1_timeout.attach(callback(button1_enabled_cb), 0.03); // Debounce time 300 ms
scherfa2 27:23bd03a6a6f6 86 }
scherfa2 27:23bd03a6a6f6 87 }
Davidroid 0:5148e9486cf2 88
Davidroid 0:5148e9486cf2 89
Davidroid 9:f35fbeedb8f4 90
Davidroid 0:5148e9486cf2 91 /* Main ----------------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 92
Davidroid 0:5148e9486cf2 93 int main()
Davidroid 0:5148e9486cf2 94 {
Davidroid 1:9f1974b0960d 95 /*----- Initialization. -----*/
scherfa2 27:23bd03a6a6f6 96
scherfa2 30:e464b2bb2376 97 SchrittmotorenInit();
scherfa2 27:23bd03a6a6f6 98
scherfa2 30:e464b2bb2376 99 pwm_io2(20000, 0.075);
scherfa2 27:23bd03a6a6f6 100 button1.fall(callback(button1_onpressed_cb)); // Attach ISR to handle button press event
Davidroid 18:591a007effc2 101
scherfa2 27:23bd03a6a6f6 102 while(1)
scherfa2 27:23bd03a6a6f6 103 {
scherfa2 27:23bd03a6a6f6 104 switch (StatusSpleisser)
scherfa2 27:23bd03a6a6f6 105 {
scherfa2 27:23bd03a6a6f6 106 case ST_SOLO:
scherfa2 27:23bd03a6a6f6 107 if(InputKontrollmodul ==0)
scherfa2 27:23bd03a6a6f6 108 {
scherfa2 27:23bd03a6a6f6 109 EntrySOLO();
scherfa2 27:23bd03a6a6f6 110 }
scherfa2 27:23bd03a6a6f6 111 else
scherfa2 27:23bd03a6a6f6 112 {
scherfa2 27:23bd03a6a6f6 113 StatusSpleisser = ST_DUO;
scherfa2 27:23bd03a6a6f6 114 }
scherfa2 27:23bd03a6a6f6 115 break;
scherfa2 27:23bd03a6a6f6 116 case ST_DUO:
scherfa2 27:23bd03a6a6f6 117 if(InputKontrollmodul ==1)
scherfa2 27:23bd03a6a6f6 118 {
scherfa2 27:23bd03a6a6f6 119 EntryDUO();
scherfa2 27:23bd03a6a6f6 120 }
scherfa2 27:23bd03a6a6f6 121 else
scherfa2 27:23bd03a6a6f6 122 {
scherfa2 27:23bd03a6a6f6 123 StatusSpleisser = ST_SOLO;
scherfa2 27:23bd03a6a6f6 124 }
scherfa2 27:23bd03a6a6f6 125 break;
scherfa2 27:23bd03a6a6f6 126
scherfa2 27:23bd03a6a6f6 127 }
Davidroid 22:e81ccf73bc5d 128 }
Davidroid 22:e81ccf73bc5d 129 }