
first publish
Dependencies: MPU9150_DMP MotorControl QuaternionMath SimpleIOMacros mbed
Fork of cool_step_new by
Revision 22:5cad60d669e6, committed 2015-05-26
- Comitter:
- heuristics
- Date:
- Tue May 26 10:22:47 2015 +0000
- Parent:
- 21:c5f88a11eac5
- Child:
- 23:b79faf58d4a1
- Commit message:
- asdasd
Changed in this revision
--- a/MotorControl.lib Wed May 20 13:04:01 2015 +0000 +++ b/MotorControl.lib Tue May 26 10:22:47 2015 +0000 @@ -1,1 +1,1 @@ -http://developer.mbed.org/teams/Cool-step/code/MotorControl/#0eaadc35e60d +http://developer.mbed.org/teams/Cool-step/code/MotorControl/#5df3b4a9a368
--- a/SimpleIOMacros.lib Wed May 20 13:04:01 2015 +0000 +++ b/SimpleIOMacros.lib Tue May 26 10:22:47 2015 +0000 @@ -1,1 +1,1 @@ -http://developer.mbed.org/teams/Cool-step/code/SimpleIOMacros/#689740485c9a +http://developer.mbed.org/teams/Cool-step/code/SimpleIOMacros/#7111b02ebd38
--- a/main.cpp Wed May 20 13:04:01 2015 +0000 +++ b/main.cpp Tue May 26 10:22:47 2015 +0000 @@ -12,6 +12,7 @@ DigitalOut led3(P2_8); AnalogIn hallSensor(P0_26); int pulsesMotor2=0,pulsesMotor1=0; +int int_time=0,bint_time=0; //InterruptIn hall1_(P0_5), hall2_(P0_4); @@ -86,19 +87,20 @@ imu.initialiseDMP(); timer.start(); + timer2.start(); //motor2.setVelocity(0.7); imu.setFifoReset(true); imu.setDMPEnabled(true); Quaternion q1; - motor1.setAngle(-60); - motor2.setAngle(-60); - wait_ms(5000); + wait_ms(500); motor1.setAngle(0); motor2.setAngle(0); initCaptures(); + motor1.setAngle(0); + motor2.setAngle(0); while(1) { @@ -149,8 +151,9 @@ Vector3 pry=q1.getEulerAngles(); debug.printf("p: %f r: %f y: %f ",pry.x/PI*180,pry.y/PI*180,pry.z/PI*180); debug.printf("m1: %.2f m2: %.2f ",motor1.getAngle(),motor2.getAngle()); - debug.printf("dt1: %f dt2: %f \r\n ",motor1.get_dt(),motor2.get_dt()); - /* if(motor1.isRunning()) { + debug.printf("dt1: %f dt2: %f ",motor1.get_dt(),motor2.get_dt()); + debug.printf("Direction: %d Int Time: %d \r\n ",bint_time,int_time); + /* if(!motor1.isRunning()) { if(motor1.getAngle()>30) { motor1.setAngle(0); } @@ -158,7 +161,7 @@ motor1.setAngle(60); } } - if(motor2.isRunning()) { + if(!motor2.isRunning()) { if(motor2.getAngle()>30) { motor2.setAngle(0); } @@ -214,14 +217,18 @@ void TIMER2_IRQHandler(void) { + // timer2.reset(); int bitB = (LPC_GPIO0->FIOPIN>>5) & 0x1; if(bitB) { pulsesMotor2--; + int_time=0; } else { pulsesMotor2++; + int_time=1; } LPC_TIM2->IR |= 0x10; + //bint_time=timer2.read_us(); } void TIMER0_IRQHandler(void) @@ -238,6 +245,7 @@ void initCaptures(void) { + NVIC_SetPriority (TIMER3_IRQn, 6); LPC_PINCON->PINSEL0 |= 0x00000300; // set P0.4 to CAP2.0 LPC_SC->PCONP |= (1 << 22); // Timer2 power on // init Timer 2 (cap2.0) @@ -247,18 +255,20 @@ LPC_TIM2->PC = 0; // clear prescale counter LPC_TIM2->PR = 0; // clear prescale register LPC_TIM2->CCR |= 0x5; // enable cap2.0 rising capture; interrupt on cap2.0 + NVIC_SetPriority (TIMER2_IRQn, 5); LPC_TIM2->TCR = (1 << 0); // start Timer2 NVIC_EnableIRQ(TIMER2_IRQn); LPC_PINCON->PINSEL3 |= 0x00300000; // set P1.26 to CAP0.0 LPC_SC->PCONP |= (1 << 1); // Timer0 power on - // init Timer 2 (cap0.0) + // init Timer 0 (cap0.0) LPC_TIM0->IR = 0x10; // clear interrupt register NVIC_SetVector(TIMER0_IRQn, uint32_t(TIMER0_IRQHandler)); LPC_TIM0->TC = 0; // clear timer counter LPC_TIM0->PC = 0; // clear prescale counter LPC_TIM0->PR = 0; // clear prescale register LPC_TIM0->CCR |= 0x5; // enable cap0.0 rising capture; interrupt on cap0.0 + NVIC_SetPriority (TIMER0_IRQn, 5); LPC_TIM0->TCR = (1 << 0); // start Timer0 NVIC_EnableIRQ(TIMER0_IRQn);