Ejemplo n.º 1
0
void st7565_init(void){
	SIU.PCR[PIN_GLCD_CS].R = OUTPUT; 
    SIU.PCR[PIN_GLCD_RST].R = OUTPUT;
    SIU.PCR[PIN_GLCD_AO].R = OUTPUT;
    SIU.PCR[PIN_GLCD_SID].R = OUTPUT;
    SIU.PCR[PIN_GLCD_SCLK].R = OUTPUT;
                
    	
    if(PIN_GLCD_CS > 0)
    	GPIO_SetState(PIN_GLCD_CS, LOW);
    
    GPIO_SetState(PIN_GLCD_RST, LOW);
    sdelay(1);
    GPIO_SetState(PIN_GLCD_RST, HIGH);
    
	// LCD bias select
	st7565_command(CMD_SET_BIAS_7);
	// ADC select
	st7565_command(CMD_SET_ADC_NORMAL);
	// SHL select
	st7565_command(CMD_SET_COM_NORMAL);
	// Initial display line
	st7565_command(CMD_SET_DISP_START_LINE);
	
	// turn on voltage converter (VC=1, VR=0, VF=0)
	st7565_command(CMD_SET_POWER_CONTROL | 0x4);
	// wait for 50% rising
	mdelay(200);
	
	// turn on voltage regulator (VC=1, VR=1, VF=0)
	st7565_command(CMD_SET_POWER_CONTROL | 0x6);
	// wait >=50ms
	mdelay(200);
	
	// turn on voltage follower (VC=1, VR=1, VF=1)
	st7565_command(CMD_SET_POWER_CONTROL | 0x7);
	// wait
	mdelay(40);
	
	// set lcd operating voltage (regulator resistor, ref voltage resistor)
	st7565_command(CMD_SET_RESISTOR_RATIO | 0x6);
	
	// initial display line
	// set page address
	// set column address
	// write display data

	updateBoundingBox(0, 0, LCDWIDTH-1, LCDHEIGHT-1);
}
Ejemplo n.º 2
0
 int sonarGetDistance(void){	
	static int distanceValue[9]={
			 9999,9999,9999,9999,9999,9999,9999,9999,9999	
	};
	static const int ch =0;	
	unsigned long int tempDistance,temp;
	volatile int i,distance;
	int tempData[9];
	
	switch(sonarStatus){
	case SONAR_WAIT_RISING:
		//sonar trigger
		GPIO_SetState(SONAR0_CONTROL_CH,1);
		for(i=0;i<110;i++);
		GPIO_SetState(SONAR0_CONTROL_CH,0);
		
		SIU.IRER.R = 0x00000001;
		//set rising		
		temp = SIU.IREER.R;
		temp |= (1<<ch);
		SIU.IREER.R = temp;
			
		temp = SIU.IFEER.R;
		temp &= ~(1<<ch);
		SIU.IFEER.R = temp;	
		break;
	case SONAR_WAIT_END:
		sonarStatus = SONAR_WAIT_RISING;	
		break;
	}
	
	tempDistance = counter;
	distance = counterToDistance(tempDistance);
	
	//shift
 	for(i=8;i>0;i--)
 		distanceValue[i] = distanceValue[i-1];
 		
 	distanceValue[0] = distance;	

 	for(i=0;i<9;i++)
 		tempData[i] = distanceValue[i];
 	//median filter
 	distance = medianFilter(tempData,9,5);
 	 	
	return distance;
}
Ejemplo n.º 3
0
int main(void) {
	
	volatile T_ULONG lul_InfLoop = 0;
	volatile T_ULONG lul_Validate = 0;
	volatile T_ULONG lul_ValidateUp = 0;
	volatile T_ULONG lul_ValidateDw = 0;
	
	T_UWORD luw_SwDwState;
	T_UWORD luw_SwUpState;
	
	WL_initModesAndClock();
	WL_EIRQ_Init();
	WL_STM_init();
	WL_GPIO_Init();
	init_ext_ints();
	init_PIT();
	
	asm(" wrteei 1");

   	INTC_InstallINTCInterruptHandler(WL_A_Pinch,EIRQ_2,1); /* vector 32 for STM[2] */
	INTC.CPR.R = 0;
  	  

  /* Loop forever */
  for (;;) {
	  /*------------------------------*/
	  luw_SwDwState = GPIO_GetState(SW_DOWN);
	  
	  if (luw_SwDwState == 1)
	  {
		  lul_Validate = WL_CheckValid();
		  if (lul_Validate == 1)
		  {
			  lul_ValidateDw = WL_CheckAutoManualDw();
		  }
		  else
		  {
			  /*DO NOTHING*/
		  }
	  }
	  else
	  {
		  /*DO NOTHING*/
	  }
	  while (luw_SwDwState == 1){
		  
		  if (lul_ValidateDw == 1)
		  {
			  WL_WinMDw();
		  }
		  else
		  {
			  /*DO NOTHING*/
		  }
		  
		  if (lul_ValidateDw == 0)
		  {
			  WL_WinADw();
		  }
		  else
		  {
			  /*DO NOTHING*/
		  }
		  
		  luw_SwDwState = GPIO_GetState(SW_DOWN);
	  }
	  
	  /*------------------------------*/
	  luw_SwUpState = GPIO_GetState(SW_UP);
	  
	  if (luw_SwUpState == 1)
	  {
		  lul_Validate = WL_CheckValid();
		  if (lul_Validate == 1)
		  {
			  lul_ValidateUp = WL_CheckAutoManualUp();
		  }
		  else
		  {
			  /*DO NOTHING*/
		  }
	  }
	  else
	  {
		  /*DO NOTHING*/
	  }
	  
	  while (luw_SwUpState == 1){
		  
		  if (lul_ValidateUp == 1)
		  {
			  WL_WinMUp();
		  }
		  else
		  {
			  /*DO NOTHING*/
		  }
		  
		  if (lul_ValidateUp == 0)
		  {
			  WL_WinAUp();
		  }
		  else
		  {
			  /*DO NOTHING*/
		  }
		  
		  luw_SwUpState = GPIO_GetState(SW_UP);
	  }
	  
	  GPIO_SetState(LED_DOWN, 0);
	  GPIO_SetState(LED_UP, 0);
	  
	  lul_InfLoop++;
	  
	  WL_SetState();
  }
}