Update

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

Committer:
scherfa2
Date:
Wed Apr 17 09:25:39 2019 +0000
Revision:
32:297989ec8abf
Parent:
30:e464b2bb2376
Update Schrittmotoren SPI

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 * PB6 (D10)(pwm_io)(CN5-3)
scherfa2 27:23bd03a6a6f6 21 * PB5 (D4)(Standby_reset Steppmotor)
scherfa2 27:23bd03a6a6f6 22 * PB4 (D5)(pwm_io2)(CN9-6)
scherfa2 27:23bd03a6a6f6 23 * PB3 (D3)(Select Steppmotor Treiber1)
scherfa2 27:23bd03a6a6f6 24
scherfa2 27:23bd03a6a6f6 25 * PC1 (A4)(Flag_irq Steppmotor)
scherfa2 27:23bd03a6a6f6 26 * PC0 (A5)(Busy_irq Steppmotor)
scherfa2 30:e464b2bb2376 27
scherfa2 30:e464b2bb2376 28
scherfa2 27:23bd03a6a6f6 29 ******************************************************************************/
scherfa2 27:23bd03a6a6f6 30
Davidroid 0:5148e9486cf2 31 /* Includes ------------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 32
Davidroid 0:5148e9486cf2 33 /* mbed specific header files. */
Davidroid 0:5148e9486cf2 34 #include "mbed.h"
scherfa2 27:23bd03a6a6f6 35 #include "main.h"
scherfa2 27:23bd03a6a6f6 36 #include "PWM.h"
scherfa2 27:23bd03a6a6f6 37 #include "ST_SOLO.h"
scherfa2 27:23bd03a6a6f6 38 #include "ST_DUO.h"
scherfa2 30:e464b2bb2376 39 #include "SCHRITTMOTOREN_INIT.h"
Davidroid 0:5148e9486cf2 40
Davidroid 0:5148e9486cf2 41 /* Helper header files. */
Davidroid 0:5148e9486cf2 42 #include "DevSPI.h"
Davidroid 0:5148e9486cf2 43
Davidroid 0:5148e9486cf2 44 /* Expansion Board specific header files. */
Davidroid 26:caec5f51abe8 45 #include "XNucleoIHM02A1.h"
Davidroid 0:5148e9486cf2 46
Davidroid 0:5148e9486cf2 47
Davidroid 0:5148e9486cf2 48 /* Definitions ---------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 49
Davidroid 1:9f1974b0960d 50
Davidroid 0:5148e9486cf2 51
scherfa2 27:23bd03a6a6f6 52 /* Status Spleisser definieren*/
scherfa2 27:23bd03a6a6f6 53 int StatusSpleisser = ST_SOLO;
scherfa2 27:23bd03a6a6f6 54
scherfa2 27:23bd03a6a6f6 55 /*Input initalisieren für Status Spleisser*/
scherfa2 27:23bd03a6a6f6 56 DigitalIn InputKontrollmodul(PA_9);
scherfa2 27:23bd03a6a6f6 57
scherfa2 27:23bd03a6a6f6 58 InterruptIn button1(USER_BUTTON);
scherfa2 27:23bd03a6a6f6 59 volatile int idx = 0;
scherfa2 27:23bd03a6a6f6 60 volatile bool button1_pressed = false; // Used in the main loop
scherfa2 27:23bd03a6a6f6 61 volatile bool button1_enabled = true; // Used for debouncing
scherfa2 27:23bd03a6a6f6 62 Timeout button1_timeout; // Used for debouncing
scherfa2 27:23bd03a6a6f6 63
scherfa2 27:23bd03a6a6f6 64 // Enables button when bouncing is over
scherfa2 27:23bd03a6a6f6 65 void button1_enabled_cb(void)
scherfa2 27:23bd03a6a6f6 66 {
scherfa2 27:23bd03a6a6f6 67 button1_enabled = true;
scherfa2 27:23bd03a6a6f6 68 }
scherfa2 27:23bd03a6a6f6 69
scherfa2 27:23bd03a6a6f6 70 // ISR handling button pressed event
scherfa2 27:23bd03a6a6f6 71 void button1_onpressed_cb(void)
scherfa2 27:23bd03a6a6f6 72 {
scherfa2 27:23bd03a6a6f6 73 if (button1_enabled) { // Disabled while the button is bouncing
scherfa2 27:23bd03a6a6f6 74 button1_enabled = false;
scherfa2 27:23bd03a6a6f6 75 button1_pressed = true; // To be read by the main loop
scherfa2 27:23bd03a6a6f6 76
scherfa2 27:23bd03a6a6f6 77 if(idx<4){
scherfa2 27:23bd03a6a6f6 78 idx++;
scherfa2 27:23bd03a6a6f6 79 }
scherfa2 27:23bd03a6a6f6 80 else{idx=1;}
scherfa2 27:23bd03a6a6f6 81
scherfa2 27:23bd03a6a6f6 82 button1_timeout.attach(callback(button1_enabled_cb), 0.03); // Debounce time 300 ms
scherfa2 27:23bd03a6a6f6 83 }
scherfa2 27:23bd03a6a6f6 84 }
Davidroid 0:5148e9486cf2 85
Davidroid 0:5148e9486cf2 86
Davidroid 9:f35fbeedb8f4 87
Davidroid 0:5148e9486cf2 88 /* Main ----------------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 89
Davidroid 0:5148e9486cf2 90 int main()
Davidroid 0:5148e9486cf2 91 {
Davidroid 1:9f1974b0960d 92 /*----- Initialization. -----*/
scherfa2 27:23bd03a6a6f6 93
scherfa2 30:e464b2bb2376 94 SchrittmotorenInit();
scherfa2 27:23bd03a6a6f6 95
scherfa2 30:e464b2bb2376 96 pwm_io2(20000, 0.075);
scherfa2 27:23bd03a6a6f6 97 button1.fall(callback(button1_onpressed_cb)); // Attach ISR to handle button press event
Davidroid 18:591a007effc2 98
scherfa2 27:23bd03a6a6f6 99 while(1)
scherfa2 27:23bd03a6a6f6 100 {
scherfa2 27:23bd03a6a6f6 101 switch (StatusSpleisser)
scherfa2 27:23bd03a6a6f6 102 {
scherfa2 27:23bd03a6a6f6 103 case ST_SOLO:
scherfa2 27:23bd03a6a6f6 104 if(InputKontrollmodul ==0)
scherfa2 27:23bd03a6a6f6 105 {
scherfa2 27:23bd03a6a6f6 106 EntrySOLO();
scherfa2 27:23bd03a6a6f6 107 }
scherfa2 27:23bd03a6a6f6 108 else
scherfa2 27:23bd03a6a6f6 109 {
scherfa2 27:23bd03a6a6f6 110 StatusSpleisser = ST_DUO;
scherfa2 27:23bd03a6a6f6 111 }
scherfa2 27:23bd03a6a6f6 112 break;
scherfa2 27:23bd03a6a6f6 113 case ST_DUO:
scherfa2 27:23bd03a6a6f6 114 if(InputKontrollmodul ==1)
scherfa2 27:23bd03a6a6f6 115 {
scherfa2 27:23bd03a6a6f6 116 EntryDUO();
scherfa2 27:23bd03a6a6f6 117 }
scherfa2 27:23bd03a6a6f6 118 else
scherfa2 27:23bd03a6a6f6 119 {
scherfa2 27:23bd03a6a6f6 120 StatusSpleisser = ST_SOLO;
scherfa2 27:23bd03a6a6f6 121 }
scherfa2 27:23bd03a6a6f6 122 break;
scherfa2 27:23bd03a6a6f6 123
scherfa2 27:23bd03a6a6f6 124 }
Davidroid 22:e81ccf73bc5d 125 }
Davidroid 22:e81ccf73bc5d 126 }