Example #1
0
void Test_Uart0_AfcRx(void)
{
    unsigned int i;
    rx_cnt=0;
    rx_end=0;
    afc_err=0;
    rxdataCk=(volatile U8 *)UARTBUFFER;
    rxdataPt=(volatile U8 *)UARTBUFFER;
    Uart_Port_Set(); 
    Uart_Select(0);
    Uart_Printf("[Uart channel 0 AFC Rx Test]\n");
    Uart_Printf("This test should be configured two boards.\n");
    Uart_Printf("Connect Tx and Rx Board with twitsted(rx/tx, nCTS/nRTS) cable .\n");
    
    Uart_Printf("\nConnect PC[COM1 or COM2] and UART1 of SMDK2410 with a serial cable!!! \n");
    Uart_Printf("Then, press any key........\n");
    Uart_Select(1);	// Change the uart port    
    Uart_Getch();
    Uart_Printf("Press any key to start Rx and then Star Tx....\n");
    Uart_Getch();

    pISR_UART0=(unsigned) Uart0_AfcRxOrErr;

    rULCON0=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
    rUCON0 &= 0x400;	// For the PCLK <-> UCLK fuction    
    rUCON0 |= (1<<9)|(1<<8)|(1<<7)|(1<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
    //Clock,Tx:Lev,Rx:Lev,Rx timeout:o,Rx error int:o,Loop-back:x,Send break:x,Tx:o,Rx:o
    
    rUFCON0=(1<<6)|(0<<4)|(1<<2)|(1<<1)|(1);
    //Tx and Rx FIFO Trigger Level:4byte,Tx and Rx FIFO Reset,FIFO on
    rUMCON0=0x10;   // Enable Uart0 AFC 
    rINTMSK=~(BIT_UART0);
    rINTSUBMSK=~(BIT_SUB_RXD0|BIT_SUB_TXD0|BIT_SUB_ERR0);

    while(!rx_end);
    
    rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_TXD0|BIT_SUB_ERR0);
    rUFCON0=(3<<6)|(2<<4)|(1<<2)|(1<<1)|(0);
    //Tx and Rx FIFO Trigger Level:12byte,Tx and Rx FIFO Reset,FIFO off
    Uart_Printf("\nEnd Rx, receive data count=%d\n",rx_cnt);
    for(i=0;i<AFC_BUFLEN;i++) 
    	if(i-(*rxdataCk++)) {
    		Uart_Printf("i=%d\n",i);
    		afc_err++;
    		}
    if(afc_err)
    	Uart_Printf("AFC test fail!! Error count=%d\n",afc_err);
    else
    	Uart_Printf("AFC test is good!!\n");

    Uart_Printf("\nConnect PC[COM1 or COM2] and UART0 of SMDK2410 with a serial cable!!! \n");
    Uart_Printf("Then, press any key........\n");
    Uart_Select(0);
    Uart_Getch();
    Uart_Port_Return();
}
Example #2
0
void Test_ADC(void)
{
    U8 ch, mode;
	
	Uart_Printf("Select ADC Chanel: 0 or 1");
	ch=Uart_Getch();
	Uart_Printf("\n%c\n\n", ch);
	
	if (ch!='0' && ch !='1')
	{
		Uart_Printf("you select wrong chanel!\n");
		return;
	}
	
    rADCDLY = 100;				//ADC转换延时	
//    rADCTSC = 0;				//设置ADC为普通模式
   								/* 进行ADC模块设置,其中x<<n表示第n位设置为x(若x超过一位,则向高位顺延) */
    rADCCON = (0 << 0)     |	// ADC转换设置 未设置
              (0 << 1)     |    // 读AD数据触发AD转换 未使用
              (0 << 2)     |    // StandBy模式选择 为普通操作模式
              (ch << 3)    |    // ADC通道选择 ch
              (49 << 6)    | 	// CLKDIV = Fpclk /49+1/5 ,即转换时钟为1MHz  Fpclk = 10M   ADC转换频率400K
              (1 << 14)   ;	    // 使能软件预设值
    
	Uart_Printf("Select ADC Mode: 1.Enable  2.Read");
	mode=Uart_Getch();
	Uart_Printf("\n%c\n\n", mode);
	
	if (mode!='1' && mode !='2')
	{
		Uart_Printf("you select wrong model!\n");
		return;
	}
	
	switch(mode)
	{
		case '1':
			Uart_Printf("ADC Enable-Convert Mode\n");
			while(Uart_GetKey() != ESC_KEY)
			{
				AD_ENABLE();
			}
			break;
		case '2':
			Uart_Printf("ADC Read-Convert Mode\n");
			while(Uart_GetKey() != ESC_KEY)
			{
				AD_READ();
			}
			break;
//		default:
//			break;
	}
}
Example #3
0
void Main(void)
{	
	unsigned int ret;
	//初始化串口0以方便调试
	Uart0_Init_all();
	//初始化软中断
	swi_init();
    //测试软中断
	Uart_Printf("\n%s\n", "按下任意键,开始swi97 4个参数的软中断");
	Uart_Getch();
	swi97_int(11, 22, 33, 44);   
		rGPFDAT |= 0xFF;
		rGPFDAT &=~(1<<4); 
	Uart_Printf("\n%s\n", "按下任意键,开始swi98 4个参数的软中断");
	Uart_Getch();
						rGPFDAT |= 0xFF;
					rGPFDAT &=~(8<<4);
					delay();
					rGPFDAT |= 0xFF;
					rGPFDAT &=~(4<<4);
					delay();
					rGPFDAT |= 0xFF;
					rGPFDAT &=~(2<<4);
					delay();
					rGPFDAT |= 0xFF;
					rGPFDAT &=~(1<<4);
					delay();
	swi98_int(55, 66, 77, 88);
	Uart_Printf("\n%s\n", "按下任意键,开始swi99 4个参数的软中断");
	Uart_Getch();
						rGPFDAT |= 0xFF;
					rGPFDAT &=~(1<<4);
					delay();
					rGPFDAT |= 0xFF;
					rGPFDAT &=~(2<<4);
					delay();
					rGPFDAT |= 0xFF;
					rGPFDAT &=~(4<<4);
					delay();
					rGPFDAT |= 0xFF;
					rGPFDAT &=~(8<<4);
					delay();
	ret = swi99_int(91, 81, 71, 61);	
	Uart_Printf("\nswi99返回值为%u\n", ret);
	while(1)
	{
		Uart_Getch();
	}
}
Example #4
0
void Ts_Sep(void)
{
    Uart_Printf("[Touch Screen Test.]\n");
    Uart_Printf("Separate X/Y position conversion mode test\n");

    rADCDLY = (50000);  // ADC Start or Interval Delay

    rADCCON = (1<<14)|(ADCPRS<<6)|(0<<3)|(0<<2)|(0<<1)|(0);
      // Enable Prescaler,Prescaler,AIN7/5 fix,Normal,Disable read start,No operation
    rADCTSC = (0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);
      // Down,YM:GND,YP:AIN5,XM:Hi-z,XP:AIN7,XP pullup En,Normal,Waiting for interrupt mode

    pISR_ADC   = (unsigned)Adc_or_TsSep;
    rINTMSK    =~(BIT_ADC);
    rINTSUBMSK =~(BIT_SUB_TC);

    Uart_Printf("\nType any key to exit!!!\n");
    Uart_Printf("\nStylus Down, please...... \n");
    
    Uart_Getch();

    rINTSUBMSK |= BIT_SUB_TC;
    rINTMSK    |= BIT_ADC;
    Uart_Printf("[Touch Screen Test.]\n");
}
Example #5
0
void Check_Sel(void)
{
	char yn;
    
	do{
	  
	  rINTMSK |=BIT_GLOBAL|BIT_EINT2;
      Uart_Printf("\n\r Touch Screen coordinate Rang in:\n");
      Uart_Printf("   (Xmin,Ymin) is :(%04d,%04d)\n",Xmin,Ymin);	
	  Uart_Printf("   (Xmax,Ymax) is :(%04d,%04d)\n",Xmax,Ymax);	
	  Uart_Printf("\n  To use current settings. Press N/n key. ");
	  Uart_Printf("\n\n\r  Want to Set Again(Y/N)? ");	        	      
	  yn = Uart_Getch();
      rI_ISPC = BIT_EINT2;              // clear pending_bit
      rINTMSK =~(BIT_GLOBAL|BIT_EINT2);
	  if((yn == 0x59)|(yn == 0x79)|(yn == 0x4E)|(yn == 0x6E)) Uart_SendByte(yn);	  
	  if((yn == 0x59)|(yn == 0x79))
	    {
	      Uart_Printf("\n\n Touch TSP's Cornor to ensure Xmax,Ymax,Xmax,Xmin");	      

         //Init X Y rectangle
          Xmax = 750;    Xmin = 200;
          Ymax = 620;    Ymin = 120;

	      oneTouch = 0;
	      CheckTSP = 1; // mask to check
	      while(CheckTSP);
	      
	    }else break;	    
	  
	}while(1);
	
}
Example #6
0
void Test_Uart0_AfcTx(void)
{
    int i;
    tx_cnt=0;
    tx_end=0;
    txdataFl=(volatile U8 *)UARTBUFFER;
    txdataPt=(volatile U8 *)UARTBUFFER;
    for(i=0;i<AFC_BUFLEN;i++) *txdataFl++=i;	// Initialize the AFC data
    Uart_Port_Set(); 
    Uart_Select(0);
    Uart_Printf("[Uart channel 0 AFC Tx Test]\n");
    Uart_Printf("This test should be configured two boards.\n");
    Uart_Printf("Connect Tx and Rx Board with twitsted(rx/tx, nCTS/nRTS) cable .\n");
    Uart_Printf("\nConnect PC[COM1 or COM2] and UART1 of SMDK2410 with a serial cable!!! \n");

    Uart_Printf("Then, press any key........\n");
    Uart_Select(1);	// Change the uart port    
    Uart_Getch();
    Uart_Printf("Start Rx first and then press any key to start Tx.....\n");
    Uart_Getch();

    pISR_UART0=(unsigned) Uart0_AfcTx;

    rULCON0=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
    rUCON0 &= 0x400;	// For the PCLK <-> UCLK fuction    
    rUCON0 |= (1<<9)|(1<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
    //Clock,Tx:Lev,Rx:Lev,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:int,Rx:int
    rUFCON0=(1<<6)|(0<<4)|(1<<2)|(1<<1)|(1);
    //Tx and Rx FIFO Trigger Level:4byte,Tx and Rx FIFO Reset,FIFO on
    rUMCON0=0x10;   // Enable Uart0 AFC 
    rINTMSK=~(BIT_UART0);
    rINTSUBMSK=~(BIT_SUB_RXD0|BIT_SUB_TXD0|BIT_SUB_ERR0);

    while(!tx_end);

    rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_TXD0|BIT_SUB_ERR0);
    rUFCON0=(3<<6)|(2<<4)|(1<<2)|(1<<1)|(0);
    //Tx and Rx FIFO Trigger Level:12byte,Tx and Rx FIFO Reset,FIFO off
    Uart_Printf("\nEnd Tx, transfer data count=%d\n",tx_cnt);

    Uart_Printf("\nConnect PC[COM1 or COM2] and UART0 of SMDK2410 with a serial cable!!! \n");
    Uart_Printf("Then, press any key........\n");
    Uart_Select(0);
    Uart_Getch();
    Uart_Port_Return();
}
Example #7
0
void TS_Test(void)
{
		Lcd_TC();
		TS_init();
		Check_Sel();
			
		Uart_Printf("\n Pixel: 320 X 240. Coordinate Rang in: (0,0) - (320,240)\n");
		Uart_Printf("\nLCD TouchScreen Test Example(please touch LCD screen)\n");
		Uart_Printf("\npress any key to exit...\n");
		Uart_Getch();
		TS_close();
}
Example #8
0
/*********************************************************************************************
* name:		main
* func:		c code entry
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void Main(void)
{
	char input_char;				/* user input char 			*/
	
    sys_init();        /* Initial 44B0X's Interrupt,Port and UART */
    _Link();           /* Print Misc info */
		
    while(1)
     {
	   Uart_Printf("\n > Embest S3CEV40 board. < ");
       Uart_Printf("\n <<Extenal Interrupt>> Test. Y/y to continue,any key skip it.\n");
       input_char = Uart_Getch();
       if(input_char == 'Y' || input_char == 'y')
         Test_Eint();
     }
}
Example #9
0
void Main(void)
{	
	Uart0_Init_all();
	Led_Init() ;
	Uart_Printf("\n%s\n", "Led相关引脚已经初始化完毕!请按任意键开始闪烁");
	Uart_Getch();
	while(1)
	{	
		rGPFDAT &= 0x0F;
		Uart_Printf("\n%s\n", "Led亮");
		delay();
		rGPFDAT |= 0xFF;
		Uart_Printf("\n%s\n", "Led灭");
		delay();
	}
}
Example #10
0
 char Uart()
{
	char id[20]={};
 	char nz[]={0x37,0x34,0x39};
	char sj;
 
 	char x,xx;
 	char y=0;
 	int data;
 	Uart_Init(0,9600);
 	Uart_Select(1);
	bz=0;
	 	
	if(rUTRSTAT1 & 0x1)
	{
		for(y=0;y<8;y++)
 		{
	 		sj=Uart_Getch();
	 		id[y]=sj;
	 	}
	}
	 
	if(id[2]==nz[1])
	{
	 	
	 	bz=1;
	}
	else
	 	bz=0;
	 	
 	if(id[0]!=0)
 	{
 		x = id[1];
 		xx=id[2];
 	 	
 	}

 	

 	return bz;	

}
void Uart_GetString(char *string)
{
    char *string2 = string;
    char c;
    while((c = Uart_Getch())!='\r')
    {
        if(c=='\b')
        {
            if( (int)string2 < (int)string )
            {
                Uart_Printf("\b \b");
                string--;
            }
        }else{
            *string++ = c;
            Uart_SendByte(c);
        }
    }
    *string='\0';
    Uart_SendByte('\n');
}
Example #12
0
void Test_Touchpanel(void)
{
   
    rADCDLY=50000;                  //Normal conversion mode delay about (1/3.6864M)*50000=13.56ms
    rADCCON=(1<<14)+(ADCPRS<<6);   //ADCPRS En, ADCPRS Value

    Uart_Printf("ADC touch screen test\n");

    rADCTSC=0xd3;  //Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En

    pISR_ADC = (int)AdcTsAuto;
	rINTMSK=~BIT_ADC;       //ADC Touch Screen Mask bit clear
	rINTSUBMSK=~(BIT_SUB_TC);

	Uart_Printf("\nType any key to exit!!!\n");
	Uart_Printf("\nStylus Down, please...... \n");
	Uart_Getch();

	rINTSUBMSK|=BIT_SUB_TC;
	rINTMSK|=BIT_ADC;
	Uart_Printf("Touch Screen Test is Finished!!!\n");

}
Example #13
0
/*    
void Test_Touchpanel(void)
{
   
	rADCDLY=50000;                  //Normal conversion mode delay about (1/3.6864M)*50000=13.56ms
	rADCCON=(1<<14)+(ADCPRS<<6);   //ADCPRS En, ADCPRS Value

	Uart_Printf("\nTouch Screen test\n");

	rADCTSC=0xd3;  //Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En

	pISR_ADC = (int)AdcTsAuto;
	rINTMSK=~BIT_ADC;       //ADC Touch Screen Mask bit clear
	rINTSUBMSK=~(BIT_SUB_TC);

	Uart_Printf("\nPress any key to quit!\n");
	Uart_Printf("\nStylus Down, please...... \n");
	Uart_Getch();

	rINTSUBMSK|=BIT_SUB_TC;
	rINTMSK|=BIT_ADC;
	Uart_Printf("Touch Screen Test is Finished!!!\n");

}


void __irq AdcTsAuto(void)
{
	U32 saveAdcdly;

	if(rADCDAT0&0x8000)
	{
		//Uart_Printf("\nStylus Up!!\n");
		rADCTSC&=0xff;	// Set stylus down interrupt bit
	}
	//else 
		//Uart_Printf("\nStylus Down!!\n");

	rADCTSC=(1<<3)|(1<<2);         //Pull-up disable, Seq. X,Y postion measure.
	saveAdcdly=rADCDLY;
	rADCDLY=40000;                 //Normal conversion mode delay about (1/50M)*40000=0.8ms

	rADCCON|=0x1;                   //start ADC

	while(rADCCON & 0x1);		//check if Enable_start is low
	while(!(rADCCON & 0x8000));        //check if EC(End of Conversion) flag is high, This line is necessary~!!
		
	while(!(rSRCPND & (BIT_ADC)));  //check if ADC is finished with interrupt bit

	xdata=(rADCDAT0&0x3ff);
 	ydata=(rADCDAT1&0x3ff);

	//check Stylus Up Interrupt.
	rSUBSRCPND|=BIT_SUB_TC;
	ClearPending(BIT_ADC);
	rINTSUBMSK=~(BIT_SUB_TC);
	rINTMSK=~(BIT_ADC);
			 
	rADCTSC =0xd3;    //Waiting for interrupt
	rADCTSC=rADCTSC|(1<<8); // Detect stylus up interrupt signal.

	while(1)		//to check Pen-up state
	{
		if(rSUBSRCPND & (BIT_SUB_TC))	//check if ADC is finished with interrupt bit
		{
			//Uart_Printf("Stylus Up Interrupt~!\n");
			break;	//if Stylus is up(1) state
		}
	}	

	Uart_Printf("count=%03d  XP=%04d, YP=%04d\n", count++, xdata, ydata);    //X-position Conversion data            

	rADCDLY=saveAdcdly; 
	rADCTSC=rADCTSC&~(1<<8); // Detect stylus Down interrupt signal.
	rSUBSRCPND|=BIT_SUB_TC;
	rINTSUBMSK=~(BIT_SUB_TC);	// Unmask sub interrupt (TC)     
	ClearPending(BIT_ADC);
}
*/
void Test_Touchpanel(void)//触摸屏测试
{
   
	rADCDLY=50000;  //设定ADC开始延迟寄存器的值,使得延迟为:(1/3.6864M)*50000=13.56ms
	rADCCON=(1<<14)|(9<<6);   //rADCCON[14]=1,AD转换预分频器有效,rADCCON[13:6]=9,ADC频率=PCLK/10=5M

	Uart_Printf("\n触摸屏测试开始,请点击触摸屏!\n");

	rADCTSC=(1<<7)|(1<<6)|(0<<5)|(1<<4)|(3);  //???

	pISR_ADC = (int)AdcTsAuto;//中断函数注册
	
	rINTMSK=~BIT_ADC;//使能ADC中断
	rINTSUBMSK=~(BIT_SUB_TC);//使能触摸点击子中断
	Uart_Getch();//等待键盘输入,有输入退出等待,测试结束
	
	Uart_SendString("\n触摸屏测试完毕!!!\n");
	
	rINTSUBMSK|=BIT_SUB_TC;//禁止触摸点击子中断
	rINTMSK|=BIT_ADC;//禁止ADC中断


}
Example #14
0
//***************[ Change_IntPriorities ]*************************
void Change_IntPriorities(void)
{
    int key;

//    rINTMOD = 0x0;
//    rINTMSK = ~(BIT_ALLMSK);
//    rINTSUBMSK = ~(BIT_SUB_ALLMSK);
    
    Uart_Printf("[ Interrupt Controller Priority Policy ]\n\n");
    Uart_Printf("1. Reverse Priority   2. Priority Rotate Off   3. Default\n\n");
    Uart_Printf("Select : ");
    key = Uart_Getch();
    Uart_Printf("%c\n\n",key);    
    
    switch(key)
    {
       case '1':
          Uart_Printf("Reverse priority is selected.\n");
          rPRIORITY = 0x7f;             //Arbiter 0 to 6 group priority rotate enable
          rPRIORITY = (0x3fff<<7);      //Arbiter 0 and 5 are group priority order set.(REQ 4-1-2-3)
                                        //Arbiter 1 to 4 and 6 are group priority order set.(REQ 0-4-1-2-3-5)
          break;
       case '2':
          Uart_Printf("Priority rotate off is selected.\n");
          rPRIORITY = 0x0;              //Arbiter 0 to 6 group priority does not rotate
          break;
       case '3':
          Uart_Printf("Default mode is selected.\n");
          rPRIORITY = 0x7f;             //Arbiter 0 to 6 group priority rotate enable
          break;
       default:
          break;
    }
    
//    rINTMSK = BIT_ALLMSK;
//    rINTSUBMSK = BIT_SUB_ALLMSK;     
}
Example #15
0
/******************** PWM Timer Normal Operation Test ********************/
void Test_TimerNormal(void)
{
    int save_B,save_G,save_H,save_PB,save_PG,save_PH,save_MI;
    char key;//, toggle;
    
    /* Save Current Register related to PWM Port */
    //Save Current GPB, G, H Configure Registers 
    save_B  = rGPBCON;
    save_G  = rGPGCON;
    save_H  = rGPHCON;
    //Save Pull-Up Disable Register     
    save_PB = rGPBUP;
    save_PG = rGPGUP;
    save_PH = rGPHUP;
    //Save Miscellaneous Control Register 
    save_MI = rMISCCR;   
    
    /* Setting Port related to PWM */ 
    // PortB
    rGPBUP  = rGPBUP  & ~(0x1f)     | 0x1f; //GPB[4:0] Pull Up
    rGPBCON = rGPBCON & ~(0x3ff)    | 0x2 | 0x2 << 2 | 0x2 << 4 | 0x2 << 6 | 0x2 << 8; //TCKL0, TOUT[3:0]   
    // PortG
    rGPGUP  = rGPGUP  & ~(0x800)    | 0x800; //GPG11 Pull Up
    rGPGCON = rGPGCON & ~(0xc00000) | 0xc00000; //TCLK1 
    // PortH
    rGPHUP  = rGPHUP  & ~(0x200)    | 0x200; //GPH9 Pull Up
    rGPHCON = rGPHCON & ~(0x3<<18)  | (0x2<<18); //CLKOUT0    
    // Miscellaneous Control Register
    rMISCCR = rMISCCR & ~(0xf0)     | 0x40; //Select PCLK with CLKOUT0

    Uart_Printf("[Select Timer Test Setting]\n");
    Uart_Printf("a. Prescaler 1, 0: 0, Dead zone Disable, MUX 4~0: 1/2, (H/L)duty 50 \nb. Prescaler 1, 0: 8, Dead zone Enable, MUX 4~0: 1/16, (H/L)duty 50 \nc. (H/L)duty 0, TCNT =< TCMP, Inverter On\nd. TCLK0, TCLK1 Input Divider Test\n");
    Uart_Printf("Select [a ~ d]: \n");
        
    key = Uart_Getch();
    Uart_Printf("%c\n\n",key);    
	
	/* Timer Configuration Reg.0, 1(TCFG0, TCFG1) Setting */
	switch(key)
    {
        case 'a':
           	
    		rTCFG0 = rTCFG0 & ~(0xffffff) | 0x00000; //Dead zone=0, Prescaler1=0, Prescaler0=0
           	rTCFG1 = 0x0; //All Interrupt, MUX 4 ~ 0: 1/2            
            
            Uart_Printf("Prescaler1=0, Prescaler0=0, Dead Zone Disable, MUX 4 ~ 0: 1/2, Duty 50% \n");
            break;
        
        case 'b':    
            
            rTCFG0 = rTCFG0 & ~(0xffffff) | (0xc8)<<16 | (0x7)<<8 | (0x7); //Dead zone=0, Prescaler1=7, Prescaler0=7
			rTCFG1 = rTCFG1 & ~(0xffffff) | (0x3)<<16 | (0x3)<<12 | (0x3)<<8 | (0x3)<<4 | (0x3); //All Interrupt, MUX 4 ~ 0: 1/16
                        
            Uart_Printf("Prescaler1=8, Prescaler0=8, Dead zone=200 Enable, MUX 4 ~ 0: 1/16, duty = 50%, Consider Dead zone effect\n");        		
            break;
            
        case 'c':    
            
            rTCFG0 = rTCFG0 & 0x0;	//Dead zone=0, Prescaler1=0, Prescaler0=0
			rTCFG1 = rTCFG1 & 0x0;	//All Interrupt, MUX 4 ~ 0: 1/2
               		
            Uart_Printf("(H/L)Duty 0, TCNT =< TCMP, Inverter On\n");
            break;
        
        case 'd':
           	
    		rTCFG0 = rTCFG0 & ~(0xffffff) | 0x00000; //Dead zone=0, Prescaler1=0, Prescaler0=0
           	rTCFG1 = rTCFG1 & ~(0xffffff) | 0x4 | 0x4 << 4 | 0x4 << 8 | 0x4 << 12 | 0x4 << 16;	//All Interrupt, MUX 4 ~ 0: 1/2            
            Uart_Printf("TCLK0, TCLK1 Input Divider Test(if TCLK0, TCLK1=25.4MHZ)\n");
            break;
         
        default:
            rGPBCON = save_B; 
            rGPGCON = save_G;       
            rGPHCON = save_H;           
            rGPBUP  = save_PB;
            rGPGUP  = save_PG;
            rGPHUP  = save_PH;
            rMISCCR = save_MI;
            return;
    }
    
    //(1/(PCLK/(Prescaler+1)/divider) * count(Max 65535) = Timer clock (Frequency)
    //(1/(50.8MHz/1/2))  *  2000 = 0.0787 msec ( 12.7 KHz)
    //(1/(50.8MHz/1/2))  *  4000 = 0.1575 msec ( 6.35 KHz)
    //(1/(50.8MHz/1/2))  *  5000 = 0.1969 msec ( 5.080 KHz)
    //(1/(50.8MHz/1/2))  *  10000 = 0.3937 msec ( 2.54 KHz)
    
    //(1/(50.8MHz/8/16)) *  2000 = 5.039 msec ( 198.45 Hz)
    //(1/(50.8MHz/8/16)) *  4000 = 10.079 msec ( 99.216 KHz)
    //(1/(50.8MHz/8/16)) *  5000 = 12.598 msec ( 79.38 Hz) 
    //(1/(50.8MHz/8/16)) *  10000 = 25.197 msec ( 39.687 Hz)
                          
    rTCNTB0 = 2000;      
    rTCNTB1 = 4000;       
    rTCNTB2 = 5000;       
    rTCNTB3 = 10000;      
                                                
    rTCMPB0 =  2000 - 1000; //(H/L)duty 50%
    rTCMPB1 =  4000 - 2000;
    rTCMPB2 =  5000 - 2500;
    rTCMPB3 = 10000 - 5000;
	
	rTCON  = rTCON & ~(0xffffff) | 0x1<<1 | 0x1<<9 | 0x1<<13 | 0x1<<17 | 0x1<<21 ; //Manual update 
	
	switch(key)
	{
		case 'a':
		
     	rTCON   = rTCON & ~(0xffffff) | 0x599909;  //Auto reload, Inverter off, No operation, Start, Dead zone Disable
		
		break;
		
		case 'b':
	
     	rTCNTB0 = rTCNTB0 & ~(0xffff) | 500; //(1/(50.8MHz/8/16)) *  500 = 1.273 msec ( 793.8 Hz)
     	rTCMPB0 =  500 - 250; //(H/L)duty 50%
     	
     	rTCON = rTCON & ~(0xffffff) | 0x6aaa0a;  //Auto reload, Inverter off, Manual update, Stop, Dead zone Disable
    	rTCON = rTCON & ~(0xffffff) | 0x599909| (0x1) << 4;  //Auto reload, Inverter off, No operation, Start, Dead zone Enable
		
    	break;
    	
    	case 'c':
	
     	rTCNTB0 = rTCNTB0 & ~(0xffff) | 1000; 
     	rTCMPB0 =  1000;      
     	
     	rTCNTB1 = rTCNTB1 & ~(0xffff) | 1000; 
     	rTCMPB1 =  1000; 
     	
     	rTCNTB2 = rTCNTB2 & ~(0xffff) | 1000; 
     	rTCMPB2 =  1000; 
     	
     	rTCNTB3 = rTCNTB3 & ~(0xffff) | 1000; 
     	rTCMPB3 =  1000; 
     		
     	rTCON = rTCON & ~(0xffffff) | 0x1 << 1 | 0x1 << 9 | 0x1 << 13 | 0x1 << 17 | 0x1 << 21;  //Auto reload disable, Inverter off, Manual update, Stop, Dead zone Disable
		rTCON = rTCON & ~(0xffffff) | 0x1 | 0x1 << 2 | 0x1 <<8 | 0x1 << 10| 0x1 << 12 | 0x1 << 14 | 0x1 << 16 | 0x1 << 18| 0x1 << 20;  //Auto reload enable, Inverter On, No Operation, Start, Dead zone Disable
		
		Uart_Printf("rTCNTB0 = Dec:%d, rTCNTO0 = Dec:%d, rTCMPB0 = Dec:%d\n",rTCNTB0, rTCNTO0, rTCMPB0);
    	break;
    
    	case 'd':
    
		rTCON   = rTCON & ~(0xffffff) | 0x599909;  //Auto reload, Inverter off, No operation, Start, Dead zone Disable
		break;
    
     	default:
        break;
    }
          
    if(key=='a' && (PCLK==(203200000/4)))  
    {
        
      	Uart_Printf("PCLK 50.8MHz, Timer TOUT0 : 0.0787 msec ( 12.70 KHz)\n");
      	Uart_Printf("PCLK 50.8MHz, Timer TOUT1 : 0.1575 msec (  6.35 KHz)\n");
        Uart_Printf("PCLK 50.8MHz, Timer TOUT2 : 0.1969 msec (  5.08 KHz)\n");
        Uart_Printf("PCLK 50.8MHz, Timer TOUT3 : 0.3937 msec (  2.54 KHz)\n");        
    }    
      
    else if(key=='b' && (PCLK==(203200000/4)))  
    {
        Uart_Printf("PCLK 50.8MHz, Timer TOUT0 :   1.273 msec (793.8 KHz)\n");
        Uart_Printf("PCLK 50.8MHz, Timer TOUT1 : /TOUT0 \n");
        Uart_Printf("PCLK 50.8MHz, Timer TOUT2 : 13.6094 msec ( 73.478 Hz)\n");
        Uart_Printf("PCLK 50.8MHz, Timer TOUT3 : 27.2189 msec ( 36.739 Hz)\n");                        
    }    
    
    else if(key=='d' && (PCLK==(203200000/4)))	 
    {
        Uart_Printf("then Timer TOUT 0 : 0.0787 msec ( 12.70 KHz)\n");
        Uart_Printf("then Timer TOUT 1 : 0.1575 msec (  6.35 KHz)\n");
        Uart_Printf("then Timer TOUT 2 : 0.1969 msec (  5.08 KHz)\n");
        Uart_Printf("then Timer TOUT 3 : 0.3937 msec (  2.54 KHz)\n");                        
    }
    
    Uart_Printf("\nProbe PCLK.\n");
    Uart_Printf("Probe TOUT0.\n");
    Uart_Printf("Probe TOUT1.\n");
    Uart_Printf("Probe TOUT2.\n");
    Uart_Printf("Probe TOUT3.\n");
    
    Uart_Printf("\nCheck PWM (Pulse Width Modulation) Output\n");
    Uart_Printf("Press any key.\n");
    Uart_Getch();   
    
    /* Stop Timer0, 1, 2, 3, 4 */
    rTCON   = 0x0;	//One-shot, Inverter off, No operation, Dead zone disable, Stop Timer 
	
	rGPBCON = save_B; 
    rGPGCON = save_G;       
    rGPHCON = save_H;    
    rGPBUP  = save_PB;
    rGPGUP  = save_PG;
    rGPHUP  = save_PH;
    rMISCCR = save_MI;

}
Example #16
0
/******************** Timer DMA Request Test ********************/										
void Test_TimerDma(void)
{
    int i;
    
    rTCFG0 = rTCFG0 & ~(0xffffff) | 0x0; //Dead zone=0, Prescaler0,1 = 0    
    rTCFG1 = rTCFG1 & ~(0xffffff) | 0x3 << 0 | 0x1 << 20; //Mux0 1/16, DMA Request Channel 0
    
    rTCNTB0 = 65500;   
  	rTCMPB0 = 30000;
  	
  	rTCNTB1 = 65500;   
  	rTCMPB1 = 30000;
  	
  	rTCNTB2 = 65500;   
  	rTCMPB2 = 30000;
  	
  	rTCNTB3 = 65500;   
  	rTCMPB3 = 30000;
  	
  	rTCNTB4 = 65500;   
  	
  	rTCON  = rTCON & ~(0xffffff) | 0x1<<1 | 0x1<<9 | 0x1<<13 | 0x1<<17 | 0x1<<21 ; //Manual update 
  	
  	Uart_Printf("\nTimer 0 DMA Request Test\n\n");
  	
  	rTCON = 0x1 | 0x1<<3; //Auto reload, Start
   	for(i=0 ; i < 4 ; i++)
   	DMA_M2M(0,_NONCACHE_STARTADDRESS,_NONCACHE_STARTADDRESS+0x800000,0x80000,0,0); //byte,single
	rTCON  = 0x0; //Timer Stop

	Uart_Printf("\nTimer 1 DMA Request Test\n\n");
  	
  	rTCFG1 = rTCFG1 & ~(0xffffff) | 0x3 << 4 | 0x2 << 20; //Mux0 1/16, DMA Request Channel 2
  	rTCON = 0x1<<8 | 0x1<<11; //Auto reload, Start
  	for(i=0 ; i < 4 ; i++) 
   	DMA_M2M(2,_NONCACHE_STARTADDRESS,_NONCACHE_STARTADDRESS+0x800000,0x80000,0,0); //byte,single
	rTCON  = 0x0; 
	
	Uart_Printf("\nTimer 2 DMA Request Test\n\n");
  	
  	rTCFG1 = rTCFG1 & ~(0xffffff) | 0x3 << 8 | 0x3 << 20; //Mux0 1/16, DMA Request Channel 3
  	rTCON = 0x1<<12 | 0x1<<15; //Auto reload, Start
  	for(i=0 ; i < 4 ; i++) 
   	DMA_M2M(3,_NONCACHE_STARTADDRESS,_NONCACHE_STARTADDRESS+0x800000,0x80000,0,0); //byte,single
	rTCON  = 0x0; 

	Uart_Printf("\nTimer 3 DMA Request Test\n\n");
  	
  	rTCFG1 = rTCFG1 & ~(0xffffff) | 0x3 << 12 | 0x4 << 20; //Mux0 1/16, DMA Request Channel 0
  	rTCON = 0x1<<16 | 0x1<<19; //Auto reload, Start
  	for(i=0 ; i < 4 ; i++) 
   	DMA_M2M(0,_NONCACHE_STARTADDRESS,_NONCACHE_STARTADDRESS+0x800000,0x80000,0,0); //byte,single
	rTCON  = 0x0; 

	Uart_Printf("\nTimer 4 DMA Request Test\n\n");
  	
  	rTCFG1 = rTCFG1 & ~(0xffffff) | 0x3 << 16 | 0x5 << 20; //Mux0 1/16, DMA Request Channel 2
  	rTCON = 0x1<<20 | 0x1<<22; //Auto reload, Start
  	for(i=0 ; i < 4 ; i++) 
   	DMA_M2M(2,_NONCACHE_STARTADDRESS,_NONCACHE_STARTADDRESS+0x800000,0x80000,0,0); //byte,single
	rTCON  = 0x0;
	
	Uart_Printf("Press any key\n");      
	while(!Uart_Getch());       //Key board press check      

}
Example #17
0
void Test_TimerInt(void)
{
    variable0 = 0;variable1 = 0;variable2 = 0;variable3 = 0;variable4 = 0;
		
	/* Timer0,1,2,3,4 Interrupt service is available */ 
    rINTMSK = ~(BIT_TIMER4 | BIT_TIMER3 | BIT_TIMER2 | BIT_TIMER1 | BIT_TIMER0);
	// Uart_Printf("rINTMSK (After)  = 0x%8x   <= Timer4,3,2,1 Bit[14:10]\n",rINTMSK);

    /* Timer0,1,2,3,4 Interrupt Service Routine Entry Point Determine */ 
    pISR_TIMER0 = (int)Timer0Done;
    pISR_TIMER1 = (int)Timer1Done;
    pISR_TIMER2 = (int)Timer2Done;
    pISR_TIMER3 = (int)Timer3Done;
    pISR_TIMER4 = (int)Timer4Done;

    Uart_Printf("\n[Timer 0,1,2,3,4 Interrupt Test]\n\n");

    rTCFG0 = rTCFG0 & ~(0xffffff) | 0xff | 0xff<<8; //Dead zone=0,Prescaler1=255(0x0f),Prescaler0=255(0x0f)
    rTCFG1  =rTCFG1 & ~(0xffffff) | 0x001233; //All interrupt,Mux4=1/2,Mux3=1/4,Mux2=1/8,Mux1=1/16,Mux0=1/16
	
    rTCNTB0 = 30000;         
    rTCNTB1 = 30000;           
    rTCNTB2 = 30000;           
    rTCNTB3 = 30000;        
    rTCNTB4 = 30000;         
    
    rTCMPB0 = 15000;
    rTCMPB1 = 15000;
    rTCMPB2 = 15000;
    rTCMPB3 = 15000;
    
    rTCON  = rTCON & ~(0xffffff) | 0x1<<1 | 0x1<<9 | 0x1<<13 | 0x1<<17 | 0x1<<21 ; //Manual update 	
    
   
    rTCON  = rTCON & ~(0xffffff) | 0x1 | 0x1<<3 ; //Timer 0 Start, Auto-reload 
    rTCON  = rTCON | 0x1<<8 | 0x1<<11 ; //Timer 1 Start, Auto-reload
    rTCON  = rTCON | 0x1<<12 | 0x1<<15 ; //Timer 2 Start, Auto-reload
    rTCON  = rTCON | 0x1<<16 | 0x1<<19 ; //Timer 3 Start, Auto-reload
    rTCON  = rTCON | 0x1<<20 | 0x1<<22 ; //Timer 4 Start, Auto-reload   
    
    //Auto reload,Inverter off,No operation,Dead zone disable,Start
	
    while(1)
    {
     if(variable4 == 8)
     break;
    }
      
    //Delay(1); //To compensate timer error(<1 tick period)
    
    rTCON = 0x0; //Stop Timers
   
    if(variable4==8 && variable3==4 && variable2==2 && variable1==1 && variable0==1)
    {
        Uart_Printf("Timer 0,1,2,3,4 Auto-reload Interrupt Test => OK!\n");
    }        
    else
    {
        Uart_Printf("Timer 0,1,2,3,4 Auto-reload Interrupt Test => Fail............\n");
    }    
    Uart_Printf("Timer0: %d (=1)\nTimer1: %d (=1)\nTimer2: %d (=2)\nTimer3: %d (=4)\nTimer4: %d (=8)\n",
        variable0,variable1,variable2,variable3,variable4);        
	
	/* OneShot Test */
  	variable0 = 0;variable1 = 0;variable2 = 0;variable3 = 0;variable4 = 0;
  	
  	rTCON   = rTCON & ~(0xffffff) | 0x6aaa0a;         
  	//Auto reload, Inverter off, Manual update, Dead zone disable, Stop  
    rTCON   = rTCON & ~(0xffffff) | 0x1 |(0x1)<<8| (0x1)<<12 | (0x1)<<16 | (0x1)<<20 ; 
    //T0,1,2,3,4= One-shot,Inverter off,No operation,Dead zone disable,Start

	while(variable0 == 0);     
    
    Delay(1); //To compensate timer error(<1 tick period)
    rTCON = 0x0; //One-shot, Inverter off, No operation, Dead zone disable, Stop
   
    if(variable4==1 && variable3==1 && variable2==1 && variable1==1 && variable0==1)
    {
        Uart_Printf("Timer 0,1,2,3,4 One-shot Interrupt Test => OK!\n");
    }        
    else
    {
        Uart_Printf("Timer 0,1,2,3,4 One-shot Interrupt Test => Fail............\n");
    }    
    	Uart_Printf("Timer0: %d (=1)\nTimer1: %d (=1)\nTimer2: %d (=1)\nTimer3: %d (=1)\nTimer4: %d (=1)\n",
        variable0,variable1,variable2,variable3,variable4);        

	/* Timer0,1,2,3,4 Interrupt Service is masked */
    rINTMSK |= (BIT_TIMER4 | BIT_TIMER3 | BIT_TIMER2 | BIT_TIMER1 | BIT_TIMER0); 
	Uart_Printf("Press any key\n");      
	while(!Uart_Getch());       //Key board press check      

}
Example #18
0
// SMDK2410 EINT S/W
// EINT0/2/11/19
void Test_Eint(void)
{
    int i;
    int extintMode;

    Uart_Printf("[External Interrupt Test through PF0/2/11/19]\n");

    Uart_Printf("1.L-LEVEL  2.H-LEVEL  3.F-EDGE  4.R-EDGE  5.B-EDGE\n");
    Uart_Printf("Select the external interrupt type.\n");
    extintMode=Uart_Getch();

    //extintMode='3';
    rGPFCON = (rGPFCON & 0xffcc)|(1<<5)|(1<<1);		//PF0/2 = EINT0/2
    rGPGCON = (rGPGCON & 0xff3fff3f)|(1<<23)|(1<<7);	//PG3/11 = EINT11/19
     
    switch(extintMode)
    {
    case '1':
    	rEXTINT0 = (rEXTINT0 & ~((7<<8)  | (0x7<<0))) | 0x0<<8 | 0x0<<0; //EINT0/2=low level triggered
	rEXTINT1 = (rEXTINT1 & ~(7<<12)) | 0x0<<12; //EINT11=low level triggered
	rEXTINT2 = (rEXTINT2 & ~(7<<12)) | 0x0<<12; //EINT19=low level triggered
    	break;
    case '2':
    	rEXTINT0 = (rEXTINT0 & ~((7<<8)  | (0x7<<0))) | 0x1<<8 | 0x1<<0; //EINT0/2=high level triggered
	rEXTINT1 = (rEXTINT1 & ~(7<<12)) | 0x1<<12; //EINT11=high level triggered
	rEXTINT2 = (rEXTINT2 & ~(7<<12)) | 0x1<<12; //EINT19=high level triggered
    	break;
    case '3':
    	rEXTINT0 = (rEXTINT0 & ~((7<<8)  | (0x7<<0))) | 0x2<<8 | 0x2<<0; //EINT0/2=falling edge triggered
	rEXTINT1 = (rEXTINT1 & ~(7<<12)) | 0x2<<12; //EINT11=falling edge triggered
	rEXTINT2 = (rEXTINT2 & ~(7<<12)) | 0x2<<12; //EINT19=falling edge triggered
    	break;
    case '4':
    	rEXTINT0 = (rEXTINT0 & ~((7<<8)  | (0x7<<0))) | 0x4<<8 | 0x4<<0; //EINT0/2=rising edge triggered
	rEXTINT1 = (rEXTINT1 & ~(7<<12)) | 0x4<<12; //EINT11=rising edge triggered
	rEXTINT2 = (rEXTINT2 & ~(7<<12)) | 0x4<<12; //EINT19=rising edge triggered
     	break;
    case '5':
    	rEXTINT0 = (rEXTINT0 & ~((7<<8)  | (0x7<<0))) | 0x6<<8 | 0x6<<0; //EINT0/2=both edge triggered
	rEXTINT1 = (rEXTINT1 & ~(7<<12)) | 0x6<<12; //EINT11=both edge triggered
	rEXTINT2 = (rEXTINT2 & ~(7<<12)) | 0x6<<12; //EINT19=both edge triggered
    	break;
    default:
    	break;
    }

    Uart_Printf("Press the EINT0/2/11/19 buttons or Press any key to exit.\n");

    pISR_EINT0=(U32)Eint0Int;
    pISR_EINT2=(U32)Eint2Int;
    pISR_EINT8_23=(U32)Eint11_19;

    rEINTPEND = 0xffffff;
    rSRCPND = BIT_EINT0|BIT_EINT2|BIT_EINT8_23; //to clear the previous pending states
    rINTPND = BIT_EINT0|BIT_EINT2|BIT_EINT8_23;
    
    rEINTMASK=~( (1<<11)|(1<<19) );
    rINTMSK=~(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);
    
    Uart_Getch();
    
    rEINTMASK=0xffffff;
    rINTMSK=BIT_ALLMSK;
}
Example #19
0
void PlayMusicTest(void)
{
	int size, i, j, err;
	WAVEFORMATEX fmt;
	WAVEHDR hdr[2048];
	HWAVEOUT hwo;	
	U8 pause = 0;
	U8 mute = 0;	
	U32 volume;
	unsigned char *buf;

	downloadAddress = _NONCACHE_STARTADDRESS;
	buf = (unsigned char *)downloadAddress ;
	for( i = 0; i < 243552; i++ )  buf[i] = WindowsXP_Wav[i] ;
	downloadFileSize = 243552 ;

	size = *(U32 *)(downloadAddress+0x28);
	i = 0;							
	
	while(size>0)
	{
		hdr[i].lpData = (LPSTR)(downloadAddress+0x2c+i*BUF_SIZE);
		hdr[i].dwBufferLength = (size>BUF_SIZE)?BUF_SIZE:size;	
		size -= BUF_SIZE;
		i++;
	}
	
	fmt.wFormatTag		= WAVE_FORMAT_PCM;
	fmt.nChannels		= *(U16 *)(downloadAddress+0x16);
	fmt.nSamplesPerSec	= *(U32 *)(downloadAddress+0x18);
	fmt.nAvgBytesPerSec	= *(U32 *)(downloadAddress+0x1c);
	fmt.nBlockAlign		= *(U16 *)(downloadAddress+0x20);
	fmt.wBitsPerSample	= *(U16 *)(downloadAddress+0x22);
	Uart_Printf("\nSample Rate = %d, Channels = %d, %dBitsPerSample, size = %d\n",
			fmt.nSamplesPerSec, fmt.nChannels, fmt.wBitsPerSample, *(U32 *)(downloadAddress+0x28));
	
	hwo = 0;
	err = waveOutOpen(&hwo,
				0,
				&fmt,
				0,
				0,
				0);
	Uart_Printf("\nerr = %x\n", err);
	for(j=0;j<i;j++)
		waveOutWrite(0,	&hdr[j], 0);
		
	Uart_Printf("Now playing the file\n");
	Uart_Printf("Press 'ESC' to quit, '+' to inc volume, '-' to dec volume, 'm' to mute, 'p' to pause\n");		
	
	waveOutGetVolume(0,	&volume);
	while(1)
	{
		U8 key = Uart_Getch();
		if( key == ESC_KEY )
			break;
		if(key=='p')
		{
			pause ^= 1;
			if(pause&1)
				waveOutPause(0);
			else
				waveOutRestart(0);				
		}
		if(key=='m')
		{						
			mute ^= 1;
			if(mute&1)									
				waveOutSetVolume(0, 0);			
			else
				waveOutSetVolume(0, volume);			
		}
		if((key=='+')&&(volume<=64535))		
		{
			volume += 1000;
			waveOutSetVolume(0, volume);
		}
		if((key=='-')&&(volume>=1000))
		{
			volume -= 1000;
			waveOutSetVolume(0, volume);
		}	
					
	}					
	waveOutClose(0);
}
Example #20
0
void RecordTest(void)
{
	int size, i, j, err;
	WAVEFORMATEX fmt;
	WAVEHDR hdr[2048];
	HWAVEIN hwi = 1;	
	
	Uart_Printf( "\nThe Frequency of record is 48KHz\n" );
	fmt.nSamplesPerSec = 48000;		//²ÉÑùƵÂÊΪ48KHz
	fmt.wBitsPerSample = 16;

	fmt.wFormatTag		= WAVE_FORMAT_PCM;
	fmt.nChannels		= 2;
	fmt.nBlockAlign     = fmt.wBitsPerSample*fmt.nChannels/8;	
	fmt.nAvgBytesPerSec	= fmt.nSamplesPerSec*fmt.nBlockAlign;
	
	downloadAddress  = 0x30800000;//_NONCACHE_STARTADDRESS;
	downloadFileSize = size = 16*1024*1024;	
	i = 0;
	
	while(size>0)
	{
		hdr[i].lpData = (LPSTR)(downloadAddress+0x2c+i*BUF_SIZE);
		hdr[i].dwBufferLength = (size>BUF_SIZE)?BUF_SIZE:size;	
		size -= BUF_SIZE;
		i++;
	}	
	
	*(U16 *)(downloadAddress+0x14) = fmt.wFormatTag;
	*(U16 *)(downloadAddress+0x16) = fmt.nChannels;
	*(U32 *)(downloadAddress+0x18) = fmt.nSamplesPerSec;
	*(U32 *)(downloadAddress+0x1c) = fmt.nAvgBytesPerSec;
	*(U16 *)(downloadAddress+0x20) = fmt.nBlockAlign;
	*(U16 *)(downloadAddress+0x22) = fmt.wBitsPerSample;
	*(U32 *)(downloadAddress+0x28) = downloadFileSize;
	
	err = waveInOpen(&hwi,
				0,
				&fmt,
				0,
				0,
				0);
	Uart_Printf("\nerr = %x\n", err);
	
	for(j=0;j<i;j++)
		if(waveInAddBuffer(hwi, &hdr[j], 0))
			Uart_Printf("Add buffer error!");
			
	Uart_Printf("Added %d buffer for record\n", i);
	Uart_Printf("Press any to Record\n");
	Uart_Getch();
	
	Uart_Printf("Now begin recording, Press 'ESC' to quit\n");	
	waveInStart(hwi);
	
	while(1)
	{
		U8 key;
		
		key = Uart_GetKey();
		if( key == ESC_KEY )
			break;
			
//		Uart_Printf("%x,%x,%x,%x,%x,%x,%x\n", rDISRC2, rDISRCC2, rDIDST2, rDIDSTC2, rDCON2, rDSTAT2, rDMASKTRIG2);		
//		Uart_Printf("%x,%x,%x,%x\n", rIISCON, rIISMOD, rIISPSR, rIISFCON);
	}		
	waveInClose(hwi);
}
Example #21
0
void comdownload(void)
{
	ULONG size;
	UCHAR *buf;
	USHORT checksum;

	puts("\nNow download file from uart0...\n");
	downloadAddress = _NONCACHE_STARTADDRESS;
	buf  = (UCHAR *)downloadAddress;
	temp = buf-4;

	Uart_GetKey();

#ifdef	USE_UART_INT
	pISR_UART0 = (ULONG)Uart0RxInt;		//串口接收数据中断
	ClearSubPending(BIT_SUB_RXD0);
	ClearPending(BIT_UART0);
	EnableSubIrq(BIT_SUB_RXD0);
	EnableIrq(BIT_UART0);
#endif

	while((ULONG)temp<(ULONG)buf)
    {
 #ifdef	USE_UART_INT
        Led_Display(0);
        Delay(1000);
        Led_Display(15);
        Delay(1000);
#else
		*temp++ = Uart_Getch();
#endif
    }							//接收文件长度,4 bytes

	size  = *(ULONG *)(buf-4);
	downloadFileSize = size-6;

#ifdef	USE_UART_INT
    printf("Download File Size = %d\n", size);
#endif

	while(((ULONG)temp-(ULONG)buf)<(size-4))
	{
#ifdef	USE_UART_INT
		Led_Display(0);
        Delay(1000);
        Led_Display(15);
        Delay(1000);
#else
		*temp++ = Uart_Getch();
#endif
	}

#ifdef	USE_UART_INT
	DisableSubIrq(BIT_SUB_RXD0);
	DisableIrq(BIT_UART0);
#endif

#ifndef	USE_UART_INT
	printf("Download File Size = %d\n", size);
#endif

	checksum = 0;
	for(size=0; size<downloadFileSize; size++)
		checksum += buf[size];
	if(checksum!=(buf[size]|(buf[size+1]<<8))) {
		puts("Checksum fail!\n");
		return;
	}

	puts("Are you sure to run? [y/n]\n");
	while(1)
	{
		UCHAR key = getch();
		if(key=='n')
			return;
		if(key=='y')
			break;
	}

	call_linux(0, 193, downloadAddress);
}
Example #22
0
void Test_HoldMode(void)
{
  
    Uart_Printf("[ Power Saving Mode by Stopping Each Block ]\n");
    Uart_Printf("LCD ENVID is turned off.\n");
    Lcd_EnvidOnOff(0);
    Uart_Printf("Check the current cunsumption. Type any key to proceed.\n");	
    //Except GPIO,UART0
    rCLKCON=0x7fff0;
    Uart_Getch();

    Uart_Printf("NFC off.\n");
    rCLKCON&=~(1<<4);
    Uart_Getch();

    Uart_Printf("LCD off.\n");
    rCLKCON&=~(1<<5);
    Lcd_EnvidOnOff(0);
    Uart_Getch();
    
    Uart_Printf("USB host off(DP0/DN0 is suspended).\n");
    rCLKCON&=~(1<<6);
    rMISCCR|=(1<<12); //USB port0 = suspend
    Uart_Getch();
    
    Uart_Printf("USB device off(DP1/DN1 is also suspended).\n");
    rCLKCON&=~(1<<7);
    rMISCCR|=(1<<13); //USB port1 = suspend
    Uart_Getch();

    Uart_Printf("PWM Timer off.\n");
    rCLKCON&=~(1<<8);
    Uart_Getch();

    Uart_Printf("SDI off.\n");
    rCLKCON&=~(1<<9);
    Uart_Getch();

    Uart_Printf("UART1 off.\n");
    rCLKCON&=~(1<<11);
    Uart_Getch();

    Uart_Printf("UART2 off.\n");
    rCLKCON&=~(1<<12);
    Uart_Getch();

    Uart_Printf("RTC_control off.\n");
    rCLKCON&=~(1<<14);
    Uart_Getch();
    
    Uart_Printf("ADC off.\n");
    rADCCON|=(1<<2);
    rCLKCON&=~(1<<15);
    Uart_Getch();
    
    Uart_Printf("IIC off.\n");
    rCLKCON&=~(1<<16);
    Uart_Getch();
    
    Uart_Printf("IIS off.\n");
    rCLKCON&=~(1<<17);
    Uart_Getch();
    
    Uart_Printf("SPI off.\n");
    rCLKCON&=~(1<<18);
    Uart_Getch();
    
    Uart_Printf("Return to Normal Mode.\n");	    
    rCLKCON=0xffff0; 
    rADCCON&=(1<<2);
    rMISCCR&=~((1<<12)|(1<<13)); //USB port0,1 = normal
    Lcd_EnvidOnOff(1);
}
Example #23
0
int main(void)
{


	main_init();


	while(1)
	{                                    //키보드로부터 데이터를 수신

		

		switch(Uart_Getch(1))
		{
		
	
		case 'A':
		
		OCR1C=700;
		count=45;
		_delay_ms(1000);
		Uart_Putch(1, 'A');
		Uart_Putch(1, count);
		_delay_ms(1000);
		sbi(PORTB,0);   cbi(PORTB,1);//왼쪽 dc정
		sbi(PORTB,3);   cbi(PORTB,2);//오른쪽 dc정
		break;
		
		
		case 'B':
		count=count+5;
		OCR1C=400;
		_delay_ms(1000);
		Uart_Putch(1, 'B');
		Uart_Putch(1, count);
		_delay_ms(1000);
		sbi(PORTB,1);   cbi(PORTB,0);// dc 역
		sbi(PORTB,2);   cbi(PORTB,3);

		break;
	
		case 'C':
		count=100;

		OCR1C=count;

		Uart_Putch(1, 'C');
		Uart_Putch(1, count);
		_delay_ms(1000);
		cbi(PORTB,1);   cbi(PORTB,0);// dc중지
		cbi(PORTB,2);   cbi(PORTB,3);
		break;

	



		}


	}
	return 0;
}