Widic

    1. soso 发表于 2010-12-10 11:44 嘿嘿 辛苦了 大家有问题欢迎随时提问啊
      你好,问一下有 138的BSL的库说明文档吗?
    2. 旋转倒立摆机械部分问题讨论 36/15000 电子竞赛 2013-09-05
      有人做过两轮平衡小车的应该知道 原理基本一样
    3. 旋转倒立摆机械部分问题讨论 36/15000 电子竞赛 2013-09-05
      PID卡尔曼滤波可以吧
    4. 谢谢,值得关注
    5. 南华大学黄智伟 控制类赛题分析 17/9134 电子竞赛 2013-09-03
      分析地挺好
    6. 四轴飞行器资料 6/2842 微控制器 MCU 2013-08-29
      再给大家一点资料啊,很好的
    7. 四轴飞行器资料 6/2842 微控制器 MCU 2013-08-29
      再分享点资料给大家
    8. 是个好消息吗,四轴飞行器,我们怎么跟北航,西工大比呢
    9. 看2013器件清单所想到的 41/21660 电子竞赛 2013-08-29
      很值得一看
    10. 全国电子设计大赛常用模块设计 134/26490 电子竞赛 2013-08-20
      谢谢,好好看看
    11. 2013年全国大学生电子大赛,我最给力! 120/40551 电子竞赛 2013-07-26
      支持下,今年可以伸展自己的身手了
    12. 好好努力,让此成为人生的一次美好回忆
    13. 5438程序跑飞  进来看一下 5/3255 微控制器 MCU 2013-07-17
      分析了下,真的很麻烦,多个中断向量,嵌套在一块,真的是很危险的事情
    14. 5438程序跑飞  进来看一下 5/3255 微控制器 MCU 2013-07-10
      主程序代码如上,请大家指教一下
    15. 5438程序跑飞  进来看一下 5/3255 微控制器 MCU 2013-07-10
      #include "msp430f5438.h" #include "f5438a_uart.h" #include "speed.h" #include "all_define.h" #include "clock_f5438a.h" #include "get_a.h" #include "TimerB_PWM.h" #include "math.h" #include "lcd1602.h" #include "Balance_Kalman.h" int w_temp,temp1; float w,angle1; float gyro,acc; double ut_temp; int data0_old=0,data0_new,   period0=32767,period0_n=0,   count_ovf0=0; int data1_old=0,data1_new,   period1=32767,period1_n=0,   count_ovf1=0; int n0,n1; unsigned int accx; unsigned char dir0,dir1,f_refresh0=0,f_refresh1=0; double ut,angle_ek,speed,speed_filter=0,position=0; int Kp_angle=400; int Kd_angle=0; int Kp_speed=0; double Ki_speed=0; double Kd_speed=0; char ctr_1602=0,ctr_pos=0; unsigned int temp_pos,ut_temp2; unsigned char f_forward=FALSE,f_backward=FALSE,f_left=FALSE,f_right=FALSE; unsigned char f_menu=FALSE,f_exit=FALSE,f_ok=FALSE; int left_sp,right_sp; void TimerInit_PID( void ); void main(void) {     WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer     TX2_init();     LCD_init();     InitPwm();     TimerInit_PID();     P10DIR = 0xff;     P10OUT = 0xff;     uart_init();     INIT_AD();     InitPo();     InitTimer_speed();     _EINT();     while(1)     {       LCD_write_string(0,0,"Wellcome to DLUT");     } } void TimerInit_PID() {     TA0CCTL0 = CCIE;                          // CCR0 interrupt enabled     TA0CCR0 = 255;     TA0CTL = TASSEL_2 + MC_1 + TACLR;         // ACLK, up to CCR0, clear TAR, 4分频 } #pragma vector = TIMER0_A0_VECTOR __interrupt void PID() {     P10OUT = ~P10OUT;     //acc = get_ax();     //gyro = get_tyro_mv();     acc=acc-1650;     acc=acc/800;//*100 求出多少g     if(acc>1)         acc=1;     else if(acc= 0)//根据输出量正负来切换L298N的转向信号     {         TBCCR1 = 0;         TBCCR2 = left_sp;     }     else     {         left_sp = -left_sp;         TBCCR2 = 0;         TBCCR1 = left_sp;     }     if(right_sp >= 0)     {         TBCCR3 = 0;         TBCCR4 = right_sp;     }     else     {         right_sp = -right_sp;         TBCCR4 = 0;         TBCCR3 = right_sp;     } } #pragma vector=PORT1_VECTOR __interrupt void Port_1(void) {     _DINT();     data0_new = TA1R;     if((P1IN & BIT5)!=0x00) dir0 = NEG;     else dir0 = POS;              if(data0_new1)             period0_n+=(count_ovf0-1)*256;     }     else     {         period0_n=data0_new-data0_old;                     if(count_ovf0>0)             period0_n+=count_ovf0*256;                 }     //if(period1_n-period1-200)     period0=period0_n;     f_refresh0=1;     data0_old=data0_new;     count_ovf0=0;                    P1IFG = 0x00;                          // P1.4 IFG cleared     _EINT(); } #pragma vector=PORT2_VECTOR __interrupt void Port_2(void) {     _DINT();     data1_new = TA1R;     if((P2IN & BIT5)!=0x00) dir1 = NEG;     else dir1 = POS;              if(data1_new1)             period1_n+=(count_ovf1-1)*256;     }     else     {         period1_n=data1_new-data1_old;         if(count_ovf1>0)             period1_n+=count_ovf1*256;                 }     //if(period1_n-period1-200)     period1=period1_n;     f_refresh1=1;     data1_old=data1_new;     count_ovf1=0;        P2IFG = 0x00;                          // P1.4 IFG cleared     _EINT(); } #pragma vector=ADC12_VECTOR __interrupt void ADC12ISR (void) {      static  unsigned int index = 0;   switch(__even_in_range(ADC12IV,34))   {   case  0: break;                           // Vector  0:  No interrupt   case  2: break;                           // Vector  2:  ADC overflow   case  4: break;                           // Vector  4:  ADC timing overflow   case  6: break;                           // Vector  6:  ADC12IFG0   case  8: break;                           // Vector  8:  ADC12IFG1   case 10: break;                           // Vector 10:  ADC12IFG2   case 12:                                  // Vector 12:  ADC12IFG3     A0results[0] = ADC12MEM0;           // Move A0 results, IFG is cleared     //A1results[0] = ADC12MEM1;           // Move A1 results, IFG is cleared     //A2results[0] = ADC12MEM2;           // Move A2 results, IFG is cleared     A3results[0] = ADC12MEM3;           //        //index++;                                // Increment results index, modulo; Set Breakpoint1 here     //if (index == 8)     //index = 0;                                   // Reset index, Set breakpoint 2 here         acc = A0results[0]*3.3/4096*1000;     gyro = A3results[0]*3.3/4096*1000;     ADC12IFG = 0x00;     break;             case 14: break;                           // Vector 14:  ADC12IFG4   case 16: break;                           // Vector 16:  ADC12IFG5   case 18: break;                                // Vector 18:  ADC12IFG6   case 20: break;                           // Vector 20:  ADC12IFG7   case 22: break;                           // Vector 22:  ADC12IFG8   case 24: break;                           // Vector 24:  ADC12IFG9   case 26: break;                           // Vector 26:  ADC12IFG10   case 28: break;                           // Vector 28:  ADC12IFG11   case 30: break;                           // Vector 30:  ADC12IFG12   case 32: break;                           // Vector 32:  ADC12IFG13   case 34: break;                           // Vector 34:  ADC12IFG14   default: break;         }   ADC12IFG = 0x00; } #pragma vector = TIMER1_A0_VECTOR __interrupt void TIMER1_A0_ISR(void) {      // counter = 0;       _DINT();     count_ovf0++;     count_ovf1++;     _EINT(); }
    16. 430 usb仿真器安装不上,win7系统,急急急! 4/2545 微控制器 MCU 2013-04-19
      怎么解决的,现在我的也是这个问题
    17. 我需要zhangfan1515@126.com
    18. 我想要怎么办
    19. G2553 TA0能输出两路PWM波形么?? 36/18362 微控制器 MCU 2013-02-27
      输出模式有问题,你看一下我给的上面的一个PWM循迹的程序试试
    20. G2553 TA0能输出两路PWM波形么?? 36/18362 微控制器 MCU 2013-02-27
      三路PWM确实是有限制的,但 也是可以实现的

最近访客

< 1/1 >

统计信息

已有2383人来访过

  • 芯积分:--
  • 好友:4
  • 主题:18
  • 回复:53

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言