Scheda Motori
Dependencies: X_NUCLEO_IHM12A1 mbed
Fork of HelloWorld_IHM12A1 by
Diff: main.cpp
- Revision:
- 5:21a4085d2057
- Parent:
- 2:1e4061cedf1d
--- a/main.cpp Wed Nov 23 09:19:34 2016 +0000 +++ b/main.cpp Wed Feb 15 11:09:44 2017 +0000 @@ -1,51 +1,6 @@ -/** - ****************************************************************************** - * @file main.cpp - * @author IPC Rennes - * @version V1.0.0 - * @date April 25th, 2016 - * @brief mbed simple application for the STMicroelectronics X-NUCLEO-IHM12A1 - * Motor Control Expansion Board: control of 2 Brush DC motors. - ****************************************************************************** - * @attention - * - * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ - -/* mbed specific header files. */ #include "mbed.h" - -/* Component specific header files. */ #include "stspin240_250_class.h" -/* Variables -----------------------------------------------------------------*/ - /* Initialization parameters of the motor connected to the expansion board. */ Stspin240_250_Init_t initDeviceParameters = { @@ -59,68 +14,10 @@ /* Motor Control Component. */ STSPIN240_250 *motor; -/* Functions -----------------------------------------------------------------*/ - -/** - * @brief This is an example of error handler. - * @param[in] error Number of the error - * @retval None - * @note If needed, implement it, and then attach it: - * + motor->AttachErrorHandler(&myErrorHandler); - */ -void myErrorHandler(uint16_t error) -{ - /* Printing to the console. */ - printf("Error %d detected\r\n\n", error); - - /* Infinite loop */ - while(1) - { - } -} - -/** - * @brief This is an example of user handler for the flag interrupt. - * @param None - * @retval None - * @note If needed, implement it, and then attach and enable it: - * + motor->AttachFlagIRQ(&myFlagIRQHandler); - * + motor->EnableFlagIRQ(); - * To disable it: - * + motor->DisbleFlagIRQ(); - */ -void myFlagIRQHandler(void) -{ - /* Code to be customised */ - /************************/ - - printf(" WARNING: \"FLAG\" interrupt triggered.\r\n"); - - /* Get the state of bridge A */ - uint16_t bridgeState = motor->GetBridgeStatus(0); - - if (bridgeState == 0) - { - if (motor->GetDeviceState(0) != INACTIVE) - { - /* Bridges were disabled due to overcurrent or over temperature */ - /* When motor was running */ - myErrorHandler(0XBAD0); - } - } -} - -/* Main ----------------------------------------------------------------------*/ - int main() { uint8_t demoStep = 0; - - /* Printing to the console. */ - printf("STARTING MAIN PROGRAM\r\n"); - -//----- Initialization - + /* Initializing Motor Control Component. */ #if (defined TARGET_NUCLEO_F030R8)||(defined TARGET_NUCLEO_F334R8) motor = new STSPIN240_250(D2, D9, D6, D7, D5, D4, A2); @@ -134,15 +31,6 @@ /* Set dual bridge enabled as two motors are used*/ motor->SetDualFullBridgeConfig(1); - /* Attaching and enabling an interrupt handler. */ - motor->AttachFlagIRQ(&myFlagIRQHandler); - motor->EnableFlagIRQ(); - - /* Attaching an error handler */ - motor->AttachErrorHandler(&myErrorHandler); - - /* Printing to the console. */ - printf("Motor Control Application Example for 2 brush DC motors\r\n"); /* Set PWM Frequency of Ref to 15000 Hz */ motor->SetRefPwmFreq(0, 15000); @@ -156,106 +44,54 @@ /* Set PWM Frequency of bridge B inputs to 10000 Hz */ motor->SetBridgeInputPwmFreq(1,10000); - /* Infinite Loop. */ - printf("--> Infinite Loop...\r\n"); while (1) { switch (demoStep) { case 0: - printf("STEP 0: Motor(0) FWD Speed=100%% - Motor(1) Inactive\r\n"); /* Set speed of motor 0 to 100 % */ - motor->SetSpeed(0,100); + motor->SetSpeed(0,50); + motor->SetSpeed(1,50); /* start motor 0 to run forward*/ /* if chip is in standby mode */ /* it is automatically awakened */ motor->Run(0, BDCMotor::FWD); - break; - case 1: - printf("STEP 1: Motor(0) FWD Speed=75%% - Motor(1) BWD Speed=100%%\r\n"); - /* Set speed of motor 0 to 75 % */ - motor->SetSpeed(0,75); - /* Set speed of motor 1 to 100 % */ - motor->SetSpeed(1,100); - /* start motor 1 to run backward */ - motor->Run(1, BDCMotor::BWD); - break; - case 2: - printf("STEP 2: Motor(0) FWD Speed=50%% - Motor(1) BWD Speed=75%%\r\n"); - /* Set speed of motor 0 to 50 % */ - motor->SetSpeed(0,50); - /* Set speed of motor 1 to 75% */ - motor->SetSpeed(1,75); - break; - case 3: - printf("STEP 3: Motor(0) FWD Speed=25%% - Motor(1) BWD Speed=50%%\r\n"); - /* Set speed of motor 0 to 25 % */ - motor->SetSpeed(0,25); - /* Set speed of motor 1 to 50% */ - motor->SetSpeed(1,50); - break; - case 4: - printf("STEP 4: Motor(0) Stopped - Motor(1) BWD Speed=25%%\r\n"); - /* Stop Motor 0 */ - motor->HardStop(0); - /* Set speed of motor 1 to 25% */ - motor->SetSpeed(1,25); - break; - case 5: - printf("STEP 5: Motor(0) BWD Speed=25%% - Motor(1) Stopped\r\n"); - /* Set speed of motor 0 to 25 % */ - motor->SetSpeed(0,25); - /* start motor 0 to run backward */ - motor->Run(0, BDCMotor::BWD); - /* Stop Motor 1 */ - motor->HardStop(1); - break; - case 6: - printf("STEP 6: Motor(0) BWD Speed=50%% - Motor(1) FWD Speed=25%%\r\n"); - /* Set speed of motor 0 to 50 % */ - motor->SetSpeed(0,50); - /* Set speed of motor 1 to 25 % */ - motor->SetSpeed(1,25); - /* start motor 1 to run backward */ motor->Run(1, BDCMotor::FWD); break; - case 7: - printf("STEP 7: Motor(0) BWD Speed=75%% - Motor(1) FWD Speed=50%%\r\n"); - /* Set speed of motor 0 to 75 % */ - motor->SetSpeed(0,75); - /* Set speed of motor 1 to 50 % */ - motor->SetSpeed(1,50); - break; - case 8: - printf("STEP 8: Motor(0) BWD Speed=100%% - Motor(1) FWD Speed=75%%\r\n"); - /* Set speed of motor 0 to 100 % */ - motor->SetSpeed(0,100); - /* Set speed of motor 1 to 75 % */ - motor->SetSpeed(1,75); - break; - case 9: - printf("STEP 9: Motor(0) BWD Speed=100%% - Motor(1) FWD Speed=100%%\r\n"); - /* Set speed of motor 1 to 100 % */ - motor->SetSpeed(1,100); - break; - case 10: - printf("STEP 10\r\n: Stop both motors and disable bridges\r\n"); - /* Stop both motors and disable bridge */ - motor->HardHiZ(0); - motor->HardHiZ(1); - break; - case 11: - printf("STEP 11: Motor(0) FWD Speed=100%% - Motor(1) FWD Speed=100%%\r\n"); - /* Start both motors to go forward*/ - motor->Run(0,BDCMotor::FWD); - motor->Run(1,BDCMotor::FWD); - break; - case 12: - default: - printf("STEP 12: Stop both motors and enter standby mode\r\n"); - /* Stop both motors and put chip in standby mode */ - motor->Reset(); - break; + case 1: + /* Set speed of motor 0 to 100 % */ + motor->SetSpeed(0,50); + motor->SetSpeed(1,50); + /* start motor 0 to run forward*/ + /* if chip is in standby mode */ + /* it is automatically awakened */ + motor->Run(0, BDCMotor::BWD); + motor->Run(1, BDCMotor::BWD); + break; + case 2: + /* Set speed of motor 0 to 100 % */ + motor->SetSpeed(0,32); + motor->SetSpeed(1,25); + /* start motor 0 to run forward*/ + /* if chip is in standby mode */ + /* it is automatically awakened */ + motor->Run(0, BDCMotor::BWD); + motor->Run(1, BDCMotor::BWD); + break; + case 3: + /* Set speed of motor 0 to 100 % */ + motor->SetSpeed(0,25); + motor->SetSpeed(1,40); + /* start motor 0 to run forward*/ + /* if chip is in standby mode */ + /* it is automatically awakened */ + motor->Run(0, BDCMotor::BWD); + motor->Run(1, BDCMotor::BWD); + break; + + + + } /* Wait for 5 seconds */ @@ -269,4 +105,4 @@ } } } -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ +