Example #1
0
void resetDMATransfer(
		const U8 endpointNumber,
		volatile U32 *dmaDescriptor,
		U32 *isocFrameArray,
		const U32 numIsocFrames, 
		const U32 bytesPerIsocFrame,
		U16 *isocFrameNumber,
		const U32 maxPacketSize,
		void *dataBuffer
		) 
{
	USBDisableDMAForEndpoint(endpointNumber);

	USBInitializeISOCFrameArray(isocFrameArray, numIsocFrames, *isocFrameNumber, bytesPerIsocFrame);
	*isocFrameNumber += numIsocFrames;

	USBSetupDMADescriptor(dmaDescriptor, NULL, 1, maxPacketSize, numIsocFrames, dataBuffer, isocFrameArray);
	
	//set DDP pointer for endpoint so it knows where first DD is located, manual section 13.1
	//set index of isoc DDP to point to start DD
	USBSetHeadDDForDMA(endpointNumber, udcaHeadArray, dmaDescriptor);

	USBEnableDMAForEndpoint(endpointNumber);
}
Example #2
0
/*************************************************************************
	main
	====
**************************************************************************/
int main(void)
{
	int c, i;
	
	// PLL and MAM
	HalSysInit();

#ifdef LPC214x
	// init DBG
	ConsoleInit(60000000 / (16 * BAUD_RATE));
#else
	// init DBG
	ConsoleInit(72000000 / (16 * BAUD_RATE));
#endif

	configureADCPort(AD0_3);

	
	DBG("Initialising USB stack\n");

	// initialise stack
	USBInit();

	// register descriptors
	USBRegisterDescriptors(abDescriptors);

	// register class request handler
	USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData);

	// register endpoint handlers
	USBHwRegisterEPIntHandler(INT_IN_EP, NULL);
		
	// register frame handler
	USBHwRegisterFrameHandler(USBFrameHandler);
	
	// register device event handler
	USBHwRegisterDevIntHandler(USBDevIntHandler);
	
	USBInitializeUSBDMA(udcaHeadArray);
	USBEnableDMAForEndpoint(ISOC_IN_EP);
	
	DBG("Starting USB communication\n");

#ifdef LPC214x
	(*(&VICVectCntl0+INT_VECT_NUM)) = 0x20 | 22; // choose highest priority ISR slot 	
	(*(&VICVectAddr0+INT_VECT_NUM)) = (int)USBIntHandler;
#else
  VICVectCntl22 = 0x01;
  VICVectAddr22 = (int)USBIntHandler;
#endif
  
	// set up USB interrupt
	VICIntSelect &= ~(1<<22);               // select IRQ for USB
	VICIntEnable |= (1<<22);
	
	enableIRQ();

	// connect to bus
	USBHwConnect(TRUE);
	
	int x = 0;
	c = EOF;
	
	
	//populate source data with all 'B's
	for(i = 0; i < ISOC_INPUT_DATA_BUFFER_SIZE; i++ ) {
		inputIsocDataBuffer[i] = 'B';
	}

	
	int cnt = 0;
	const int interval = 100000;
	// echo any character received (do USB stuff in interrupt)
	
	for(;;) {
		x++;
		U32 temp = cADC_Result(AD0_3);
		if( temp >= 0 && temp <= 1024 )
			currentADCReadValue = temp;
		
		if (x == interval) {
			qq++;
			
			IOSET0 = (1<<11);
			//turn on led	
		    
		} else if (x >= (interval*2)) {
			IOCLR0 = (1<<11);
			//turn off led
			x = 0;
		}
	}

	return 0;
}
Example #3
0
/*************************************************************************
	main
	====
**************************************************************************/
int main(void)
{
    IODIR0 |= (1<<10);//Debug LED on the olimex 2148 dev board set to output mode
    IODIR0 |= (1<<11);//Debug LED on the olimex 2148 dev board set to output mode

    // PLL and MAM
    HalSysInit();

#ifdef LPC214x
    // init DBG
    ConsoleInit(60000000 / (16 * BAUD_RATE));
#else
    // init DBG
    ConsoleInit(72000000 / (16 * BAUD_RATE));
#endif

    DBG("Initialising USB stack\n");

    // initialise stack
    USBInit();

    // register descriptors
    USBRegisterDescriptors(abDescriptors);

    // register class request handler
    USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData);

    // register endpoint handlers
    USBHwRegisterEPIntHandler(INT_IN_EP, NULL);

    // register frame handler
    USBHwRegisterFrameHandler(USBFrameHandler);

    // register device event handler
    USBHwRegisterDevIntHandler(USBDevIntHandler);

    inputIsocDataBuffer[0] = 0;

    USBInitializeUSBDMA(udcaHeadArray);
    USBEnableDMAForEndpoint(ISOC_IN_EP);

    DBG("Starting USB communication\n");

#ifdef LPC214x
    (*(&VICVectCntl0+INT_VECT_NUM)) = 0x20 | 22; // choose highest priority ISR slot
    (*(&VICVectAddr0+INT_VECT_NUM)) = (int)USBIntHandler;
#else
    VICVectCntl22 = 0x01;
    VICVectAddr22 = (int)USBIntHandler;
#endif

    // set up USB interrupt
    VICIntSelect &= ~(1<<22);               // select IRQ for USB
    VICIntEnable |= (1<<22);

    enableIRQ();

    // connect to bus
    USBHwConnect(TRUE);

    int x = 0;

    const int interval = 200000;
    // echo any character received (do USB stuff in interrupt)

    for(;;) {
        x++;

        if (x == interval) {
            IOSET0 = (1<<11);//turn on led on olimex dev board
        } else if (x >= (interval*2)) {
            IOCLR0 = (1<<11);//turn off led on olimex dev board
            x = 0;
        }
    }

    return 0;
}