servo_/30

Dependencies:   i2cslave mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }