This program is controlling the motor using the PwmOutResetSync library.
Dependencies: PwmOutResetSync mbed
Diff: main.cpp
- Revision:
- 2:55e672914b8b
- Parent:
- 0:605ce817752d
diff -r 0102cd595c05 -r 55e672914b8b main.cpp --- a/main.cpp Thu Jul 28 00:34:53 2016 +0000 +++ b/main.cpp Wed Aug 31 13:12:41 2016 +0000 @@ -1,8 +1,8 @@ //------------------------------------------------------------------// //Supported MCU: RZ/A1H -//File Contents: Motor Control (GR-PEACH version on the Micon Car) +//File Contents: Motor Control using PwmOutResetSync.lib (GR-PEACH version on the Micon Car) //Version number: Ver.1.00 -//Date: 2016.01.19 +//Date: 2016.08.31 //Copyright: Renesas Electronics Corporation //------------------------------------------------------------------// @@ -14,112 +14,44 @@ //Include //------------------------------------------------------------------// #include "mbed.h" -#include "iodefine.h" +#include "PwmOutResetSync.h" //Define //------------------------------------------------------------------// -//Motor PWM cycle -#define MOTOR_PWM_CYCLE 33332 /* Motor PWM period */ - /* 1ms P0φ/1 = 0.03us */ //Motor speed #define MAX_SPEED 85 /* motor() set: 0 to 100 */ //Constructor //------------------------------------------------------------------// -Ticker interrput; DigitalOut Left_motor_signal(P4_6); DigitalOut Right_motor_signal(P4_7); +PwmOutResetSync pwm_l(P4_4); +PwmOutResetSync pwm_r(P4_5); //Prototype //------------------------------------------------------------------// -void init_MTU2_PWM_Motor( void ); /* Initialize PWM functions */ -void intTimer( void ); /* Interrupt fanction */ -void timer( unsigned long timer_set ); void motor( int accele_l, int accele_r ); -void MTU2_PWM_Motor_Stop( void ); -void MTU2_PWM_Motor_Start( void ); - -//Globle -//------------------------------------------------------------------// -volatile unsigned long cnt_timer; /* Used by timer function */ //Main //------------------------------------------------------------------// int main( void ) { - /* Initialize MCU functions */ - init_MTU2_PWM_Motor(); - interrput.attach(&intTimer, 0.001); + PwmOutResetSync::period_ms(1); /* Other notation: "pwm_l.period_ms(1);" or "pwm_r.period_ms(1);" */ while(1) { motor( 100, 0 ); - timer( 1000 ); + wait_ms( 1000 ); motor( 0, 80 ); - timer( 1000 ); + wait_ms( 1000 ); motor( -60, 0 ); - timer( 1000 ); + wait_ms( 1000 ); motor( 0, -40 ); - timer( 1000 ); + wait_ms( 1000 ); motor( 0, 0 ); - timer( 1000 ); + wait_ms( 1000 ); } } -//Initialize MTU2 PWM functions -//------------------------------------------------------------------// -//MTU2_3, MTU2_4 -//Reset-Synchronized PWM mode -//TIOC4A(P4_4) :Left-motor -//TIOC4B(P4_5) :Right-motor -//------------------------------------------------------------------// -void init_MTU2_PWM_Motor( void ) -{ - /* Port setting for S/W I/O Contorol */ - /* alternative mode */ - - /* MTU2_4 (P4_4)(P4_5) */ - GPIOPBDC4 = 0x0000; /* Bidirection mode disabled*/ - GPIOPFCAE4 &= 0xffcf; /* The alternative function of a pin */ - GPIOPFCE4 |= 0x0030; /* The alternative function of a pin */ - GPIOPFC4 &= 0xffcf; /* The alternative function of a pin */ - /* 2nd altemative function/output */ - GPIOP4 &= 0xffcf; /* */ - GPIOPM4 &= 0xffcf; /* p4_4,P4_5:output */ - GPIOPMC4 |= 0x0030; /* P4_4,P4_5:double */ - - /* Mosule stop 33(MTU2) canceling */ - CPGSTBCR3 &= 0xf7; - - /* MTU2_3 and MTU2_4 (Motor PWM) */ - MTU2TCR_3 = 0x20; /* TCNT Clear(TGRA), P0φ/1 */ - MTU2TOCR1 = 0x04; /* */ - MTU2TOCR2 = 0x40; /* N L>H P H>L */ - MTU2TMDR_3 = 0x38; /* Buff:ON Reset-Synchronized PWM mode */ - MTU2TMDR_4 = 0x30; /* Buff:ON */ - MTU2TOER = 0xc6; /* TIOC3B,4A,4B enabled output */ - MTU2TCNT_3 = MTU2TCNT_4 = 0; /* TCNT3,TCNT4 Set 0 */ - MTU2TGRA_3 = MTU2TGRC_3 = MOTOR_PWM_CYCLE; - /* PWM-Cycle(1ms) */ - MTU2TGRA_4 = MTU2TGRC_4 = 0; /* Left-motor(P4_4) */ - MTU2TGRB_4 = MTU2TGRD_4 = 0; /* Right-motor(P4_5) */ - MTU2TSTR |= 0x40; /* TCNT_4 Start */ -} - -//Interrupt Timer -//------------------------------------------------------------------// -void intTimer( void ) -{ - cnt_timer++; -} - -//Timer fanction -//------------------------------------------------------------------// -void timer( unsigned long timer_set ) -{ - cnt_timer = 0; - while( cnt_timer < timer_set ); -} - //motor speed control(PWM) //Arguments: motor:-100 to 100 //Here, 0 is stop, 100 is forward, -100 is reverse @@ -133,44 +65,25 @@ if( accele_l >= 0 ) { /* forward */ Left_motor_signal = 0; - MTU2TGRC_4 = (long)( MOTOR_PWM_CYCLE - 1 ) * accele_l / 100; + pwm_l.write((float)accele_l / 100); /* Other notation: "pwm_l = (float)accele_l / 100;" */ } else { /* reverse */ Left_motor_signal = 1; - MTU2TGRC_4 = (long)( MOTOR_PWM_CYCLE - 1 ) * ( -accele_l ) / 100; + pwm_l.write((float)(-accele_l) / 100); /* Other notation: "pwm_l = (float)(-accele_l) / 100;" */ } /* Right Motor Control */ if( accele_r >= 0 ) { /* forward */ Right_motor_signal = 0; - MTU2TGRD_4 = (long)( MOTOR_PWM_CYCLE - 1 ) * accele_r / 100; + pwm_r.write((float)accele_r / 100); /* Other notation: "pwm_r = (float)accele_r / 100;" */ } else { /* reverse */ Right_motor_signal = 1; - MTU2TGRD_4 = (long)( MOTOR_PWM_CYCLE - 1 ) * ( -accele_r ) / 100; + pwm_r.write((float)(-accele_r) / 100); /* Other notation: "pwm_r = (float)(-accele_r) / 100;" */ } } -// MTU2 PWM Motor Stop -//------------------------------------------------------------------// -void MTU2_PWM_Motor_Stop( void ) -{ - MTU2TSTR &= 0xbf; /* TCNT_4 Stop */ - MTU2TOER &= 0xf9; /* TIOC4A,4B enabled output */ - GPIOPMC4 &= 0xffcf; /* P4_4,P4_5 : port mode */ -} - -// MTU2 PWM Motor Start -//------------------------------------------------------------------// -void MTU2_PWM_Motor_Start( void ) -{ - GPIOPMC4 |= 0x0030; /* P4_4, P4_5 : double mode */ - MTU2TOER |= 0xc6; /* TIOC4A,4B enabled output */ - MTU2TCNT_3 = MTU2TCNT_4 = 0; /* TCNT3,TCNT4 Set 0 */ - MTU2TSTR |= 0x40; /* TCNT_3 Start */ -} - //------------------------------------------------------------------// // End of file -//------------------------------------------------------------------// \ No newline at end of file +//------------------------------------------------------------------//