Update
Dependencies: mbed mbed-rtos X_NUCLEO_IHM02A1
main.cpp
- Committer:
- scherfa2
- Date:
- 2019-04-17
- Revision:
- 32:297989ec8abf
- Parent:
- 30:e464b2bb2376
File content as of revision 32:297989ec8abf:
/** ****************************************************************************** * @file main.cpp * @author Fabian Scherrer * @version V1.0.0 * @date April 7th, 2019 * @brief ****************************************************************************** * @attention * Verwendete I/O's: Input: * PA9 (InputKontrollmodul Pin von Kontroll-Modul)(CN5-1) * * Output: * PA10 (D2) (Select Steppmotor Treiber2) PA9 (InputKontrollModul) * PA7 (D11) (mosi Steppmotor Treiber1) * PA6 (D12) (miso Steppmotor Treiber1) * PA4 (A2) (Select Steppmotor Treiber1) * * PB6 (D10)(pwm_io)(CN5-3) * PB5 (D4)(Standby_reset Steppmotor) * PB4 (D5)(pwm_io2)(CN9-6) * PB3 (D3)(Select Steppmotor Treiber1) * PC1 (A4)(Flag_irq Steppmotor) * PC0 (A5)(Busy_irq Steppmotor) ******************************************************************************/ /* Includes ------------------------------------------------------------------*/ /* mbed specific header files. */ #include "mbed.h" #include "main.h" #include "PWM.h" #include "ST_SOLO.h" #include "ST_DUO.h" #include "SCHRITTMOTOREN_INIT.h" /* Helper header files. */ #include "DevSPI.h" /* Expansion Board specific header files. */ #include "XNucleoIHM02A1.h" /* Definitions ---------------------------------------------------------------*/ /* Status Spleisser definieren*/ int StatusSpleisser = ST_SOLO; /*Input initalisieren für Status Spleisser*/ DigitalIn InputKontrollmodul(PA_9); InterruptIn button1(USER_BUTTON); volatile int idx = 0; volatile bool button1_pressed = false; // Used in the main loop volatile bool button1_enabled = true; // Used for debouncing Timeout button1_timeout; // Used for debouncing // Enables button when bouncing is over void button1_enabled_cb(void) { button1_enabled = true; } // ISR handling button pressed event void button1_onpressed_cb(void) { if (button1_enabled) { // Disabled while the button is bouncing button1_enabled = false; button1_pressed = true; // To be read by the main loop if(idx<4){ idx++; } else{idx=1;} button1_timeout.attach(callback(button1_enabled_cb), 0.03); // Debounce time 300 ms } } /* Main ----------------------------------------------------------------------*/ int main() { /*----- Initialization. -----*/ SchrittmotorenInit(); pwm_io2(20000, 0.075); button1.fall(callback(button1_onpressed_cb)); // Attach ISR to handle button press event while(1) { switch (StatusSpleisser) { case ST_SOLO: if(InputKontrollmodul ==0) { EntrySOLO(); } else { StatusSpleisser = ST_DUO; } break; case ST_DUO: if(InputKontrollmodul ==1) { EntryDUO(); } else { StatusSpleisser = ST_SOLO; } break; } } }