Update
Dependencies: mbed mbed-rtos X_NUCLEO_IHM02A1
main.cpp@32:297989ec8abf, 2019-04-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |