Controlor for Humanoid. Walking trajectory generator, sensor reflection etc.

Dependencies:   Adafruit-PWM-Servo-Driver MPU6050 RS300 mbed

Files at this revision

API Documentation at this revision

Comitter:
syundo0730
Date:
Sat Sep 22 10:24:14 2012 +0000
Parent:
10:be8b10e54ecb
Child:
12:6cd135bf03bd
Commit message:
16bit version

Changed in this revision

Motion.cpp Show annotated file Show diff for this revision Revisions of this file
Motion.h Show annotated file Show diff for this revision Revisions of this file
PWM.cpp Show annotated file Show diff for this revision Revisions of this file
PWM.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Motion.cpp	Sat Sep 22 06:58:21 2012 +0000
+++ b/Motion.cpp	Sat Sep 22 10:24:14 2012 +0000
@@ -4,7 +4,7 @@
 extern PWM pwm;
 extern Ticker tick;
 
-Motion::Motion(uint32_t** data, unsigned char size_idx, unsigned char size_num)
+Motion::Motion(uint16_t** data, unsigned short int size_idx, unsigned char size_num)
 {
     m_data = data;
     
--- a/Motion.h	Sat Sep 22 06:58:21 2012 +0000
+++ b/Motion.h	Sat Sep 22 10:24:14 2012 +0000
@@ -7,7 +7,7 @@
 class Motion
 {
   public:
-    Motion(uint32_t** data, unsigned char size_idx, unsigned char size_num);
+    Motion(uint16_t** data, unsigned short int size_idx, unsigned char size_num);
     //~Motion();
   public:
     void step();
@@ -19,15 +19,15 @@
     void step_inter();
   
   private:
-    uint32_t** m_data;
-    unsigned char m_IDX_MAX;
+    uint16_t** m_data;
+    unsigned short int m_IDX_MAX;
     unsigned char m_NUM_MAX;
-    unsigned char m_data_num[16];  //inter
+    unsigned char m_data_num[500];  //inter
     unsigned char m_mode;
     bool m_in_interrupt;
   
   private:
-    unsigned char m_idx;
+    unsigned short int m_idx;
     unsigned char m_play;
   private:  
     double m_buf[25];              //buf
--- a/PWM.cpp	Sat Sep 22 06:58:21 2012 +0000
+++ b/PWM.cpp	Sat Sep 22 10:24:14 2012 +0000
@@ -53,13 +53,7 @@
 }
 
 void PWM1_IRQHandler (void)
-{
-    const uint32_t SRV_PWMTable[SRV_BANK_NUM][SRV_IDX_NUM] = {
-    {0,SRV_PERIOD,0,SRV_PERIOD,0,SRV_PERIOD,0,SRV_PERIOD},
-    {0,0,SRV_PERIOD,SRV_PERIOD,0,0,SRV_PERIOD,SRV_PERIOD},
-    {0,0,0,0,SRV_PERIOD,SRV_PERIOD,SRV_PERIOD,SRV_PERIOD}
-    };
-    
+{ 
     LPC_PWM1->MR1 = SRV_PWMTable[0][PWM::SRV_Idx];
     LPC_PWM1->MR2 = SRV_PWMTable[1][PWM::SRV_Idx];
     LPC_PWM1->MR3 = SRV_PWMTable[2][PWM::SRV_Idx];
--- a/PWM.h	Sat Sep 22 06:58:21 2012 +0000
+++ b/PWM.h	Sat Sep 22 10:24:14 2012 +0000
@@ -14,6 +14,12 @@
 const uint8_t SRV_BANK_NUM = 3;//
 const uint8_t SRV_CH_NUM = SRV_IDX_NUM * SRV_BANK_NUM;//
 
+const uint32_t SRV_PWMTable[SRV_BANK_NUM][SRV_IDX_NUM] = {
+    {0,SRV_PERIOD,0,SRV_PERIOD,0,SRV_PERIOD,0,SRV_PERIOD},
+    {0,0,SRV_PERIOD,SRV_PERIOD,0,0,SRV_PERIOD,SRV_PERIOD},
+    {0,0,0,0,SRV_PERIOD,SRV_PERIOD,SRV_PERIOD,SRV_PERIOD}
+    };
+
 class PWM {
   public:
     PWM();
--- a/main.cpp	Sat Sep 22 06:58:21 2012 +0000
+++ b/main.cpp	Sat Sep 22 10:24:14 2012 +0000
@@ -8,21 +8,21 @@
 
 int main(void)
 {  
-    unsigned char size_x = 4, size_y = 24;
+    unsigned short int size_x = 400;    //max about 25kb
+    unsigned char size_y = 25;
     
-    uint32_t **array = new uint32_t*[size_x];
+    uint16_t **array = new uint16_t*[size_x];
 	for (int i = 0; i < size_x; ++i) {
-		array[i] = new uint32_t[size_y];
+		array[i] = new uint16_t[size_y];
 	}
 	for (int i = 0; i < size_x; ++i) {
 	    for (int j = 0; j < size_y; ++j) {
-	        array[i][j] = 900 + 300 * i;
+	        array[i][j] = 900 + 2*i;
 	    }
 	}
-	array[0][size_y - 1] = 50;
-	array[1][size_y - 1] = 50;
-	array[2][size_y - 1] = 50;
-	array[3][size_y - 1] = 50;
+	for (int i = 0; i < size_x; ++i) {
+	    array[i][size_y - 1] = 1;
+	}
 	
     Motion inter0(array, size_x, size_y);
     
@@ -33,6 +33,6 @@
         if (!inter0.is_in_interrupt()) {
             tick.attach(&inter0, &Motion::step, 0.02);
         }
-        wait(0.02);
+        wait(0.05);
     }
 }
\ No newline at end of file