找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 9687|回復(fù): 7
上一主題 下一主題
收起左側(cè)

一個(gè)很好的舵機(jī)上位機(jī)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
調(diào)試程序可以用到


    程序名稱: 飛思卡爾智能車舵機(jī)調(diào)試工具 v1.1   
    程序作者: LinX
    時(shí)    間: 2009-03-07
    聯(lián)系方式: Q Q : 408111919
              Email: linhaiwz@163.com" & vbCrLf & vbCrLf & _
〖 本程序?yàn)榉奖愣鏅C(jī)調(diào)試而編寫,錯(cuò)誤在所難免,如有建議歡迎和我聯(lián)系! 〗




角度轉(zhuǎn)換為高電平時(shí)間

角度         -45       0     45   (anger/度)
高電平時(shí)間   1000    1500   2000   (t/us)
計(jì)算公式為:T = 1000 + (anger + 45) * (1000 / 90)


該程序可以通過(guò)串口與單片機(jī)進(jìn)行通訊,實(shí)時(shí)改變舵機(jī)的角度。
通訊協(xié)議為:0xfe 0xMM 0xNN (其中0xfe為包頭,0xMM為PWMDTYx高8位,0xN為PWMDTYx低8位)
在串口中斷中分三次接收,在第二次接收時(shí)保存數(shù)據(jù)到temp0中,在第三次接收到數(shù)據(jù)時(shí)將PWMDTY01= ((unsigned int)temp0 <<8) | RxData 就可以完成PWM改變輸出了。




下位機(jī)程序如下:

#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

unsigned char RX=0,temp0;


void uart_putchar(unsigned char ch)
{
  if (ch == '\n')  
  {
      while(!(SCI0SR1&0x80)) ;     
      SCI0DRL= 0x0d;            
     return;
  }
  while(!(SCI0SR1&0x80)) ;      
  SCI0DRL=ch;
}

static void PWM_Init(void)
{     
    //SB,B for ch2367
    //SA,A for ch0145   
      
    PWMCTL_CON01=1;          //0和1聯(lián)合成16位PWM;
    PWMCAE_CAE1=0;            //選擇輸出模式為左對(duì)齊輸出模式
    PWMCNT01 = 0;                //計(jì)數(shù)器清零;
    PWMPOL_PPOL1=1;            //先輸出高電平,計(jì)數(shù)到DTY時(shí),反轉(zhuǎn)電平
    PWMPRCLK = 0X40;    //clockA不分頻,clockA=busclock=16MHz;CLK B 16分頻:1Mhz   
    PWMSCLA = 8;        //對(duì)clock SA 進(jìn)行2*8=16分頻;pwm clock=clockA/16=1MHz;     
    PWMCLK_PCLK1 = 1;   //選擇clock SA做時(shí)鐘源
    PWMPER01  =  20000;   //周期20ms; 50Hz;(可以使用的范圍:50-200hz)
    PWMDTY01  =  1500;   //高電平時(shí)間為1.5ms;  
    PWME_PWME1 = 1;        
}

void setbusclock(void)   //PLL setting
{   
    CLKSEL=0X00;    //disengage PLL to system
    PLLCTL_PLLON=1;   //turn on PLL
    SYNR=1;         
    REFDV=1;          //pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;
    _asm(nop);          //BUS CLOCK=16M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system;
}

static void SCI_Init(void)  //SCI
{
    SCI0CR1=0x00;
    SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enable
    SCI0BDH=0x00; //busclk  8MHz,19200bps,SCI0BDL=0x1a
    SCI0BDL=0x68; //SCI0BDL=busclk/(16*SCI0BDL)                  
                  //busclk 16MHz, 9600bps,SCI0BDL=0x68                  
}

interrupt 20 void SCI_Rx_IRS(void)    //中斷接收
{
    unsigned char  RxData;
    DisableInterrupts;
    if  (SCI0SR1&0x20)
    {
        
       RxData = SCI0DRL;  
         
       switch(RX)
       {
          case 0:
            if (RxData==0xfe) RX=1;
            break;
          case 1:
            temp0 = RxData;
            RX=2;
            break;
          case 2:
             PWMDTY01= ((unsigned int)temp0 <<8) | RxData;
             PORTB=~PORTB;
             RX=0;
             break;           
       }
        uart_putchar(RxData);
    }   
    EnableInterrupts;      
}

void main(void)
{
  EnableInterrupts;
  setbusclock();
  SCI_Init();
  PWM_Init();
  DDRB=0xff;
  for(;;)   {
  }
}

舵機(jī)調(diào)試工具.rar

268.83 KB, 下載次數(shù): 69, 下載積分: 黑幣 -5

舵機(jī)調(diào)試

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂1 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:168250 發(fā)表于 2017-4-12 19:16 | 只看該作者
此帖僅作者可見

使用道具 舉報(bào)

板凳
ID:188466 發(fā)表于 2017-4-12 19:18 | 只看該作者
此帖僅作者可見

使用道具 舉報(bào)

地板
ID:284099 發(fā)表于 2018-2-14 18:06 | 只看該作者
此帖僅作者可見

使用道具 舉報(bào)

5#
ID:284099 發(fā)表于 2018-2-14 18:47 | 只看該作者
此帖僅作者可見

使用道具 舉報(bào)

6#
ID:199245 發(fā)表于 2018-3-13 20:47 | 只看該作者
此帖僅作者可見

使用道具 舉報(bào)

7#
ID:345583 發(fā)表于 2018-8-20 16:03 | 只看該作者
此帖僅作者可見

使用道具 舉報(bào)

8#
ID:105688 發(fā)表于 2018-10-1 11:59 來(lái)自手機(jī) | 只看該作者
此帖僅作者可見

使用道具 舉報(bào)

9#
ID:451178 發(fā)表于 2019-4-24 15:57
此帖僅作者可見

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表