厦门大学摄像头组-至善队-技术报告-2012第七届 - 图文(6)

2019-04-17 15:41

CSN_OUT = 0; // Set CSN low, init SPI tranaction

status = SPI_RW(reg); // Select register to write to and read status byte for(byte_ctr=0;byte_ctr

pBuf[byte_ctr] = SPI_RW(0); // Perform SPI_RW to read byte from nRF24L01 CSN_OUT = 1; // Set CSN high again

return(status); // return nRF24L01 status byte }

//寄存器 批量写 函数

uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bytes) {

uchar status,byte_ctr;

CSN_OUT = 0; // Set CSN low, init SPI tranaction

status = SPI_RW(reg); // Select register to write to and read status byte Delay_us(1);

for(byte_ctr=0; byte_ctr

CSN_OUT = 1; // Set CSN high again

return(status); // return nRF24L01 status byte }

//接收模式

void RX_Mode(void) {

CE_OUT = 0;

SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 接收设备接收通道0使用和发送设备相同的发送地址 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 使能接收通道0自动应答

SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 使能接收通道0

SPI_RW_Reg(WRITE_REG + RF_CH, 40); // 选择射频通道0x40

SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); // 接收通道0选择和发送通道相同有效数据宽度

SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); // 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益

SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // CRC使能,16位CRC校验,上电,接收模式

CE_OUT = 1; // 拉高CE启动接收设备 }

//发送模式

26

//void TX_Mode(uchar * BUF) void TX_Mode() {

CE_OUT = 0;

SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写入发送地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 为了应答接收设备,接收通道0地址和发送地址相同 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 使能接收通道0自动应答

SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 使能接收通道0

SPI_RW_Reg(WRITE_REG + SETUP_AW, 0x03);

SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x0a); // 自动重发延时等待250us+86us,自动重发10次

SPI_RW_Reg(WRITE_REG + RF_CH, 40); // 选择射频通道0x40 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); // 数据传输率2Mbps,发射功率0dBm,低噪声放大器增益

SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // CRC使能,16位CRC校验,上电

// SPI_Write_Buf(WR_TX_PLOAD, BUF, TX_PLOAD_WIDTH); // 写数据包到TX FIFO

CE_OUT = 1; }

void TX_Data(uchar *BUF) {

SPI_Write_Buf(WR_TX_PLOAD, BUF, TX_PLOAD_WIDTH); // 写数据包到TX FIFO //Delay_us(100); // // while(IRQ_IN);

status=SPI_RW_Reg(WRITE_REG+STATUS,0xff); }

while(1) {

PORTD_PCR4 |= PORT_PCR_IRQC(9); //开行中断 while(1) {

27

if( (GPIOC_PDIR&0X10)==0x10) {

if( (system_time > 4000) && ( (GPIOC_PDIR&0X80)==0x80)) //第4个拨码开关 {

check_end_line=1; //开始检测起跑线,终点线 } else {

check_end_line=0; //不用检测起跑线,终点线 End_Flag = 0;//不停车 StartDelay=0; }

if(SPEED_PID_FLAG == 1 && start_flag != 0 ) //等待延时结束和软启动结束信号,启动PID //控制速度

//if(start_flag != 0 ) //等待延时结束和软启动结束信号,启动PID //控制速度 {

if(Rx_stop == 0) {

ZMotorPWM=0; FMotorPWM=0; }

else if(Rx_stop == 2) //退车 { SteerPWM=Center; ZMotorPWM=0; FMotorPWM=1700; }

else if(Rx_stop == 1) {

if( (GPIOC_PDIR&0X80)!=0x80 )//|| system_time < 1600) {

End_Flag = 0; StartDelay=0; StartFlag = 0;

} //清除停车标志,无需停车

if(End_Flag != 0) {

SV_Mc = 0; SV_McN = 0;

28

if(speed > 10) {

if(end_line_stop_delay == 0) {

end_line_stop_delay = system_time; }

if( (end_line_stop_delay != 0) && (system_time - end_line_stop_delay > (260 - speed)/100*10/2) ) {

StopControl_end_line(3 - speed/10); } } else {

STC = 0;

FMotorPWM = 0;//滑行 ZMotorPWM = 0; } } else {

if(speed_class == 1) {

SpeedControl_PID_XLL_ZS1(); }

else if(speed_class == 2) {

SpeedControl_PID_XLL_ZS2(); }

else if(speed_class == 3) {

SpeedControl_PID_XLL_ZS3(); }

else if(speed_class == 4) {

SpeedControl_PID_XLL_ZS4(); }

///////以下的4档带定时 else if(speed_class == 5) {

SpeedControl_PID_XLL_ZS1(); }

29

else if(speed_class == 6) {

SpeedControl_PID_XLL_ZS2(); }

else if(speed_class == 7) {

SpeedControl_PID_XLL_ZS3(); }

else if(speed_class == 8) {

SpeedControl_PID_XLL_ZS4(); } } }

SPEED_PID_FLAG=0; }

Get_Speed_Class(); //读取控制档,控制方案

if(start_flag == 0 && StartFlag == 0) {

if(speed_class <= 4) //前4档(1,2,3,4)无定时 {

GO_GO(); //等待延时结束和软启动结束信号,启动PID } else {

GO_GO_PIT(); //后面4档(5,6,7,8)带定时 } }

if((process_count > save_count) )

//如果处理行大于存储行,就开始提取黑线,因为是倒序存储,所以也要倒序处理:从近处开始存储和处理start_flag=1;&& (start_flag != 0) {

Process();

//light_change(Light_Run_PORT,Light_Run4);//指示灯的亮、暗状态切换 }

30

} else {

Get_Speed_Class(); //读取控制档,控制方案 check_end_line=0;

end_line_stop_delay = 0; End_Flag = 0;//不停车 Rx_stop = 1; StartDelay=0; SaiDaoType = 0; stop_control_flag=0; stop_time=0;

stop_delay_time=0; StartFlag = 0; system_time //系统时间初始化清零,3秒启动 start_flag=0; //回正&停车

SteerPWM=Center; ZMotorPWM=0; FMotorPWM=0; //开始键盘检测 JianPan_Use();

//清楚和初始化变量 Clear_and_Set_Value( );

//uart_speed();//有线串口发送速度值,调PID }

} //while 2

} //while 1 }

31

= 0;


厦门大学摄像头组-至善队-技术报告-2012第七届 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:针对训练4-呼吸作用与光合作用综合曲线题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: