Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed X_NUCLEO_IHM03A1_for
Diff: main.cpp
- Revision:
- 35:3165f4c1c7bf
- Parent:
- 34:eb04f4f41dfd
- Child:
- 36:896cd03314f1
--- a/main.cpp Wed Mar 11 09:35:36 2020 +0000 +++ b/main.cpp Wed Apr 22 07:37:41 2020 +0000 @@ -86,17 +86,21 @@ //******************************************************************************************************************** //******************************************************************************************************************** #include "main.hpp" -/* Helper header files. */ -#include "DevSPI.h" -/* Component specific header files. */ -#include "PowerStep01.h" +#if defined(runner) + /* Helper header files. */ + #include "DevSPI.h" + /* Component specific header files. */ + #include "PowerStep01.h" +#endif #include "timeandtick.hpp" #include "canbus.hpp" #include "watchdog.h" #include "iodefinition.hpp" #include "parameters.hpp" #include "variables.hpp" -#include "powerstep.hpp" +#if defined(runner) + #include "powerstep.hpp" +#endif //******************************************************************************************************************** //******************************************************************************************************************** #if defined(runnerTos) @@ -117,6 +121,7 @@ * To disable it: * + motor->DisbleFlagIRQ(); */ +#if defined(runner) void my_flag_irq_handler(void) { /* Set ISR flag. */ @@ -168,7 +173,7 @@ /* Reset ISR flag. */ motor->isrFlag = FALSE; } - +#endif /** * @brief This is an example of error handler. * @param[in] error Number of the error @@ -385,27 +390,31 @@ { if (TBmotorDirecti==TBreverse) { TBmotorDirecti=TBforward; - #if !defined(runner) - #if defined(Zucca) - motor->step_clock_mode_enable(StepperMotor::BWD); - #else - motor->step_clock_mode_enable(StepperMotor::FWD); + #if !defined(oldStepperDriver) + #if !defined(runner) + #if defined(Zucca) + motor->step_clock_mode_enable(StepperMotor::BWD); + #else + motor->step_clock_mode_enable(StepperMotor::FWD); + #endif #endif - #endif - #if defined(provaStepper) - motor->run(StepperMotor::FWD,150.0f); + #if defined(provaStepper) + motor->run(StepperMotor::FWD,150.0f); + #endif #endif } else { TBmotorDirecti=TBreverse; - #if !defined(runner) - #if defined(Zucca) - motor->step_clock_mode_enable(StepperMotor::FWD); - #else - motor->step_clock_mode_enable(StepperMotor::BWD); + #if !defined(oldStepperDriver) + #if !defined(runner) + #if defined(Zucca) + motor->step_clock_mode_enable(StepperMotor::FWD); + #else + motor->step_clock_mode_enable(StepperMotor::BWD); + #endif #endif - #endif - #if defined(provaStepper) - motor->run(StepperMotor::BWD,100.0f); + #if defined(provaStepper) + motor->run(StepperMotor::BWD,100.0f); + #endif #endif } #if defined(pcSerial) @@ -503,10 +512,14 @@ #endif #endif if (TBper != NULL) { - #if defined(Zucca) - motor->step_clock_mode_enable(StepperMotor::BWD); - #else - motor->step_clock_mode_enable(StepperMotor::FWD); + #if !defined(oldStepperDriver) + #if defined(runner) + #if defined(Zucca) + motor->step_clock_mode_enable(StepperMotor::BWD); + #else + motor->step_clock_mode_enable(StepperMotor::FWD); + #endif + #endif #endif TBticker.attach_us(&step_TBPulseOut,TBper); // clock time are milliseconds and attach seed motor stepper controls } @@ -522,7 +535,11 @@ pc.printf("A1\n"); #endif #endif - motor->soft_hiz(); + #if !defined(oldStepperDriver) + #if defined(runner) + motor->soft_hiz(); + #endif + #endif } oldPeriodoTB=TBper; } @@ -685,10 +702,14 @@ #else if (TBperiod >= (250.0f*2.0f)) { if (TBperiod != NULL) { - #if defined(Zucca) - motor->step_clock_mode_enable(StepperMotor::BWD); - #else - motor->step_clock_mode_enable(StepperMotor::FWD); + #if !defined(oldstepperDriver) + #if defined(runner) + #if defined(Zucca) + motor->step_clock_mode_enable(StepperMotor::BWD); + #else + motor->step_clock_mode_enable(StepperMotor::FWD); + #endif + #endif #endif TBticker.attach_us(&step_TBPulseOut,TBperiod/2.0f); // clock time are milliseconds and attach seed motor stepper controls } @@ -710,10 +731,12 @@ motor->run(StepperMotor::FWD,50.0f); #endif #else - #if defined(Zucca) - motor->step_clock_mode_enable(StepperMotor::BWD); - #else - motor->step_clock_mode_enable(StepperMotor::FWD); + #if !defined(oldStepperDriver) + #if defined(Zucca) + motor->step_clock_mode_enable(StepperMotor::BWD); + #else + motor->step_clock_mode_enable(StepperMotor::FWD); + #endif #endif TBticker.attach_us(&step_TBPulseOut,1000.0f); // clock time are milliseconds and attach seed motor stepper controls #endif @@ -734,7 +757,9 @@ pc.printf("A2\n"); #endif #endif - motor->soft_hiz(); + #if !defined(oldStepperDriver) + motor->soft_hiz(); + #endif cicloTbinCorso = 0; stopCicloTB=0; loadDaCanInCorso=0; @@ -1532,24 +1557,26 @@ /* Initializing SPI bus. */ // dev_spi(mosi,miso,sclk) // D11= PA7; D12= PA6; D13= PA5 - DevSPI dev_spi(D11, D12, D13); - dev_spi.frequency(5000000); + #if defined(runner) + DevSPI dev_spi(D11, D12, D13); + dev_spi.frequency(5000000); - /* Initializing Motor Control Component. */ - // powerstep01( flag, busy,stby, stck, cs, dev_spi) - // motor = new PowerStep01(D2, D4, D8, D9, D10, dev_spi); // linea standard per IHM03A1 - motor = new PowerStep01(PA_8, PC_7, PC_4, PB_3, PB_6, dev_spi); // linea per scheda seminatrice V7 - if (motor->init(&init) != COMPONENT_OK) { - exit(EXIT_FAILURE); - } - - /* Attaching and enabling an interrupt handler. */ - motor->attach_flag_irq(&my_flag_irq_handler); - motor->enable_flag_irq(); - //motor->disable_flag_irq(); - - /* Attaching an error handler */ - //motor->attach_error_handler(&my_error_handler); + /* Initializing Motor Control Component. */ + // powerstep01( flag, busy,stby, stck, cs, dev_spi) + // motor = new PowerStep01(D2, D4, D8, D9, D10, dev_spi); // linea standard per IHM03A1 + motor = new PowerStep01(PA_8, PC_7, PC_4, PB_3, PB_6, dev_spi); // linea per scheda seminatrice V7 + if (motor->init(&init) != COMPONENT_OK) { + exit(EXIT_FAILURE); + } + + /* Attaching and enabling an interrupt handler. */ + motor->attach_flag_irq(&my_flag_irq_handler); + motor->enable_flag_irq(); + //motor->disable_flag_irq(); + + /* Attaching an error handler */ + //motor->attach_error_handler(&my_error_handler); + #endif wait(1.0f); for (int a=0; a<5; a++) { mediaSpeed[a]=0; @@ -1641,25 +1668,27 @@ //TBticker.attach(&step_TBPulseOut,0.0005f); // clock time are seconds and attach seed motor stepper controls TATicker.attach(&invertiLo,3.0f); #else - // definire il pin di clock che è PB_3 - motor->set_home(); - motor->go_to(50); - motor->wait_while_active(); - #if !defined(runner) - #if defined(Zucca) - motor->step_clock_mode_enable(StepperMotor::BWD); - #else - motor->step_clock_mode_enable(StepperMotor::FWD); + #if !defined(oldStepperDriver) + // definire il pin di clock che è PB_3 + motor->set_home(); + motor->go_to(50); + motor->wait_while_active(); + #if !defined(runner) + #if defined(Zucca) + motor->step_clock_mode_enable(StepperMotor::BWD); + #else + motor->step_clock_mode_enable(StepperMotor::FWD); + #endif #endif - #endif - #if defined(pcSerial) - #if defined(loStop) - pc.printf("A3\n"); + #if defined(pcSerial) + #if defined(loStop) + pc.printf("A3\n"); + #endif #endif + motor->soft_hiz(); + // attiva l'out per il controllo dello stepper in stepClockMode + DigitalOut TBmotorStepOut(PB_3); // PowerStep01 Step Input #endif - motor->soft_hiz(); - // attiva l'out per il controllo dello stepper in stepClockMode - DigitalOut TBmotorStepOut(PB_3); // PowerStep01 Step Input #endif // end prova stepper wd.Configure(2.0); //watchdog set at xx seconds @@ -1779,20 +1808,35 @@ oldSimStepper=true; simStepSpeed= ((double)speedStepp*180.45f)/50.0f; if (oldSimStepSpeed!=simStepSpeed){ - motor->run(StepperMotor::FWD,simStepSpeed); + #if defined(runner) + motor->run(StepperMotor::FWD,simStepSpeed); + #endif + #if defined(oldStepperDriver) + TBticker.attach_us(&step_TBPulseOut,simStepSpeed/2.0f); // clock time are milliseconds and attach seed motor stepper controls + #endif oldSimStepSpeed=simStepSpeed; } }else{ if (oldSimStepper==true){ oldSimStepper=false; - motor->soft_hiz(); + #if defined(runner) + motor->soft_hiz(); + #endif + #if defined(oldStepperDriver) + TBticker.detach(); + #endif oldSimStepSpeed=0.0f; } } }else{ if (oldSimStepper==true){ oldSimStepper=false; - motor->soft_hiz(); + #if defined(runner) + motor->soft_hiz(); + #endif + #if defined(oldStepperDriver) + TBticker.detach(); + #endif oldSimStepSpeed=0.0f; } } @@ -2037,10 +2081,12 @@ motor->run(StepperMotor::FWD); #endif #else - #if defined(Zucca) - motor->step_clock_mode_enable(StepperMotor::FWD); - #else - motor->step_clock_mode_enable(StepperMotor::FWD); + #if !defined(oldStepperDriver) + #if defined(Zucca) + motor->step_clock_mode_enable(StepperMotor::FWD); + #else + motor->step_clock_mode_enable(StepperMotor::FWD); + #endif #endif #endif } @@ -2076,10 +2122,12 @@ motor->run(StepperMotor::BWD); #endif #else - #if defined(Zucca) - motor->step_clock_mode_enable(StepperMotor::FWD); - #else - motor->step_clock_mode_enable(StepperMotor::BWD); + #if !defined(oldStepperDriver) + #if defined(Zucca) + motor->step_clock_mode_enable(StepperMotor::FWD); + #else + motor->step_clock_mode_enable(StepperMotor::BWD); + #endif #endif #endif } @@ -2433,11 +2481,13 @@ syncroCheck=0; lockStart=1; periodo = TBperiod; - #if !defined(runner) - #if defined(Zucca) - motor->step_clock_mode_enable(StepperMotor::BWD); - #else - motor->step_clock_mode_enable(StepperMotor::FWD); + #if !defined(oldStepperDriver) + #if !defined(runner) + #if defined(Zucca) + motor->step_clock_mode_enable(StepperMotor::BWD); + #else + motor->step_clock_mode_enable(StepperMotor::FWD); + #endif #endif #endif if (aspettaStart==0) { @@ -2464,7 +2514,11 @@ #if !defined(runner) TBticker.detach(); #endif - motor->soft_hiz(); + #if !defined(oldStepperDriver) + #if defined(runner) + motor->soft_hiz(); + #endif + #endif } } } else { // fine ciclo fuori da low speed @@ -2546,8 +2600,13 @@ #endif #endif if(simStepper==0){ - motor->soft_hiz(); - motor->set_home(); + #if defined(runner) + motor->soft_hiz(); + motor->set_home(); + #endif + #if defined(oldStepperDriver) + TBticker.detach(); + #endif } cntSpeedError=0; timeIntraPick=0.0f;