Пример #1
0
int main()
{
	int i;

	/* The clock frequency of systick may be changed by user's application.
	   Please change the value of SYSTICK_CLOCK according to real situration */
#define TT_SYSTICK_CLOCK		22118400
	/* Initialize TinyThread */
	tt_init(TT_SYSTICK_CLOCK);
	
	/* Open LED GPIO for testing */
	DrvGPIO_Open(LED_GPIO_GREEN_GRP, LED_GPIO_GREEN_BIT, E_IO_OUTPUT);
	DrvGPIO_Open(LED_GPIO_RED_GRP, LED_GPIO_RED_BIT, E_IO_OUTPUT);
	DrvGPIO_Open(LED_GPIO_ISP_GRP, LED_GPIO_ISP_BIT, E_IO_OUTPUT);
	DrvGPIO_Open(LED_GPIO_ICE_GRP, LED_GPIO_ICE_BIT, E_IO_OUTPUT);

	/* Create and run thread */
	arg[0].gpio_group = LED_GPIO_RED_GRP;
	arg[1].gpio_group = LED_GPIO_ISP_GRP;
	arg[2].gpio_group = LED_GPIO_ICE_GRP;
	arg[0].gpio_bit = LED_GPIO_RED_BIT;
	arg[1].gpio_bit = LED_GPIO_ISP_BIT;
	arg[2].gpio_bit = LED_GPIO_ICE_BIT;
	for (i = 0; i < THREAD_NUM; ++i)
	{
		tt_sem_init (&join_sem[i], 0);
		arg[i].join_sem = &join_sem[i];

		thread[i] = tt_thread_create("thread",			/* thread Name */
									 0,					/* thread priority */
									 stack[i],			/* stack pointer */
									 sizeof(stack[i]),	/* stack size */
									 thread_entry,		/* thread entry function */
									 (void *)&arg[i]	/* argument for thread entry function */
									 );	
	}
	
	
	/* Join threads.
	 * TinyThread does not support build-in tt_thread_join() 
	 * since it is easy to emulate by a semaphore.
	 */
	for (i = 0; i < THREAD_NUM; ++i)
		tt_sem_down (&join_sem[i]);



	/* Set LED to indicate that run to here */
	DrvGPIO_SetBit(LED_GPIO_RED_GRP, LED_GPIO_RED_BIT);		/* OFF */
	DrvGPIO_SetBit(LED_GPIO_ISP_GRP, LED_GPIO_ISP_BIT);		/* OFF */
	DrvGPIO_SetBit(LED_GPIO_ISP_GRP, LED_GPIO_ISP_BIT);		/* OFF */

	DrvGPIO_ClrBit(LED_GPIO_GREEN_GRP, LED_GPIO_GREEN_BIT);	/* ON */
		
	while(1);
}
Пример #2
0
void absen(){
	uint8_t hasiluart[8];
	clr_all_pannal();

		while(key==2){
	       	DrvGPIO_ClrBit(E_GPC,12);
	       	DrvSYS_Delay(10000);
	       	print_lcd(0,"Tap Kartu Anda");
	       	print_lcd(1,"Pada Reader");
	       	bacarfid();
	       	DrvUART_Read(UART_PORT0,hasiluart,1);
	       	if(hasiluart[0]=='B'){
	       	       	clr_all_pannal();
	       	       	       		    print_lcd(0,"Terima Kasih :)");
	       	       	       		    print_lcd(1,"Tito Alvi");
	       	       	       		    hitungabsen++;
	       	       	       		    			DrvGPIO_ClrBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		        		DrvGPIO_SetBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		        		DrvGPIO_ClrBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		        		DrvGPIO_SetBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		        		DrvGPIO_ClrBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		        		DrvGPIO_SetBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		    print_lcd(0,"Terima Kasih :)");
	       	       	       			DrvSYS_Delay(5000000);

	       	       	       			main();
	       	       	}
	       	if(hasiluart[0]!='B'){
	       		clr_all_pannal();
	       		print_lcd(0,"Maaf :(");
	       		print_lcd(1,"Nama kamu gak");
	       		print_lcd(2,"Ada di Basis Data");
	       		print_lcd(3,"COBA LAGI !!!");
	       		DrvGPIO_ClrBit(E_GPB,11);
	       			       		DrvSYS_Delay(500000);
	       			       		DrvGPIO_SetBit(E_GPB,11);
	       			       		DrvSYS_Delay(100000);
	       			       		DrvGPIO_ClrBit(E_GPB,11);
	       			       		DrvSYS_Delay(500000);
	       			       		DrvGPIO_SetBit(E_GPB,11);
	       			       		DrvSYS_Delay(100000);
	       			       	delay(5000000);
	       		DrvSYS_Delay(2000000);
	       		absen();
	       	}



		}
}
Пример #3
0
void thread_entry(void *arg)
{
	THREAD_ARG_T *the_arg = (THREAD_ARG_T *)arg;

	my_sem_down (the_arg->sem);
	while (1)
	{
		int cur_ticks = tt_get_ticks ();

		if (cur_ticks % 1024 < 4)
		{
			my_sem_up (the_arg->sem);
			//tt_thread_yield ();
			//tt_sleep(1);
			tt_msleep(rand()%64);
			my_sem_down (the_arg->sem);
		}

		
		if(cur_ticks % 64 < 32)
			DrvGPIO_SetBit(the_arg->gpio_group, the_arg->gpio_bit);	/* Turn off LED */
		else
			DrvGPIO_ClrBit(the_arg->gpio_group, the_arg->gpio_bit);	/* Turn on LED */
	}
}
Пример #4
0
void WriteLCM(int32_t data_comm,int32_t in_com)			//1 for data,0 for comm
{  
   int32_t com,i,j,std;
       DrvSYS_Delay(100);
   	    	com = in_com;

		  DrvGPIO_ClrBit( E_GPC,3); //LCD_EN = 0;
    	  DrvGPIO_SetBit(E_GPC,2);//LCD_STD = 1;
	     	for(i=5;i>0;i--)
			{
  			DrvGPIO_SetBit( E_GPC,3); //LCD_EN = 1;
			DrvGPIO_ClrBit( E_GPC,3); //LCD_EN = 0;			
			}

  			DrvGPIO_ClrBit(E_GPC,2);//LCD_STD = 0;
   			DrvGPIO_SetBit( E_GPC,3); //LCD_EN = 1;
			DrvGPIO_ClrBit( E_GPC,3); //LCD_EN = 0;

			if(data_comm==1)
				DrvGPIO_SetBit(E_GPC,2);//LCD_STD = 1;	   11111010
			else
    			DrvGPIO_ClrBit(E_GPC,2);//LCD_STD = 0;	   11111000
   			DrvGPIO_SetBit( E_GPC,3); //LCD_EN = 1;
			DrvGPIO_ClrBit( E_GPC,3); //LCD_EN = 0;

      			DrvGPIO_ClrBit(E_GPC,2);//LCD_STD = 0;
			DrvGPIO_SetBit( E_GPC,3); //LCD_EN = 1;
			DrvGPIO_ClrBit( E_GPC,3); //LCD_EN = 0;
  
	for(j=2;j>0;j--)
	{
		for(i=4;i>0;i--)
		{
			
			std=com&0x80;
			if(std==0x80)
				DrvGPIO_SetBit(E_GPC,2);   //LCD_STD = 1;	
			else
				DrvGPIO_ClrBit(E_GPC,2);   //LCD_STD = 0;	
				com=com<<1;
			DrvGPIO_SetBit( E_GPC,3); //LCD_EN = 1;
			DrvGPIO_ClrBit( E_GPC,3); //LCD_EN = 0;
		}
		DrvGPIO_ClrBit(E_GPC,2);   //LCD_STD = 0;
		for(i=4;i>0;i--)
		{
			DrvGPIO_SetBit( E_GPC,3); //LCD_EN = 1;
			DrvGPIO_ClrBit( E_GPC,3); //LCD_EN = 0;
		}
	}
} 
Пример #5
0
int main(void)
{
	DrvUART_Close(UART_PORT0);
	//------------------
    Init();
    Initial_pannel();
    clr_all_pannal();
    while(1)
       {
    	seg_display(hitung);

    	/*UNLOCKREG();
    	SYSCLK->PWRCON.XTL12M_EN = 1;//Enable 12MHz Crystal
    	SYSCLK->CLKSEL0.HCLK_S = 0;
    	LOCKREG();*/
    	servo_tutup();
    	//DrvSYS_Delay(10);
    	Initial_pannel();
    	DrvGPIO_ClrBit(E_GPD, 14);

    	print_lcd(0,"Selamat Datang");
    	print_lcd(1,"1. Kumpul Borang");
    	print_lcd(2,"2. Absen Doang");
    	print_lcd(3," > Silakan Tekan:");
    	//DrvSYS_Delay(10000);

    	key=Scankey();
    	while(key==4){
           	       		bacarfid();
           	       	}


       	while(key==1){
      kumpul();
       	}

       	while (key==2){
       		absen();
       print_lcd(2,"3. ADC=");
       	DrvADC_StartConvert();
       	adc=DrvADC_GetConversionData(7);
       	Show_Word(3,5,adc/1000+'0');
       	Show_Word(3,6,adc%1000/100+'0');
       	Show_Word(3,7,adc%100/10+'0');
       	Show_Word(3,8,adc%10+'0');

       	}




       	DrvGPIO_SetBit(E_GPC,12);
       	DrvSYS_Delay(1000);


       }
}
Пример #6
0
void RX_Mode(void)
{     
	DrvGPIO_ClrBit(E_GPB, 0x01);	
	nrf_writebuf(W_REGISTER+TX_ADDR,(uchar*)TxAddr,5);//写TX节点地址 
	nrf_writebuf(W_REGISTER+RX_ADDR_P0,(uchar*)RxAddr,5); //设置TX节点地址,主要为了使能ACK  
	
	nrf_write(W_REGISTER + EN_AA, 0x01); // Enable Auto.Ack:Pipe0
	nrf_write(W_REGISTER + EN_RXADDR, 0x01); // Enable Pipe0
	nrf_write(W_REGISTER + RF_CH, 40); // Select RF channel 40
	nrf_write(W_REGISTER + RX_PW_P0, 4);
	nrf_write(W_REGISTER + RF_SETUP, 0x0f);
	nrf_write(W_REGISTER + CONFIG, 0x0f); // Set PWR_UP bit, enable CRC(2 bytes)
	DrvGPIO_SetBit(E_GPB,1);	// This device is now ready to receive one packet of 16 bytes payload from a TX device
// '3443101001', with auto acknowledgment, retransmit count of 10, RF channel 40 and
}
Пример #7
0
void thread_entry(void *arg)
{
	THREAD_ARG_T *the_arg = (THREAD_ARG_T *)arg;

	while(1)
	{
		int i;
		int value;

		/* Show LED so that users know that the thread is running. */
		int cur_ticks = tt_get_ticks ();
		if(cur_ticks % 64 < 32)
			DrvGPIO_SetBit(the_arg->gpio_group, the_arg->gpio_bit);	/* Turn off LED */
		else
			DrvGPIO_ClrBit(the_arg->gpio_group, the_arg->gpio_bit);	/* Turn on LED */


			
		/* Lock the mutex */
		tt_rmutex_lock(the_arg->mutex);

		/* Update value */
		for(i = 0; i < THREAD_NUM; ++i)
			++the_arg->value[i];
	
		/* (Recursive) Lock the mutex again */
		tt_rmutex_lock(the_arg->mutex);
		
		/* Check the lock operation by checking value */
		value = the_arg->value[0];
		for(i = 0; i < THREAD_NUM; ++i)
		{
			if(the_arg->value[i] != value)
			{
				/* To run to here indicates that the test for mutex lock has been failed. */
				tt_printf("Failed\n");
				while(1);
			}
		}
		
		/* (Recursive) Unlock the mutex */
		tt_rmutex_unlock(the_arg->mutex);
	
		/* Unlock the mutex */
		tt_rmutex_unlock(the_arg->mutex);
	}
}
Пример #8
0
void LCMInit(void)		//LCM初始化
{ 
	DrvGPIO_ClrBit(E_GPC,5 );
    DrvSYS_Delay(6000);
 	DrvGPIO_SetBit(E_GPC,5 );  
    WriteLCM(0,0x30)	;			 //设接口数据位数(DL),显示行数(L),及字型(F)
    DrvSYS_Delay(6000);
	WriteLCM(0,0x01)	;		 //清屏指令
    DrvSYS_Delay(6000);	
	WriteLCM(0,0x0c)	;	   //设整体显示开关(D),光标开关关(C),及光标位的字符不闪耀(B)
    DrvSYS_Delay(6000);
	WriteLCM(0,0x06)	;	   //7设光标移动方向并指定整体显示是否移动
    DrvSYS_Delay(6000);
	WriteLCM(0,0x01)	;		//清屏指令
    DrvSYS_Delay(6000); 	
	WriteLCM(0,0x80)	;		//设DDRAM地址,设置后DDRAM数据被发送和接收
}
Пример #9
0
/*****************NRF????????????******************************/
void NRFSetTxMode(uchar *TxDate)
{//????		 
		char ret;
		DrvGPIO_ClrBit(E_GPB, 1);	
  	nrf_writebuf(W_REGISTER+TX_ADDR,(uchar*)TxAddr,5);//写TX节点地址 
  	nrf_writebuf(W_REGISTER+RX_ADDR_P0,(uchar*)TxAddr,5); //设置TX节点地址,主要为了使能ACK
		ret=nrf_read(STATUS);
		delay_s();
  	nrf_write(W_REGISTER+STATUS,0x10);     //使能通道0的自动应答    
		ret=nrf_read(STATUS);
	
  	nrf_write(W_REGISTER+EN_AA,0x01);     //使能通道0的自动应答    
  	nrf_write(W_REGISTER+EN_RXADDR,0x01); //使能通道0的接收地址  
  	nrf_write(W_REGISTER+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次
  	nrf_write(W_REGISTER+RF_CH,40);       //设置RF通道为40
  	nrf_write(W_REGISTER+RF_SETUP,0x0f);  //设置TX发射参数,0db增益,2Mbps,低噪声增益开启   
  	nrf_write(W_REGISTER+CONFIG,0x0e);    //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断
		DrvGPIO_SetBit(E_GPB,1);	// This device is now ready to receive one packet of 16 bytes payload from a TX device  
}		  
Пример #10
0
void thread_entry(void *arg)
{
	THREAD_ARG_T *the_arg = (THREAD_ARG_T *)arg;

	int start_ticks = tt_get_ticks ();
#define THREAD_RUN_MSEC 3000
	while (1)
	{
		int cur_ticks = tt_get_ticks ();
		if (tt_ticks_to_msec (cur_ticks - start_ticks) >= THREAD_RUN_MSEC)
			break;

		if(cur_ticks % 64 < 32)
			DrvGPIO_SetBit(the_arg->gpio_group, the_arg->gpio_bit);	/* Turn off LED */
		else
			DrvGPIO_ClrBit(the_arg->gpio_group, the_arg->gpio_bit);	/* Turn on LED */
	}

	tt_sem_up (the_arg->join_sem);
}
Пример #11
0
/*************************************************************************//**
 * @brief   Delay 1 second exactly with timer.
 * @param   None
 * @return  None
*****************************************************************************/
void Delay1Sec(void)
{
    UNLOCKREG();
    SYSCLK->PWRCON.XTL12M_EN = 1;
    /* Waiting for 12M Xtal stable */
    while (DrvSYS_GetChipClockSourceStatus(E_SYS_XTL12M) != 1);
    
    /*Configure gpio p3.6 as OUTPUT for led*/
    DrvGPIO_Open(E_PORT3, E_PIN6, E_IO_OUTPUT);
    /* Example code */
    DrvTIMER_Init();
    DrvTIMER_Open(E_TMR0, 1000, E_PERIODIC_MODE);                   
    DrvTIMER_EnableInt(E_TMR0);     
    DrvTIMER_Start(E_TMR0);             /* Start counting */

    while (1)
    {
        DrvGPIO_SetBit(E_PORT3, E_PIN6);
        DrvTIMER_Delay(E_TMR0, 1000);       /*Delay 1000/1000 Sec*/
        DrvGPIO_ClrBit(E_PORT3, E_PIN6);
        DrvTIMER_Delay(E_TMR0, 1000);
    }
}
Пример #12
0
unsigned char NRF24L01_TxPacket(unsigned char *txbuf)
{
	unsigned char sta;
	DrvGPIO_ClrBit(E_GPB, 1);	
  nrf_writebuf(W_TX_PAYLOAD,txbuf,TX_DATA_WITDH);//写数据到TX BUF  32个字节
 	DrvGPIO_SetBit(E_GPB,1);	// This device is now ready to receive one packet of 16 bytes payload from a TX device
	while(DrvGPIO_GetBit(E_GPB, 2)!=0);//等待发送完成
	sta=nrf_read(STATUS);  //读取状态寄存器的值	   
	nrf_write(W_REGISTER+STATUS,sta); //清除TX_DS或MAX_RT中断标志
	if(sta&0x10)//达到最大重发次数
	{
		nrf_wf(FLUSH_TX);//清除TX FIFO寄存器 
			nrf_write(W_REGISTER+STATUS,sta); //清除TX_DS或MAX_RT中断标志	
		sta=nrf_read(STATUS);  //读取状态寄存器的值	   
	
		return 0x10; 
	}
	if(sta&0x20)//发送完成
	{
		return 0x20;
	}
	return 0xff;//其他原因发送失败
}
Пример #13
0
//*****************************************************************************
//
//! \brief GPIO test.
//!
//! \param None  
//!
//! \return None  
//
//*****************************************************************************
void GpioTest(void)
{
    int32_t i32Err;

    UNLOCKREG();
    //
    // Enable high external clock and use it as system clock (HCLK)
    //
	  DrvSYS_Open(XTL_CLK);
	  
    //
    // Waiting for 12M Xtal stable
    //
    while (DrvSYS_GetChipClockSourceStatus(XTL_CLK) != 1);

    //
    // Configure Bit0 in Port1 to Output pin and Bit4 in Port3 to Input 
    // pin then close it                  
    //

    DrvGPIO_Open(E_PORT1, E_PIN0, E_IO_OUTPUT);
    DrvGPIO_Open(E_PORT3, E_PIN4, E_IO_INPUT);

    i32Err = 0;

    DrvGPIO_ClrBit(E_PORT1, E_PIN0);
    if (DrvGPIO_GetBit(E_PORT3, E_PIN4) != 0)
    {
        i32Err = 1;
    }

    DrvGPIO_SetBit(E_PORT1, E_PIN0);
    if (DrvGPIO_GetBit(E_PORT3, E_PIN4) != 1)
    {
        i32Err = 1;
    }

    DrvGPIO_Close(E_PORT1, E_PIN0);
    DrvGPIO_Close(E_PORT3, E_PIN4);

    //
    // GPIO Interrupt Test:P15, P22, P32(INT0) and P52(INT1) are used to test 
    // interrupt and control LEDs(P30)
    //

    //
    //Configure P30 for LED control
    //
    DrvGPIO_Open(E_PORT3, E_PIN0, E_IO_OUTPUT);

    //
    //Configure P15 as general GPIO interrupt
    //
    DrvGPIO_Open(E_PORT1, E_PIN5, E_IO_INPUT);
    
    //
    //The Quasi-bidirection mode could be used as input with pull up enable 
    //
    DrvGPIO_Open(E_PORT2, E_PIN2, E_IO_QUASI);

    //
    // Configure general interrupt callback function for P0/P1 and P2/P3/P4
    //
    DrvGPIO_SetIntCallback(P0P1Callback, P2P3P4Callback, P5Callback);

    DrvGPIO_EnableInt(E_PORT1, E_PIN5, E_IO_RISING, E_MODE_EDGE);

    //
    // IO_FALLING means low level trigger if it is in level trigger mode.
    //
    DrvGPIO_EnableInt(E_PORT2, E_PIN2, E_IO_FALLING, E_MODE_LEVEL);

    DrvGPIO_SetDebounceTime(0, E_DBCLKSRC_HCLK);
    DrvGPIO_EnableDebounce(E_PORT1, E_PIN5);
    DrvGPIO_EnableDebounce(E_PORT2, E_PIN2);

    DrvGPIO_EnableDebounce(E_PORT3, E_PIN2);
    DrvGPIO_EnableDebounce(E_PORT5, E_PIN2);
    
    //
    // Configure external interrupt.
    //
    DrvGPIO_InitFunction(FUNC_EXTINT0);
    DrvGPIO_InitFunction(FUNC_EXTINT1);
    DrvGPIO_EnableEINT(E_EINT0_PIN, E_IO_FALLING, E_MODE_EDGE, EINT0Callback);
    DrvGPIO_EnableEINT(E_EINT1_PIN, E_IO_BOTH_EDGE, E_MODE_EDGE, EINT1Callback);
}
Пример #14
0
void EINT1Callback(void)
{
	DrvGPIO_SetBit(E_PORT2, E_PIN0);

}
Пример #15
0
void P5Callback(uint32_t u32P5Status)
{

	DrvGPIO_SetBit(E_PORT2, E_PIN0);
}
Пример #16
0
void kumpul(){
	clr_all_pannal();
	uint8_t hasiluart[8];
	while(key==1){
       	DrvGPIO_ClrBit(E_GPC,12);
       	DrvSYS_Delay(10000);
       	DrvGPIO_ClrBit(E_GPB,0);
       	print_lcd(0,"Tap Kartu Anda");
       	print_lcd(1,"Pada Reader");
       	print_lcd(2,"Tekan Button");
       	print_lcd(3,"untuk Kembali");
       	if(DrvGPIO_GetBit(E_GPB,15)==0){
       	       		main();}
       	bacarfid();
		DrvUART_Read(UART_PORT0,hasiluart,1);
		if(hasiluart[0]=='B'){
						DrvGPIO_ClrBit(E_GPB,11);
			       		DrvSYS_Delay(100000);
			       		DrvGPIO_SetBit(E_GPB,11);
			       		DrvSYS_Delay(100000);
			       		DrvGPIO_ClrBit(E_GPB,11);
			       		DrvSYS_Delay(100000);
			       		DrvGPIO_SetBit(E_GPB,11);
			       		DrvSYS_Delay(100000);
			       		clr_all_pannal();
			       		goto benar;
		}
		if(hasiluart[0]!='B'){
			SYSCLK->PWRCON.XTL12M_EN = 1;//Enable 12MHz Crystal
			       		       							SYSCLK->CLKSEL0.HCLK_S = 0;
			       		       						LOCKREG();
			       		clr_all_pannal();
			       		print_lcd(0,"Maaf :(");
			       		print_lcd(1,"Nama kamu gak");
			       		print_lcd(2,"Ada di Basis Data");
			       		print_lcd(3,"COBA LAGI !!!");
			       		DrvGPIO_ClrBit(E_GPB,11);
			       						DrvGPIO_ClrBit(E_GPB,11);
			       			       		DrvSYS_Delay(500000);
			       			       		DrvGPIO_SetBit(E_GPB,11);
			       			       		DrvSYS_Delay(100000);
			       			       		DrvGPIO_ClrBit(E_GPB,11);
			       			       		DrvSYS_Delay(500000);
			       			       		DrvGPIO_SetBit(E_GPB,11);
			       			       		DrvSYS_Delay(100000);
			       			       		DrvGPIO_ClrBit(E_GPB,11);
			       			       		delay(5000000);
			       		kumpul();
			       	}
       	//key2=Scankey();
       	/*if(key2==2){
       		DrvGPIO_ClrBit(E_GPB,11);
       		DrvSYS_Delay(100000);
       		DrvGPIO_SetBit(E_GPB,11);
       		DrvSYS_Delay(100000);
       		DrvGPIO_ClrBit(E_GPB,11);
       		DrvSYS_Delay(100000);
       		DrvGPIO_SetBit(E_GPB,11);
       		DrvSYS_Delay(100000);
       		clr_all_pannal();
       	}*/
       	//mennu harus diubah klo uart dah jadi
		benar:
       	while(hasiluart[0]=='B'){
       		print_lcd(0,"Silakan Masukkan");
       		print_lcd(1,"Borang Kamu");
       		SYSCLK->PWRCON.XTL12M_EN = 1;//Enable 12MHz Crystal
       		       							SYSCLK->CLKSEL0.HCLK_S = 0;
       		       						LOCKREG();
       		       				        servo_buka();
       		       				        DrvSYS_Delay(10);
       		Scankey();
       		if(DrvGPIO_GetBit(E_GPA,0)==0){
       		    clr_all_pannal();
       		    print_lcd(0,"Terima Kasih :)");
       		    print_lcd(1,"Tito Alvi");
       		    hitung++;
       		 DrvGPIO_ClrBit(E_GPB,11);
       		 			       		DrvSYS_Delay(100000);
       		 			       		DrvGPIO_SetBit(E_GPB,11);
       		 			       		DrvSYS_Delay(100000);
       		 			       		DrvGPIO_ClrBit(E_GPB,11);
       		 			       		DrvSYS_Delay(100000);
       		 			       		DrvGPIO_SetBit(E_GPB,11);
       		 			       		DrvSYS_Delay(100000);
       		 			       	DrvGPIO_ClrBit(E_GPB,11);
       		 			       	DrvSYS_Delay(100000);
       		 			       	DrvGPIO_SetBit(E_GPB,11);
       		 			       	DrvSYS_Delay(100000);
       		    print_lcd(0,"Terima Kasih :)");
       			DrvSYS_Delay(2000000);
       			main();
       		       	}
       		while(DrvGPIO_GetBit(E_GPA,0)==0){ //sensor cahaya = GPA0 - SIG
       			       				         			       		main();}
       		}

       	}


       	       	}
Пример #17
0
int main(void)
{
    uint8_t buffer[32] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
    /* Unlock the protected registers */
    UNLOCKREG();

    /* Enable the 12MHz oscillator oscillation */
    DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1);

    /* Waiting for 12MHz Xtal stable */
    DrvSYS_Delay(5000);

    /* HCLK clock source. 0: external 12MHz. */
    DrvSYS_SelectHCLKSource(0);

    LOCKREG();

    DrvSYS_SetClockDivider(E_SYS_HCLK_DIV, 0); /* HCLK clock frequency = HCLK clock source / (HCLK_N + 1) */

    nrf_init();

    nrf_detect();

    //nrf_rx_mode_no_aa(addr,5,16,40);
    //nrf_rx_mode(addr,5,16,40);
    nrf_rx_mode_dual(addr,5,40);

    nrf_test_reg();

    DrvGPIO_Open(E_GPA, 2, E_IO_OUTPUT);
    DrvGPIO_Open(E_GPA, 3, E_IO_OUTPUT);
    DrvGPIO_Open(E_GPA, 4, E_IO_OUTPUT);
    DrvGPIO_Open(E_GPA, 5, E_IO_OUTPUT);
    {
        uint8_t status = nrf_read_reg(NRF_STATUS);
        nrf_write_reg(NRF_WRITE_REG|NRF_STATUS,status); // clear IRQ flags
        nrf_write_reg(NRF_FLUSH_RX, 0xff);
        nrf_write_reg(NRF_FLUSH_TX, 0xff);
    }

    while(1) {
        uint8_t buffer[32];
        if(tx_done) {
            static uint8_t yy = 0;
            yy++;
            if(yy&1) {
                DrvGPIO_SetBit(E_GPA,2);
            } else {
                DrvGPIO_ClrBit(E_GPA,2);
            }
            if(tx_done == 1) {
            } else {
            }
            buffer[0] = tx_done;
            tx_done = 0;
        }
        if(rx_done) {
            static uint8_t xx = 0;
            rx_done = 0;
            xx++;
            if(xx & 1)
                DrvGPIO_SetBit(E_GPA,5);
            else
                DrvGPIO_ClrBit(E_GPA,5);

            //nrf_ack_packet(0,buffer, (xx&15) + 1);
            nrf_ack_packet(0,rx_buffer, rx_len);
        }
    }

    while(1) {
        static uint8_t cnt = 0;
        if(cnt&1) {
            DrvGPIO_SetBit(E_GPA,2);
        } else {
            DrvGPIO_ClrBit(E_GPA,2);
        }
        DrvSYS_Delay(50000*2);
        cnt++;
        //nrf_tx_packet(buffer, 16);
        //buffer[0]++;

        if(nrf_rx_packet(buffer,16) == NRF_RX_OK)
        {
            static uint8_t xx = 0;
            xx++;
            if(xx & 1)
                DrvGPIO_SetBit(E_GPA,5);
            else
                DrvGPIO_ClrBit(E_GPA,5);
        }
    }
    return 0;
}
Пример #18
0
void P0P1Callback(uint32_t u32P0Status, uint32_t u32P1Status)
{

	DrvGPIO_SetBit(E_PORT2, E_PIN0);
}
Пример #19
0
void Disable_Buzzer(void)
{
 	DrvGPIO_Open(E_GPB,11, E_IO_OUTPUT);	
	DrvGPIO_SetBit(E_GPB,11);	
}
Пример #20
0
void P2P3P4Callback(uint32_t u32P2Status, uint32_t u32P3Status, uint32_t u32P4Status)
{
	DrvGPIO_SetBit(E_PORT2, E_PIN0);
}