⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isr.c

📁 ti dsp TMS320C6713 usb速度测试程序源码
💻 C
字号:
/********************************************
*  
*	DSP controlling code 
*	wrote by weikey(liuwei)
*	Micro Nano Manufacture Laboratory of
*   Institute of Electrical Engineering
*   2003.11.10
*
********************************************/
#include <stdio.h>
#include "c6713dsk.h"

#define  USB_COMMAND				mem_read(0xA0000010);		
#define	 USB_STATUS					mem_read(0xA0000000);
#define	 USB_STATUS1				mem_read(0xA0000004);
#define	 USB_STATUS2				mem_read(0xA0000008);
#define	 USB_STATUS3				mem_read(0xA000000C);
#define  GETUSB_DATA 				mem_read(0xA0000020);
#define  GETUSB_DATA1 				mem_read(0xA0000024);
#define  GETUSB_DATA2 				mem_read(0xA0000028);
#define  GETUSB_DATA3 				mem_read(0xA000002C);
#define  SENDUSB_DATA(tmp) 			mem_write(0xA0000020,tmp);
#define  SENDUSB_DATA1(tmp) 		mem_write(0xA0000024,tmp);
#define  SENDUSB_DATA2(tmp) 		mem_write(0xA0000028,tmp);
#define  SENDUSB_DATA3(tmp) 		mem_write(0xA000002C,tmp);

unsigned char  usbcmd = 0;
unsigned char  flag_usb = 0;
unsigned char  usbbuf[512];//,usbbufUP[1024];

void ReceiveData(int Addr);
void RespondData(int Addr);

/*-------------------------------------------------------------------------*/
/* exint6_isr() - interrupt service routine for EXTERNAL INTERRUPT6                     */
/*-------------------------------------------------------------------------*/
interrupt void exint6_isr(void)
{
	int j;
	unsigned short count;
   	unsigned char tmp1,tmp2;
	unsigned char flag_fifo=0,led_count,led_delay,tmp;
	//flag_usb = 1;

	for(j=0;j<512;j++)
	{
		usbbuf[j] = 0;	//接收缓冲区清零
	}	
	usbcmd = USB_COMMAND;	
	usbcmd = usbcmd & 0x03; //接收命令类型	
 	
		
	if(usbcmd == 0)
	{		
		//receive 512 byte 
		ReceiveData((int)&usbbuf);
		/*
		QDMA_SRC = 0xA0000024;
	  	QDMA_CNT = 512;
	  	QDMA_DST = (int)&usbbuf;
	  	QDMA_S_OPT= 0x40200001;
	  	
	  	tmp1=*(unsigned int*)(0x10000);
		tmp2=*(unsigned int*)(0x10004);		
	  	count=(tmp2*256)+tmp1;
	  	
	  	for(j=0;j<5;j++)//count
		{		
			QDMA_SRC = (int)&usbbuf;
		  	QDMA_CNT = 512;
		  	QDMA_DST = 0xA000002C;
		  	QDMA_S_OPT= 0x41000001;
		  	*/
		RespondData((int)&usbbuf);
		//}		
 
	}	
	else if(usbcmd == 1)
	{	
		//receive 512 bytes 
		QDMA_SRC = 0xA0000024;
	  	QDMA_CNT = 512;
	  	QDMA_DST = (int)&usbbuf;
	  	QDMA_S_OPT= 0x40200001; 
		//usbbuf + 1
		for(j=1;j<17*4;j++)
		{
			usbbuf[j]=usbbuf[j]+1;
		}	
		//send 512 bytes
		QDMA_SRC = (int)&usbbuf;
	  	QDMA_CNT = 512;
	  	QDMA_DST = 0xA000002C;
	  	QDMA_S_OPT= 0x41000001;
	}
		
	else if(usbcmd == 2)
	{	
		//receive 512 byte 
		QDMA_SRC = 0xA0000024;
	  	QDMA_CNT = 512;
	  	QDMA_DST = (int)&usbbuf;
	  	QDMA_S_OPT= 0x40200001; 
	  	//usbbuf - 1
		for(j=1;j<17*4;j++)
		{
			usbbuf[j]=usbbuf[j]-1;
		}
		//send 512 bytes
		QDMA_SRC = (int)&usbbuf;
	  	QDMA_CNT = 512;
	  	QDMA_DST = 0xA000002C;
	  	QDMA_S_OPT= 0x41000001;	
	}
		
	else if(usbcmd == 3)
	{	
		//receive 512 byte 
		QDMA_SRC = 0xA0000024;
	  	QDMA_CNT = 512;
	  	QDMA_DST = (int)&usbbuf;
	  	QDMA_S_OPT= 0x40200001; 
	  	//usbbuf + 5
		for(j=1;j<17*4;j++)
		{
			usbbuf[j]=usbbuf[j]+5;
		}
		//send 512 bytes
		QDMA_SRC = (int)&usbbuf;
	  	QDMA_CNT = 512;
	  	QDMA_DST = 0xA000002C;
	  	QDMA_S_OPT= 0x41000001;
	}    	  	
}

/*-------------------------------------------------------------------------*/
/* ReceiveData(int Addr) - receive data from PC           				   */
/*-------------------------------------------------------------------------*/
void ReceiveData(int Addr)
{
	//unsigned short i;
	//for(i=0;i<512;i++) buf[i] = 0;//clear up buf[512]
	//use QDMA receive data from PC
	QDMA_SRC = 0xA0000024;
  	QDMA_CNT = 512;
  	QDMA_DST = Addr;
  	QDMA_S_OPT= 0x40200001;
}

/*-------------------------------------------------------------------------*/
/* RespondData(int Addr) - respond data to PC                */
/*-------------------------------------------------------------------------*/
void RespondData(int Addr)
{
	//unsigned short i;
	//for(i=0;i<512;i++) buf[i] = 0;//clear up buf[512]
	//use QDMA respond data to PC
	QDMA_SRC = Addr;
  	QDMA_CNT = 512;
  	QDMA_DST = 0xA000002C;
  	QDMA_S_OPT= 0x41000001;	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -