コード例 #1
0
ファイル: LKT.c プロジェクト: andydev/spec_mtk
void SendChar()
{
    uchar i,n,flag;
	
	for(n = 0 ;n<5 ; n++)
	{	
		ACC  = SendBuf[n] ;
		flag = P; 
		IO  = 0;
		for(i=0;i<8;i++)			   //发送一个字节
		{
			Delay_100us();
			if(SendBuf[n] & 0x01)
				IO = 1;
			else
				IO = 0;
			SendBuf[n] >>=1;
		}
		Delay_100us();
		IO = flag;					   //发送保存的奇偶位
		Delay_100us();	
		IO = 1;						   //发送停止位
		Delay_100us();	
		Delay_100us();   		
	}
}	 
コード例 #2
0
ファイル: LKT.c プロジェクト: andydev/spec_mtk
/*****************上电发送复位请求******************/
void Rest()							
{
	Delay() ;
	IO   = 1;			    		//必须为高等待接收LKT加密芯片发送的起始位
	REST = 0;
	Delay_100us();
	REST = 1; 
} 
コード例 #3
0
ファイル: LKT.c プロジェクト: andydev/spec_mtk
void main()
{
	Rest();	
	ReceArt(17); 	 	   //接收复位信息
	Delay_100us();
	SendChar()	;
	ReceArt(19);		  //接收随机数信息
	P0 = buf[17];
	while(1);
}
コード例 #4
0
ファイル: LKT.c プロジェクト: andydev/spec_mtk
/****************读取LTK4101的返回信息并将其存入数据缓存区****************/
void ReceArt(char m)	   		   
{
	uchar i,n;
	
	for(n=0;n<m;n++)
	{	
		while(IO);
		for(i=0;i<8;i++)   		   //读一个字节函数 
		{
			Delay_100us();
			buf[n] >>= 1;
			if(1 == IO)
				buf[n] |= 0x80;
		}
		Delay_100us();
		ACC = buf[n];							   
		if(IO == P)				    //判断偶校验位
		{
		   Delay_100us();
		   Delay_100us();
		}  	
	}

}
コード例 #5
0
/*=====================================================================================================*/
int main( void )
{
	u32 i = PWM_MOTOR_MIN;

	SystemInit();
	GPIO_Config();
	PWM_Config();

//	PWM1  = PWM_MOTOR_MIN;
//	PWM2  = PWM_MOTOR_MIN;
//	PWM3  = PWM_MOTOR_MIN;
//	PWM4  = PWM_MOTOR_MIN;
//	PWM5  = PWM_MOTOR_MIN;
//	PWM6  = PWM_MOTOR_MIN;
//	PWM7  = PWM_MOTOR_MIN;
//	PWM8  = PWM_MOTOR_MIN;
//	PWM9  = PWM_MOTOR_MIN;
//	PWM10 = PWM_MOTOR_MIN;
//	PWM11 = PWM_MOTOR_MIN;
//	PWM12 = PWM_MOTOR_MIN;

  while(1) {
    LED_G = ~LED_G;

		while(KEY == 1) {
			PWM1  = i;
			PWM2  = i;
			PWM3  = i;
			PWM4  = i;
			PWM5  = i;
			PWM6  = i;
			PWM7  = i;
			PWM8  = i;
			PWM9  = i;
			PWM10 = i;
			PWM11 = i;
			PWM12 = i;
			i++;
			if(i>=PWM_MOTOR_MAX) {
				i = PWM_MOTOR_MIN;
				LED_R = ~LED_R;
			}
			Delay_100us(5);
		}

    Delay_100ms(1);
	}
}
コード例 #6
0
/*=====================================================================================================*/
int main( void )
{
  uint32_t i = PWM_MOTOR_MIN;

  GPIO_Config();
  PWM_Config();

  while(1) {
    LED_G = !LED_G;

    if(KEY_BO == 1) {
      PWM1  = PWM_MOTOR_MIN;
      PWM2  = PWM_MOTOR_MIN;
      PWM3  = PWM_MOTOR_MAX;
      PWM4  = PWM_MOTOR_MAX;
    }
      
    while(KEY_WU == 1) {
      PWM1  = i;
      PWM2  = i;
      PWM3  = i;
      PWM4  = i;
      PWM5  = i;
      PWM6  = i;
      PWM7  = i;
      PWM8  = i;
      PWM9  = i;
      PWM10 = i;
      PWM11 = i;
      i++;
      if(i >= PWM_MOTOR_MAX) {
        i = PWM_MOTOR_MIN;
        LED_R = !LED_R;
      }
      Delay_100us(5);
    }

    Delay_100ms(1);
  }
}
コード例 #7
0
ファイル: network.c プロジェクト: NeroGnu/tracking-robot
/* This function runs before the OS start. */
void NetworkConnecting()
{
	int i, p, test, test1;
	int sendcounter = 0;
	u32 *pu32 = NULL;
	
	test1 = Timer2Counter;
	test = Timer2Counter;
	
	
	sPacketbuf[DES_NUM] = SELFADDRESS;
	sPacketbuf[SRC_NUM] = SELFADDRESS;
	
	CC2500_SeleChannel(0);
	CC2500_SetRecvAddr(SELFADDRESS);

	CC2500_SetRxd();
	
	CC2500_SendPacket(sPacketbuf,PACKET_LEN);
	CC2500_SetRxd();
	
	sPacketbuf[DES_NUM]=0x00;
	NbrList[0]=NbrCount;
	
//	while(RESET==RNG_GetFlagStatus(RNG_FLAG_DRDY));
//	Delay_100us(RNG_GetRandomNumber() & 0x000000f);
  pu32 = (u32*) &sPacketbuf[1];
	while (0 == NodeFlag[SELFADDRESS])
	{
		if (ISIDLE)
		{
			NbrList[0] = NbrCount;
			sPacketbuf[PRC_NUM] = DISCOVERY_MESSAGE;
			arm_copy_q7(NbrList, sPacketbuf+LEN_NUM, NbrList[0]+1);
			pu32[CRC_LENGTH - 2] = Timer2Counter;//Add the timestamp.
			CRC_ResetDR();
			pu32[CRC_LENGTH - 1] = CRC_CalcBlockCRC(pu32, CRC_LENGTH - 1);
			p = Bernoulli(1.0/(MAXNUM-NbrCount+1));
			//Delay_100us(1);
			if (ISIDLE)
			{
				if (0 == DelayFlag)
				{
					if (p/*Bernoulli(1.0/(MAXNUM-NbrCount+1))*/)
					{
						
						CC2500_SendPacket(sPacketbuf, PACKET_LEN);
						CC2500_SetRxd();
						DelayFlag=1;
					}
				}
				else
				{
					Preemptive_Delay_100us(25, &DelayFlag);
					DelayFlag=0;
				}
			}
		}
	
	}
	
	
	test1 = Timer2Counter - test1;
	while(MAXNUM > NbrCount)
	{
		if (0 != DiscoveryHelp)
		{
			if (ISIDLE)
			{
				Delay_100us(1);
				if (ISIDLE)
				{	
          if (Bernoulli(1.0/(MAXNUM-NbrCount+1)))
					{						
						NbrList[0] = NbrCount;
						sPacketbuf[PRC_NUM] = DISCOVERY_MESSAGE;
						arm_copy_q7(NbrList, sPacketbuf+LEN_NUM, NbrList[0]+1);
						pu32[CRC_LENGTH - 2] = Timer2Counter;//Add the timestamp.
						CRC_ResetDR();
						pu32[CRC_LENGTH - 1] = CRC_CalcBlockCRC(pu32, CRC_LENGTH - 1);
						CC2500_SendPacket(sPacketbuf, PACKET_LEN);
						CC2500_SetRxd();
					}
				}
			}	
			DiscoveryHelp = 0;
		}
		
	}
	
	test = Timer2Counter - test;
	while(RESET==RNG_GetFlagStatus(RNG_FLAG_DRDY));
	Delay_100us(RNG_GetRandomNumber() & 0x000000f);
	
	pu32[CRC_LENGTH - 2] = Timer2Counter;//Add the timestamp.
	sendcounter = 3;
	while (0 != sendcounter)
	{
		if (ISIDLE)
		{
			Delay_100us(1);
			if (ISIDLE)
			{				
				NbrList[0] = NbrCount;
				sPacketbuf[PRC_NUM] = DISCOVERY_ACCOMPLISHED;
				arm_copy_q7(NbrList, sPacketbuf+LEN_NUM, NbrList[0]+1);
				CRC_ResetDR();
				pu32[CRC_LENGTH - 1] = CRC_CalcBlockCRC(pu32, CRC_LENGTH - 1);
				CC2500_SendPacket(sPacketbuf, PACKET_LEN);
				CC2500_SetRxd();
				sendcounter--;
			}
		}	
		Delay_100us(10);
	}
	
	printf("NeighbourList:\r\n");
	for (i=0;i<MAXNUM;i++)
	{
		printf("%#x\r\n",NbrList[1+i]);
	}
  printf("t1 = %d\r\n", test1);
	printf("t = %d\r\n", test);
}