robocon_2016
/
2016_slave_servo
servo_/30
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "i2cslave.h" 00003 #include "define.h" 00004 00005 char Registar[128]= {}; 00006 void check(); 00007 00008 int main() 00009 { 00010 PwmOut Servos[4] = { PwmOut(dp24), PwmOut(dp1), PwmOut(dp2), PwmOut(dp18) }; 00011 char servodata[4] = {}; 00012 for(int i = 0; i < 4; i++) 00013 { 00014 Servos[i] = 0; 00015 } 00016 NVIC_SetPriority(TIMER_16_0_IRQn, 20); 00017 NVIC_SetPriority(TIMER_16_1_IRQn, 20); 00018 NVIC_SetPriority(TIMER_32_0_IRQn, 20); 00019 NVIC_SetPriority(TIMER_32_1_IRQn, 20); 00020 NVIC_SetPriority(I2C_IRQn, 10); 00021 i2cslave i2c(dp5, dp27, Registar); 00022 /*change address every micon***********/ 00023 i2c.address(SERVO1_addr); 00024 /**************************************/ 00025 i2c.frequency(1000000); 00026 Ticker tic; 00027 tic.attach(check, 0.1); 00028 while(1) 00029 { 00030 for(int i = 0; i < 4; i++) 00031 { 00032 servodata[i] = (Registar[motor1_state] >> i) & 1; 00033 if(servodata[i]) 00034 { 00035 Servos[i].pulsewidth(0.0010); 00036 } 00037 else 00038 { 00039 Servos[i].pulsewidth(0.0006); 00040 } 00041 wait_ms(60); 00042 } 00043 } 00044 } 00045 00046 void check() 00047 { 00048 Registar[check_reg]++; 00049 if(Registar[check_reg] > 2) 00050 { 00051 NVIC_SystemReset(); 00052 } 00053 }
Generated on Tue Jul 19 2022 15:03:08 by 1.7.2