int main(void) { PWM_INIT(0); PWM_INIT(1); PWM_INIT(2); PWM_INIT(3); PWM_INIT(4); PWM_INIT(5); PWM_INIT(6); TCCR0B |= TIMER_NOPRESCALER; TIMSK |= (1<<OCIE0A); sei(); for (;;) { PWM_UPDATE(0); PWM_UPDATE(1); PWM_UPDATE(2); PWM_UPDATE(3); PWM_UPDATE(4); PWM_UPDATE(5); PWM_UPDATE(6); _delay_ms(50); } /* NOTREACHED */ return (0); }
void main(void) { int_clk(); //时钟初始化 P2DIR|=BIT4+BIT5; //陀螺仪I2C端口初始化 MPU6050_INIT(); Bluth_UART_Init(); //蓝牙串口 while(!Pid_Set_OK);//等待设置PID PWM_INIT(); //四路PWM初始化 TIMEA1_INIT(); //PID控制5MS中断初始化 中断初始化必须在 ESP模块后面 因为代码中嵌套了对串口中断的使用 // HC_RS04_Init(); // TIMEA2_INIT(); while(1) { // HC_RS04_Send(); // delay_ms(100); dmp_read_fifo(gyro, accel, quad, &sensor_timestamp, &sensors, &more); //读取角速度角速度四元数 经过测试发现该函数执行的时间竟然是不确定的,不适合放在中断, } }
void main(void) { DisableInterrupts; //MCU初始化 PLL_INIT(); PIT_INIT(); PWM_INIT(); AD_INIT(); IO_INIT(); SCI_INIT(); //LCD_Init(); DFLASH_INIT(); EnableInterrupts; for(;;) { if(PORTB_PB0==0) { AD_biaoding(); } else if(PORTB_PB2==0) { stop_flag=0; /* LCD_P6x8Str(0,0,"Angle:"); /*LCD_P6x8Str(0,0,"Angle:"); LCD_P6x8Str(0,0,"Gravity_Offset"); LCD_P6x8Str(0,1,"Anglespeed:"); LCD_P6x8Str(67,1,"Gyrscope_Offset"); LCD_P6x8Str(0,2,"Anglespeed:"); LCD_P6x8Str(66,2,"123"); LCD_P6x8Str(0,3,"Kp:"); LCD_P6x8Str(18,3,"123"); LCD_P6x8Str(0,4,"Kd:"); LCD_P6x8Str(18,4,"123");*/ } else if(PORTB_PB3==0) { SCI_senddata(); Senddata[0]=AngleResult[0]; Senddata[1]=AngleResult[1]; Senddata[2]=AngleResult[3];//右轮 Senddata[3]=Adcalcalation[0];//左轮 Senddata[4]=Adcalcalation[2];//AngleResult[3];//Turnstand[0]; Senddata[5]=Adcalcalation[4];//Turnstand[1]; Senddata[6]=0; } else if(PORTB_PB4==0) { AD_Max[0][0]=Dflash_Read(data_Address); AD_Max[0][1]=Dflash_Read(data_Address+2); AD_Max[0][2]=Dflash_Read(data_Address+4); AD_Max[1][0]=Dflash_Read(data_Address+6); AD_Max[1][1]=Dflash_Read(data_Address+8); AD_Max[1][2]=Dflash_Read(data_Address+10); AD_Max[2][0]=Dflash_Read(data_Address+12); AD_Max[2][1]=Dflash_Read(data_Address+14); AD_Max[2][2]=Dflash_Read(data_Address+16); AD_Cal[1][0]=AD_Max[1][1]; AD_Cal[1][1]=(AD_Max[0][1]+AD_Max[2][1])/2; } /*if(AD_flag==1) { Adget(); AD_flag=0; } else if(Speed_flag==1) { SpeedCalculate(); Speed_flag=0; } else if(Angle_flag==1) { GetAngle(AngleResult); AngleControl(); Angle_flag=0; } /*else if(SCI_flag==10) { SCI_senddata(); SCI_flag=0; } */ _FEED_COP(); } }