亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? freescale-smartcar.txt

?? 飛思卡爾杯汽車邀請賽北理傲雄車隊技術報告
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
附錄A  模型車控制主程序代碼
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dp512.h>     /* derivative information */
#include "STDINC.h"
#include "stdlib.h"
#include "sci.h"
#pragma LINK_INFO DERIVATIVE "mc9s12dp512"
//////////////////////////參數設定//////////////////////
//舵機直行的PWM--2400
//馬達60%--1200
#define OK 1
#define WRONG 0
const int16 RUDKP=33;//50;
const int16 RUDKD=5;//5;
const float MOTKP=0.005263;
const float MOTKI=0.005263;
const float MOTKD=0.005263;

const float CONSTANT1=136;
const float CONSTANT2=5;
const float CONSTANT3=4;
const float CONSTANT4=3;
int16 RErrLast=0;
int16 RErrCurr=0;
int16 RErrPreLast=0;
int16 Ruddelta=0;
int16 RudPWM;
int16 SenFlg=0;

int16 SpeedCurr=0;
int16 SpeedLast=0;
int16 Speed=0;
double SpeedFreq=0; 

int16 Motdelta=0;
int16 MotPWM=1000;
int16 SErrLast=0;
int16 SErrCurr=0;
int16 SErrPreLast=0;
int16 MotDD=0;
/////////////////速度參數///////////////////////////
 float Pdelta[4]={0.94,0.82,0.52,0.65};
 float Ddelta[4]={0.4,0.2,0.21,0};
int16 Vline=3040;
int16 Vscor=2565;
int16 Vlcor=2280;
int16 Vbrek=2375;
int16 Vsbrk=1330;
int16 Vstri=2600;
//Global variables
int16 SenCurBacW,SenLasBacW;
int16 TarSpeed,LastTarSpeed;
float Modulus,TarSpeedF;
int16 TarFlg=0;
uint8 sensorA=0,sensorB=0;
uint8 SensorA=0,SensorB=0;   
int16 Sensor;      
uint16 CounterCurr,CounterLast,Counter;
int16 tmpflg;
int16 look;
int16 LapFlg1=0;
int16 LapFlg2=0;
int16 Flag=0;
int16 temp=0;
int16 LapNum=0;
int16 LNum=0;
int16 FLAG=0;
int16 LFlg=0;
int16 delay1=0;
int16 StopFlg=0,StopNum=0;

int16 j=0;
int16 tmp[39]={0};
int16 num=39;
int16 s1,s2,s3;
int16 Tar,cnt1,cnt2,cnt3,cnt4,cnt5;                
int16 flag4;


//////////////////////////函數聲明//////////////////////
void atd_init(void);
void motor_ctrl(void);
void readsensor(void);
void target_speed(void);
void readspeed(void);
void rudder_ctrl(void);
int8 path_recog(void);
void sort(void);
void startline(void)
////////////////////////中斷函數/////////////////
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void readsensor(void){
 DisableInterrupts;
 sensorA=PTM;           
 sensorB=PORTB;            
 
 sensorA=sensorA&0x3F;   //clean unwanted bit
 sensorB=sensorB&0x3F;    
 
 Flag=0; 

 if(LFlg==1)
 {
 delay1++;
 if(delay1>=5) 
 {
 LFlg=0;
 delay1=0;
 }
 }
 else startline();
 
 if(StopFlg==1)
 {
 StopNum++;
 }

 TarFlg++;
 if(LapNum>2) {
 PWMDTY45=1000;
 }
 PWMDTY01=1500;
 MCCNT=20000;         
 MCFLG_MCZF=1;
 EnableInterrupts;
}
uint16 plsnum=0;
#pragma CODE_SEG __NEAR_SEG NON_BANKED
 interrupt void readspeed(void){
  TFLG1_C3F=1;
  //CounterLast=CounterCurr;
  CounterCurr=TC3;
  CounterLast=TC3H;
  switch(TFLG2_TOF) 
  {
    case 0:Counter=CounterCurr-CounterLast;
           break;
    case 1:Counter=65535-CounterLast+CounterCurr;
           TFLG2_TOF=1;
           break;
  }
  if(Counter<16)
  {                                          
     Counter=16;
  }
  Speed = 1000000/Counter;//190;//((float)Speed*3/4+(float)SpeedFreq/4);         
  
 if(LapNum==1)
 {
  plsnum++;
 }
  if(LapNum>1) 
 {
  StopFlg=1;
  if(StopNum>100) 
  {
    PWMDTY45=1000;
  }
 }
 else 
 motor_ctrl();
 //FLAG++;
 }                                                       
 
////////////////////////函數定義//////////////////////////////////

void pwm_init(void){
 PWMPOL = 0xFF;   //polarity,high at the beginning;
 PWMCLK = 0x2A;   //select SA/SB as the pwmclk;SA clock for STEER;SB clock for MOTOR;
 PWMPRCLK = 0x11; //A=bus clock/2=16MHz,B=bus clock/2=16MHz;
 PWMCAE = 0x00;   //PWM flush left
 PWMSCLA = 0x01;  //SA=A/2;PWM clock=bus clock/2/2/1=8MHz
 PWMSCLB = 0x05;  //SB=B/1;PWM clock=bus clock/2/2/5=1.6MHz
 PWMCTL = 0xF0;   //concatenate 0&1,2&3;

 PWMPER45 = 2000;  //output frequency=SA clock/2000=4KHz;for MOTOR using
 PWMDTY45 = 1000;  //PWM percent is 65%; 

 PWMPER23 = 16000;    //output frequency=SB clock/16000=100Hz;for RUDDER using
 PWMDTY23 = 2400;     //PWM percent is 15%  down--LEFT
 
 PWME=0x2A;
}
void ect_init(void) {

 MCCTL=0xC2;         //MCZI MODMC RDMCL ICLAT FLMC MCEN MCPR1 MCPR0=11000010B  clock=Fbus/8
 MCCNT=20000;         //5ms every interrupt
 MCFLG=0x80;         //set underflow flag
 //////////////////////////////PACA_init//////////////////////////////////////
  TIOS=0X00;             //input capture selection,channal 6: output compare channal;
  TCTL3=0X01;
  TCTL4=0X40;                 //capture on the rasing edge;
  TIE=0X18;                     //enable interrupt when captured;       
  TSCR2=0X05;                //bit7:overflow interrupt disable,bit[2:0]:timer=bus clock/32=1MHz
  ICOVW=0X00;               //overwrite by the new data;
  ICSYS=0X02;              //queue mode;
  TSCR1=0x80;              //enable the timer;
  MCCTL_MCEN=1; 
}
//////////////////////////////sci_init/////////////////////////////////
void SciInt(void){
   
  SCI0BDL=0xD0; //總線為32M,波特率為9600
  SCI0CR2=0X2C; //允許中斷,允許發送,允許接受
       
   }
   
void SCI_Trans(byte data) {
  while (!SCI0SR1_TDRE);//SC0DR處于忙狀態,等待。
  SCI0DRL=data;
}
void systemboot(void) {
 SYNR = 7;      //Fbus=Fosc*(SYNR+1)/(REFDV+1)=32MHz
 REFDV = 3;
 PLLCTL = 0x71;
 while(CRGFLG_LOCK==0){}
 CLKSEL = 0x80;

 DDRA = 0xFF;     //PortA is input
 PORTA=0x00;        //clean PortA
 DDRB = 0x00;     //PortB is input
 PORTB=0x00;        //clean PortB
 PORTK= 0x00;
 DDRK = 0x00;
 PTM  = 0x00;
 DDRM = 0x00;
 pwm_init();
 ect_init();
 SciInt();
 //////////////////////////////////////////
 if(PORTK_BIT0==1&&PORTK_BIT1==0)
 {
  Vline=2755;
  Vscor=2375;
  Vlcor=2280;
  Vbrek=2185;     //可嘗試變更2090-2185
  Vsbrk=1330;     
  Vstri=2400;
  Pdelta[0]=0.72;
  Pdelta[1]=0.77;
  Pdelta[2]=0.83;
  Ddelta[0]=0.4;
  Ddelta[1]=0.2;
  Ddelta[2]=0.21;
 } 
 else if(PORTK_BIT0==0&&PORTK_BIT1==1)
 {
  Vline=3135;
  Vscor=2660;
  Vlcor=2375;
  Vbrek=2440;     //可嘗試變更2090-2185
  Vsbrk=1330;     
  Vstri=2700;
  Pdelta[0]=0.67;
  Pdelta[1]=0.72;
  Pdelta[2]=0.77;
  Ddelta[0]=0.4;                            
  Ddelta[1]=0.2;
  Ddelta[2]=0.21;
 } 
 else if(PORTK_BIT0==1&&PORTK_BIT1==1)
 {
  Vline=2565;
  Vscor=2280;
  Vlcor=2185;
  Vbrek=2185;     //可嘗試變更2090-2185
  Vsbrk=1330;     
  Vstri=2300;
  Pdelta[0]=0.67;
  Pdelta[1]=0.72;
  Pdelta[2]=0.77;
  Ddelta[0]=0.4;
  Ddelta[1]=0.2;
  Ddelta[2]=0.21;
 }
 if(PORTK_BIT2==1){Vscor=Vscor+95;Vstri=Vstri+95;}
 if(PORTK_BIT3==1){Vscor=Vscor+190;Vstri=Vstri+190;}
 if(PORTK_BIT4==1){Vlcor=Vlcor+95;}
 if(PORTK_BIT5==1){Vlcor=Vlcor+190;}
 if(PORTK_BIT7==1){Vline=Vline+95;}
 if(PORTB_BIT7==1){Vline=Vline+190;}
}
#pragma CODE_SEG DEFAULT

void main(void) {
  /* put your own code here */
  DisableInterrupts;
  systemboot();
  asm{ 
      nop;
     }
  EnableInterrupts;

  for(;;) {
     
  path_recog();
  sort();
  rudder_ctrl();

  } /* wait forever */
  /* please make sure that you never leave this function */
}
/////////////////MAIN END//////////////
/////////////////PATH RECOGNISE////////
int8 path_recog(void){
  int16 i;
  int16 sen_num=-6;  
  int16 sen_cnt=0;    
  int16 sen_pos[12];   
  uint8 mask;
  tmpflg=0;
  
  mask=0x20;		
  for(i=-10;i<=0;i+=2) 
  {
    if((mask&SensorA)==0) 
    {
       tmpflg+=i;
       sen_pos[sen_cnt]=sen_num;
       sen_cnt++;  
    }
    sen_num++;
    mask>>1;
  }
  
  mask=0x01;		
  for(i=0;i<=10;i+=2) 
  {
    if((mask&SensorB)==0) 
    {
       tmpflg+=i;//tmpflg=tmpflg+i-1;
       sen_pos[sen_cnt]=sen_num;
       sen_cnt++;  
    }
    sen_num++;
    mask<<1;
}
  if(sen_cnt==0) 
  {
    if(Sensor>=8)                 
		{	 	    
			Sensor=10; PWMDTY23=2160;
			if(MotPWM<=1370) PWMDTY01=1370;
			else PWMDTY01=MotPWM-30; 
			Flag=1;
		} 
		else if(Sensor<=-8)
		{
			Sensor=-10; PWMDTY23=2640;
			if(MotPWM<=1370) PWMDTY01=1370;
			else PWMDTY01=MotPWM-30; 
			Flag=1;
		} return 0;
  }
   if(sen_cnt==1);
  else for(i=1;i<sen_cnt;i++)          
  {
   if(sen_pos[i]-sen_pos[i-1]>=2) 
   {
    return 0;
   }
  }        
   look=tmpflg;
   Sensor=tmpflg/sen_cnt;
   return 0;
 }
 void startline(void){

  if(       ((sensorA & 0x30)==0x00||(sensorA & 0x18)==0x00)
         // ((sensorB & 0x30)==0x00||(sensorB & 0x18)==0x00)
         && ((sensorA & 0x03)==0x03||(sensorB & 0x03)==0x03)
         && ((sensorA & 0x06)!=0x00||(sensorB & 0x06)!=0x00)) 
         {
          //LapNum++;
          LapFlg1=1;
          FLAG=1;
          LNum=0;
         }
  if(    // ((sensorA & 0x30)==0x00||(sensorA & 0x18)==0x00)
            ((sensorB & 0x30)==0x00||(sensorB & 0x18)==0x00)
         && ((sensorA & 0x03)==0x03||(sensorB & 0x03)==0x03)
         && ((sensorA & 0x06)!=0x00||(sensorB & 0x06)!=0x00)) 
         {
          LapFlg2=1;
          FLAG=1;
          LNum=0;
         }
         
  if(LapFlg1==1&&FLAG==1)     
   {
    if(LapFlg2==1) 
    {
      LapNum++;
      LapFlg1=0;
      LapFlg2=0;
      FLAG=0;
      LNum=0;
      LFlg=1;
    }
   } 
if(LapFlg2==1&&FLAG==1)     
   {
    if(LapFlg1==1) 
    {
      LapNum++;
      LapFlg2=0;
      LapFlg1=0;
      FLAG=0;
      LNum=0;
    }
   }
 }
 ////////////////Delta Kp///////////////

 ////////////////RUDDER CONTRAL/////////
 void rudder_ctrl(void){
  float Kp,Kd;
  if(Sensor>=8||Sensor<=-8) temp=0;
  else if(Sensor>4||Sensor<-4) temp=1;
            else temp=2;
  RErrLast=RErrCurr;
  RErrCurr=Sensor;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品入口麻豆九色| 欧美一区二区三区播放老司机| 337p粉嫩大胆噜噜噜噜噜91av | 91蜜桃免费观看视频| 丝袜亚洲另类丝袜在线| 欧美性色欧美a在线播放| 亚洲一级电影视频| 欧美人伦禁忌dvd放荡欲情| 水蜜桃久久夜色精品一区的特点| 91精品国产综合久久久久久久久久 | 天堂影院一区二区| 日韩精品一区二区三区视频播放| 韩国女主播一区| 国产精品麻豆欧美日韩ww| 972aa.com艺术欧美| 亚洲图片一区二区| 26uuu国产一区二区三区| 国产福利一区二区三区视频| 国产精品久99| 欧美日韩色一区| 国产制服丝袜一区| 日韩毛片一二三区| 尤物在线观看一区| 91麻豆精品91久久久久同性| 国产成人精品免费| 亚洲国产视频a| 久久色视频免费观看| 91伊人久久大香线蕉| 免费的成人av| 亚洲天堂av一区| 欧美一二区视频| 成人av动漫网站| 日韩电影在线观看电影| 国产精品久久久久久久久快鸭| 色网综合在线观看| 国产伦精品一区二区三区免费 | 韩国中文字幕2020精品| 亚洲另类中文字| 精品久久久三级丝袜| 成人精品高清在线| 免费精品视频在线| 国产精品福利av| 日韩欧美中文字幕精品| 91视频国产资源| 国产一区二区三区香蕉| 亚洲国产综合91精品麻豆| 国产三级欧美三级日产三级99| 国产日韩欧美亚洲| 欧美丰满一区二区免费视频| 成人黄色av电影| 久久福利资源站| 视频一区视频二区中文| 亚洲另类春色校园小说| 欧美韩国日本不卡| 日韩手机在线导航| 欧美三级中文字幕在线观看| 成人激情免费视频| 黄网站免费久久| 日本午夜精品一区二区三区电影 | 亚洲精品一区二区三区福利| 欧美四级电影在线观看| 91免费视频网| 成人高清视频在线观看| 国产呦精品一区二区三区网站| 日韩精品免费视频人成| 亚洲一区av在线| 亚洲欧美日韩中文字幕一区二区三区 | 欧美刺激午夜性久久久久久久| 欧美体内she精高潮| 色天天综合色天天久久| 91尤物视频在线观看| 成人美女在线视频| 成人精品电影在线观看| 制服丝袜日韩国产| 欧美精品tushy高清| 欧美色网站导航| 欧美在线观看一区| 一本色道久久综合亚洲91 | 日本高清不卡在线观看| 91香蕉国产在线观看软件| av一区二区三区黑人| 成人av免费观看| 91丨九色丨尤物| 91丨国产丨九色丨pron| 色激情天天射综合网| 91论坛在线播放| 在线视频综合导航| 欧美色国产精品| 欧美精品久久一区| 欧美成人a视频| 精品91自产拍在线观看一区| 久久综合久久鬼色| 中文字幕av在线一区二区三区| 国产精品传媒视频| 亚洲综合色丁香婷婷六月图片| 一区二区三区中文字幕精品精品 | 蜜臀精品久久久久久蜜臀 | 中文字幕精品综合| 99久久伊人精品| 91精品91久久久中77777| 欧美三级在线播放| 日韩欧美成人一区| 国产日产欧美一区二区三区| 自拍偷拍欧美激情| 日韩精品久久久久久| 国产精品伊人色| 色综合av在线| 日韩欧美一区中文| 国产精品国产馆在线真实露脸| 亚洲女爱视频在线| 奇米在线7777在线精品| 久久精品国产精品亚洲红杏| 国产a区久久久| 欧美在线观看一区二区| 久久综合久久久久88| 亚洲欧美电影院| 久久成人18免费观看| 91亚洲大成网污www| 一区二区三区蜜桃| 国产精品国产成人国产三级| 亚洲欧美国产毛片在线| 美脚の诱脚舐め脚责91| www.一区二区| 欧美一级高清大全免费观看| 中文字幕第一区第二区| 视频一区视频二区在线观看| 国产精品66部| 777久久久精品| 国产精品美女一区二区三区 | 精品久久久久久久久久久院品网| 欧美韩日一区二区三区四区| 午夜不卡av免费| av网站免费线看精品| 欧美xxxx老人做受| 一区二区三区四区在线播放| 国产精品538一区二区在线| 欧美日韩国产精品成人| 亚洲国产精品传媒在线观看| 免费在线看一区| 99久久精品国产麻豆演员表| 欧美成人bangbros| 亚洲三级电影全部在线观看高清| 亚洲一区二区三区在线播放| 国产精品亚洲一区二区三区在线| 91国内精品野花午夜精品| 久久久久久久综合色一本| 婷婷国产在线综合| 91福利社在线观看| 国产精品三级久久久久三级| 韩国视频一区二区| 91精品国产全国免费观看| 一区二区三区四区蜜桃| bt7086福利一区国产| 欧美激情在线免费观看| 国产精品一区在线观看乱码| 精品久久人人做人人爱| 蜜桃一区二区三区在线| 欧美男生操女生| 午夜精品一区二区三区三上悠亚| 色综合婷婷久久| 亚洲女爱视频在线| 9久草视频在线视频精品| 国产精品女主播av| 国产91精品欧美| 欧美激情在线免费观看| 国产丶欧美丶日本不卡视频| 久久老女人爱爱| 国产成人午夜片在线观看高清观看| 久久综合国产精品| 国产成人精品三级麻豆| 欧美精品一区男女天堂| 午夜精品福利久久久| 欧美综合在线视频| 亚洲综合图片区| 欧美亚洲国产一区二区三区va| 一二三区精品福利视频| 欧美三级电影在线看| 亚洲成va人在线观看| 欧美日本一道本| 日产国产高清一区二区三区| 欧美成人官网二区| 国产成人免费在线观看不卡| 国产精品久久久久久久久晋中| 成人av在线资源网| 一区二区视频在线看| 欧美日韩国产另类一区| 日韩国产欧美三级| 久久夜色精品国产噜噜av | 日韩毛片在线免费观看| 欧美中文字幕一二三区视频| 天堂成人免费av电影一区| 亚洲精品在线观看网站| 国产成人av网站| 亚洲人快播电影网| 在线播放/欧美激情| 麻豆91在线观看| 欧美激情一区二区三区不卡| 亚洲国产精品天堂| 日韩欧美一卡二卡| 国产不卡一区视频|