Controlor for Humanoid. Walking trajectory generator, sensor reflection etc.
Dependencies: Adafruit-PWM-Servo-Driver MPU6050 RS300 mbed
Revision 11:1539d181e159, committed 2012-09-22
- 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
--- 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