Ejemplo n.º 1
0
void Init44k22(void)
{
//OSC int 16MHz (62.5ns/inst.)
OSCCONbits.IRCF2 = 1;
OSCCONbits.IRCF1 = 1;
OSCCONbits.IRCF0 = 1;
while(!OSCCONbits.HFIOFS); //wait until ready

//Uart1
ANSELCbits.ANSC7 = 0; //Port C7 select som digital port
ANSELCbits.ANSC6 = 0; //Port C6 select som digital port

//Uart2
ANSELDbits.ANSD7 = 0; //Port D7 select som digital port
ANSELDbits.ANSD6 = 0; //Port D6 select som digital port

//Leds
ANSELAbits.ANSA3 = 0; //Port A3 select som digital port Red
ANSELEbits.ANSE1 = 0; //Port E1 select som digital port Green
ANSELEbits.ANSE2 = 0; //Port E2 select som digital port Blue

//InitTimer0();
InitTimer1();
//InitTimer2();
InitTimer3();

InitUart1();
InitUart2();

Init_IO();
}
Ejemplo n.º 2
0
void Init26k20(){

    //OSC int 16MHz (62.5ns/inst.)
OSCCONbits.IRCF2 = 1;
OSCCONbits.IRCF1 = 1;
OSCCONbits.IRCF0 = 1;
OSCCONbits.SCS1 = 1;

while(!OSCCONbits.IOFS); //wait until ready

//dioder

ANSEL=0x00; //set ports som digitale
ANSELH=0x00;

//input
//ANSELBbits.ANSB0 = 1; //Port B0 som analog
//ANSELBbits.ANSB1 = 1; //Port B1 som analog
//ANSELBbits.ANSB2 = 1; //Port B2 som analog


//InitTimer0();
InitTimer1();
//InitTimer2();
InitTimer3();

InitUart1();

Init_IO();


}
Ejemplo n.º 3
0
void stop_send_ir()			   // initiates the sending process
{
	cli();
	get_ir_status = 0;
	irPointer = irBuffer;
	irBufferCounter = 0;
	InitTimer3(0);	
	DEACTIVATE_PWM();	
	TCNT3 = 0;
	sei();
}
Ejemplo n.º 4
0
void stop_record_ir()			   // stopd the recording process
{
	cli();
	get_ir_status = 0; 	// Idle
	irPointer = irBuffer;
	irBufferCounter = 0; 
	irBufferOverflow = 0;
	InitTimer3(0);
	DEACTIVATE_PWM();
	DEACTIVATE_ICP1();
	sei();
}
Ejemplo n.º 5
0
void start_record_ir()			   // initiates the recording process
{
	cli();
	get_ir_status = 2; 	// Recording
	irPointer = irBuffer;
	irBufferCounter = 0; 
	irBufferOverflow = 0;
	InitTimer3(1);
	DEACTIVATE_PWM();
	ACTIVATE_ICP1();
	sei();	
}
Ejemplo n.º 6
0
void start_send_ir()			   // initiates the sending process
{

	cli();
	get_ir_status = 1;
	irPointer = irBuffer;
	InitTimer3(1);
	ACTIVATE_PWM();
	TCNT3 = 65535 - (*(irPointer+1)*256 + *(irPointer+2));
	irPointer += 3;
	irBufferCounter = 3;
	sei();
}
Ejemplo n.º 7
0
void Record_IR_Code()
{
	if((TCCR3B &(1<<CS31))== 0x00)			// Timer 3 activated?
	{
		InitTimer3(1);
	}
	if(irBufferCounter>=507)
	{
		DEACTIVATE_ICP1();

		*irPointer 	   = 0xFF;		// End of IR Code
		*(irPointer+1) = 0xFF;		// End of IR Code
		*(irPointer+2) = 0xFF;		// End of IR Code
		InitTimer3(0);

		CIM_frame.cim_feature=LIPMOUSE_CIM_FEATURE_SET_IR_MODE;
		CIM_frame.reply_code=CMD_REQUEST_WRITE_FEATURE;
		autoreply_num++; 
		    if (autoreply_num==0) autoreply_num=0x80;
		CIM_frame.serial_number=autoreply_num;
		get_ir_status = 3;						// Record available	
		CIM_frame.data[0]=get_ir_status;
		CIM_frame.data_size = 1;
		reply_DataFrame();				

	}
	else
	{
		*irPointer = irBufferOverflow;
		*(irPointer+1) = ((TCNT3>>8)&0xFF);
		*(irPointer+2) = ((TCNT3)&0xFF);
		irPointer+=3;
		irBufferOverflow = 0;
		irBufferCounter+=3;
		TCNT3 = 0;
	}
}
Ejemplo n.º 8
0
/*
*****************************************************************************
**函 数 名:void GatherData(void)
**功能描述:数据采集
**输    入:无
**输    出:无
*****************************************************************************
*/
void GatherData(void)
{
	//ACCEL_Init();
	if(SysDat.flagGather == 0)     //如果不要数据采集直接退出
	{
		return;
	}
	if(ReadMask(SysDat.Flag,SYS_BE_WORKING) == SYS_BE_WORKING)     //开始数据采集
	{
		ClearMask(SysDat.Flag,SYS_BE_WORKING);
		InitTimer3();
		Timer3IntSwitchOn();	
		GatherVariable();
	}		
	if(SysDat.flagGather == 1)
	{		
		//Timer3Open();		
		while(SysDat.flagGather != 2)             //等待电压和温度数据采集完成
		{
			if(!SysDat.timeLeft)
			{		
				if(!AD0BUSY)
				{
					ADC0_Converx(VOLTAGE);
					ADC0_Converx(TEMPERATURE);
					if(SysDat.pFilter>=5)
					{
						SysDat.pFilter = 0;
						ParDat.voltage = (Uint8)(Filter(GatDat->TempLoad,5)>>2);	  //取ADC高8位
						ParDat.temperature  = (Uint8)(Filter(GatDat->TempAcc,5)>>2);	  //取ADC高8位
						SysDat.flagGather = 2;
						break;	
					}
					SysDat.timeLeft = 10;
					Timer3Open();
				}
			}
			PCON |= 0x01;                              //空闲方式(省电),由Timer3中断唤醒
		}