Exemplo n.º 1
0
int main() {

	ADC_Init();

	uint16_t delay = 512;

	DDRB = 0b11111011;
	DDRC = 0b11011111;
	DDRD = 0b00000000;

	for(;;) {
		ADC_start(5);

		PORTB = 0xff;
		PORTC = 0b11011111;
		PORTD = 0xff;
		
		mydelay(1024-delay);
		
		PORTB = 0x00;
		PORTC = 0x00;
		PORTD = 0x00;

		mydelay(delay);

		delay = lookup[ADC_result()/3];
	}
}
Exemplo n.º 2
0
void led_test()
{
	led_init();

	while(1){
		led_blink(1);
		mydelay();
		led_blink(0);
		mydelay();
	}
	
}
Exemplo n.º 3
0
void interface::on_btnIgnGet_clicked()
{
    int i=0,j=0;

    ui->txtCommData->clear();

    for(i=0;i<cdata;i++){
        for(j=0;j<cdata;j++){

            ui->tblIgn->setCurrentCell(i,j);

            ui->txtCommData->clear();
            data_target=IGNRead_target;

            QByteArray dataIgn="read_ign";
            dataIgn+= " ";

            dataIgn+= QString::number(i).toUtf8();
            dataIgn+= " ";

            dataIgn+= QString::number(j).toUtf8();
            dataIgn+= "\n";

            my_port->write(dataIgn);
            waitComm=1;

            while(waitComm==1){mydelay(100);}
        }
    }
    QMessageBox::information(this,"Success","Ignition Table loaded Successfully");
}
Exemplo n.º 4
0
/*****************************************************************
功能:把配置FPGA用到的5个信号线进行初始化
输入:无
输出:无
返回:无
硬件介绍:
GPIO0	FPGA_DIN			FPGA 加载
GPIO1	FPGA_DONE
GPIO2	FPGA_CLK
GPIO3	FPGA_INIT
 *****************************************************************/
LOCAL VOID InitFpgaPin_ALTERA()
{
    DWORD reg;
    /*对G4的5个IO脚进行初始化*/	
    /*把FPGA_DIN和FPGA_CCLK 和FPGA_PROG设置输出*/
    
    BSP_AT91F_OR_PIO_CfgOutput(BSP_PIOB,FPGA_DIN_ALTERA);
    BSP_AT91F_OR_PIO_CfgOutput(BSP_PIOB,FPGA_CLK_ALTERA);    
    BSP_AT91F_OR_PIO_CfgOutput(BSP_PIOB,FPGA_PROG_ALTERA);    
    BSP_AT91F_OR_PIO_CfgOutput(BSP_PIOC,FPGA_RESET);    	
    /*把FPGA_INIT和FPGA_DONE设置输入*/
    BSP_AT91F_OR_PIO_CfgOutput(BSP_PIOB,FPGA_BUS_ENABLE); 
    BSP_AT91F_OR_PIO_CfgInput(BSP_PIOB,FPGA_DONE_ALTERA);
    BSP_AT91F_OR_PIO_CfgInput(BSP_PIOB,FPGA_INIT_ALTERA);
    /*输出脚初始值置为0*/
    /*BSP_AT91F_OR_PIO_SetOutput(BSP_PIOB,FPGA_BUS_ENABLE);*/
    BSP_AT91F_OR_PIO_SetOutput(BSP_PIOB,FPGA_PROG_ALTERA);

    BSP_AT91F_OR_PIO_SetOutput(BSP_PIOC,FPGA_RESET);
	
    BSP_AT91F_OR_PIO_ClearOutput(BSP_PIOB,FPGA_DIN_ALTERA);
    BSP_AT91F_OR_PIO_ClearOutput(BSP_PIOB,FPGA_CLK_ALTERA);
    mydelay();

}
Exemplo n.º 5
0
//外部中断 2 服务程序 KEY3 = PE2
void EXTI2_IRQHandler(void)
{ 
	mydelay(10); //消抖
	if(2==button_read()) 
	{  
		led_on(LED2); //LED2 亮
	} 
	EXTI_ClearITPendingBit(EXTI_Line2);//清除 LINE2 上的中断标志位 
}
Exemplo n.º 6
0
//PIN6外部中断 9_5 服务程序  KEY4 = PD6
void EXTI9_5_IRQHandler(void)
{ 
	mydelay(10); //消抖
	if(1==button_read()) 
	{ 
		led_on(LED1); //LED1 亮
	} 
	EXTI_ClearITPendingBit(EXTI_Line6); //清除 LINE0 上的中断标志位 
}
Exemplo n.º 7
0
u8 Spi_Write_Packet(unsigned char *Tx_buffer,unsigned char size,unsigned char  id)
{
    u16 send_ok=1;//i,
    //添加关GDO0中断函数
    //  RFC1100AON();                                  //功率开
    Spi_Write_Strobe(CC_SFTX);                  //清缓冲区
    Spi_Write_Strobe(CC_SIDLE);                 //进入空闲
    //Spi_Write_Strobe(CC_STX);                   //进入接收模式
    Spi_Write_Byte(CC_TXFIFO,size+1);             //先送长度
    Spi_Write_Byte(CC_TXFIFO,0x02);
    Spi_Write_Burst(CC_TXFIFO,Tx_buffer,size);  //发送数据
    Spi_Write_Strobe(CC_STX);                   //发送模式
    // i = 0;
    while (GDO0_L)    ;                          //等待送出
#if 0
    {
        if (i > 50000)
        {
            send_ok=0;
            break;                        //限时等待
        }
        mydelay(1);
        i++;                                      //
    }
    i = 0;
#endif
    while (GDO0_H)        ;                      //送出完毕
#if 0
    {
        if (i > 50000)
        {
            send_ok=0;
            break;                        //限时等待
        }
        mydelay(1);
        i++;                                      //
    }
#endif
    Spi_Write_Strobe(CC_SFTX);                  //清缓冲区
    Spi_Write_Strobe(CC_SIDLE);                 //进入空闲
    Spi_Write_Strobe(CC_SRX);                   //进入接收模式
    //  RFC1100AOFF();
    return send_ok;
}
Exemplo n.º 8
0
//外部中断 3 服务程序  KEY2 = PE3
void EXTI3_IRQHandler(void)
{ 
	mydelay(10); //消抖
	if(4==button_read()) 
	{ 
		led_on(LED1);		//LED1 亮
		led_on(LED2);		//LED2 亮
	} 
	EXTI_ClearITPendingBit(EXTI_Line3);   //清除 LINE3 上的中断标志位 
}
Exemplo n.º 9
0
//外部中断 4 服务程序  KEY1= PE4
void EXTI4_IRQHandler(void)
{
	mydelay(10); //消抖
	
	if(8==button_read()) 
	{  
		led_off(LED1);		//LED1 灭
		led_off(LED2);		//LED2 灭
	} 
	EXTI_ClearITPendingBit(EXTI_Line4);//清除 LINE4 上的中断标志位 
}  
void iDraw()
{
	mydelay(100);
	iClear();
	
	//check if hit upper wall
	boxhitball();
	if(turn==0 || ballhitbox==0)
	{
		if(posy+radius>=win_h)
		{
			//change direction of motion
			dy = -dy;
		} //now check for hitting lower wall
		else if(posy-radius<=0)
		{
			dy = -dy;
		}
		else if(posx+radius>=win_w)
		{
			dx = -dx;
		}
		else if(posx-radius<=0)
		{
			dx = -dx;
		}
		
		posx=posx+dx;
		posy=posy+dy;
	}


	
	
	iFilledCircle(posx,posy,radius);
	iFilledRectangle(boxx,boxy,boxw,boxh);




	//place your drawing codes here
}
Exemplo n.º 11
0
void interface::on_btnIgnSet_clicked()
{
    int i=0,j=0;

    ui->txtCommData->clear();

    for(i=0;i<cdata;i++){
        for(j=0;j<cdata;j++){

            ui->tblIgn->setCurrentCell(i,j);

            ui->txtCommData->clear();

            data_target=no_target;

            QByteArray dataIgn;

            dataIgn="save_ign";
            dataIgn+= " ";

            dataIgn+= QString::number(i).toUtf8();
            dataIgn+= " ";

            dataIgn+= QString::number(j).toUtf8();
            dataIgn+= " ";

            dataIgn+= ui->tblIgn->item(i,j)->text().toUtf8();
            dataIgn+= "\n";

            my_port->write(dataIgn);

            mydelay(100);
        }
    }

    QMessageBox::information(this,"Success","Ignition Table written Successfully");
}
Exemplo n.º 12
0
/*****************************************************************
功能:从CF卡读取FPGA代码,然后加载到FPGA芯片中
输入:无
输出:无
返回:0         成功
            其他失败
 *****************************************************************/
SDWORD LoadFpga_ALTERA(CHAR filename[4][80],DWORD  fileno)
{

    BYTE *data  = NULL;
    DWORD bytes ;
    BYTE *bootrom_p1 ;
    FILE *bootrom_fd ;
    BYTE  *pFpgaFile = NULL;
    BYTE  dataTemp;
    DWORD  i = 0;
    DWORD  j = 0;
    DWORD  count = 0 ;
    DWORD  ulFileLength = 0;
	DWORD  tempfileno = 0;
	

    InitFpgaPin_ALTERA();
    StartDownLoadFpga_ALTERA();

    /*检测FPGA_INIT信号,如果变为1
    表示已经对FPGA里的memory清除完毕*/
    while(0 == GpioValGet_ALTERA(FPGA_INIT_ALTERA))
    {
        taskDelay(2) ;
        count++ ;
        if( 10 == count)
        {
            printf("\r\n  FPGA INIT Signal error !!") ; 
            return (2);
        }
    }

for(tempfileno=0;tempfileno<fileno;tempfileno++)
{
	
    pFpgaFile = (BYTE*)malloc(FPGA_FILE_MAX_LENGTH);
    if(NULL == pFpgaFile)
    {

        printf( "\nERROR: NO memory!\n" ) ;
        return (1);
    }

   bootrom_p1 = pFpgaFile ;
   
    if((bootrom_fd = fopen( filename[tempfileno], "rb" )) == NULL )
    {
        printf( "\nERROR: can not open file %s\n",filename ) ;
        free( pFpgaFile ) ;
        return (1);
    }

    bytes = 0 ;
    printf( "read FPGA file\n" ) ;

    while( fscanf( bootrom_fd, "%c", &dataTemp ) != EOF )
    {
        *bootrom_p1++ = dataTemp ;
        bytes = bytes + 1 ;
        if( bytes >= FPGA_FILE_MAX_LENGTH )
        break ;
    } 
    fclose( bootrom_fd ) ;

    if( bytes > FPGA_FILE_MAX_LENGTH )
    {
        printf( "ERROR: bootrom file is too long!\n" ) ;
        return (1);
    }
	
	printf( "File %08x\n" ,bytes) ;
	ulFileLength=bytes;
    /*把文件存入到申请的内存块中*/
    /*ulFileLength = ftpDownload("nsp2000.bin", pFpgaFile);   */


    data = pFpgaFile;

	

	/* 启始点*/
    /*开始加载*/	
    for(i = 0; i<ulFileLength; i++, data++)
    {
        for( j=0; j<8; j++)
        {    
            /*置FPGA_CLK为0*/
            GpioValSet_ALTERA(FPGA_CLK_ALTERA, 0);    
			
	     /*一个字节的最高bit先打入FPGA,
	     送到DIN脚上,在CLK上升沿打入*/
            /*if(((*data) << j) & 0x80 )*/
            if(((*data) >> j) & 0x01 )
            {
                GpioValSet_ALTERA(FPGA_DIN_ALTERA, 1);   
            }
            else 
            {
                GpioValSet_ALTERA(FPGA_DIN_ALTERA, 0);   
	     }
			
        mydelay();
            /*置FPGA_CLK为1,因为上升沿把DIN
            上的电平值打入FPGA,此时打入*/	
            GpioValSet_ALTERA(FPGA_CLK_ALTERA, 1);    
        mydelay();
        }
          
        if(0 == GpioValGet_ALTERA(FPGA_INIT_ALTERA))
        {
            free(pFpgaFile);
            printf("\r\n  FPGA_INIT_ALTERA in middle!\n") ; 

            return(3);
        }        
    }	


    free(pFpgaFile);

 
    for(i = 0; i <100; i++)
    {
        GpioValSet_ALTERA(FPGA_CLK_ALTERA , 0 );
	 mydelay();
        GpioValSet_ALTERA(FPGA_CLK_ALTERA , 1 );
	 mydelay();
    }
	
}