亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? des_mc33696.c

?? BCM 控制demo源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
			break;

			/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
		/* Reading the RSSI from the SPI									 */
		case ECHO_READ_RSSI_1:
			ECHO_SPIxDR = 0;
			echoDriverNextState = ECHO_READ_RSSI_2;
			break;

		/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
		/* Reading the RSSI from the SPI									 */
		case ECHO_READ_RSSI_2:
			echoEmptyPtr[0] &= 0xC0;			/* Clear the RSSI bits		 */
			echoEmptyPtr[0] |= (temp & 0x0F);	/* Copy in bottom four bits	 */
			echoEmptyPtr[0] += ((temp & 0xF0) >> 4);	/* Add top four bits */
														/* for RSSI		 	 */
			echoEmptyPtr[0] |= ECHO_RSSI_BIT;	/* Indicate RSSI measured	 */

			echoEmptyPtr[1] |= ECHO_BUFFER_FULL;	/* Signal buffer full	 */

			echoEmptyPtr += ECHO_MAX_DATA_SIZE+2;
			if (echoEmptyPtr >= (echoRxBuffer+sizeof(echoRxBuffer))) {
				echoEmptyPtr = echoRxBuffer;
			}

			Echo_ExitConfig();
			ECHO_SEB = 0;

			status.Bits.Busy = 0;
			status.Bits.Rx = 0;

			echoDriverNextState = ECHO_READY;
			break;


		/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
		/* Oh dear something went wrong!									 */
		default:
			status.Bits.Error = 1;
			break;
	}
}

#pragma CODE_SEG DEFAULT

/******************************************************************************
* Return the status of the driver. Updates echoNextMessage pointer if another
* message is ready and the current message buffer has been released
* (by clearing the buffer full bit)
******************************************************************************/
tECHO_STATUS Echo_DriverStatus(void) {
	unsigned char *tempPtr;
	tECHO_STATUS toReturn = status;
	
	/* echoFullPtr is either full (so it will be returned next) or empty.	 */
	/* If it is empty, the last message returned has been released, so check */
	/* if there is another waiting in the next buffer.						 */
	if ((echoFullPtr[1] & ECHO_BUFFER_FULL) != 0) {
		echoNextMessage = echoFullPtr;
		toReturn.Bits.MsgReady = 1;

		if ((echoNextMessage[0] & ECHO_CHECKSUM_ERROR) != 0) {
			toReturn.Bits.Checksum = 1;
		}
	}
	else {
		tempPtr = echoFullPtr + ECHO_MAX_DATA_SIZE+2;
		if (tempPtr >= (echoRxBuffer+sizeof(echoRxBuffer))) {
			tempPtr = echoRxBuffer;
		}

		if ((tempPtr[1] & ECHO_BUFFER_FULL) != 0) {
			echoFullPtr = tempPtr;
			echoNextMessage = tempPtr;

			toReturn.Bits.MsgReady = 1;

			if ((echoNextMessage[0] & ECHO_CHECKSUM_ERROR) != 0) {
				toReturn.Bits.Checksum = 1;
			}
		}
	}

	#ifdef ECHO_LVD
		toReturn.Bits.LVD = ECHO_LVD;
	#endif

	return toReturn;
}

/******************************************************************************
* Clear the error and timeout flags
******************************************************************************/
void Echo_ClearError(void) {
	status.Bits.Error = 0;
	status.Bits.Timeout = 0;
}

/******************************************************************************
* Take the STROBE line high (if it is under driver control).
* When STROBE is high, Echo will always be on in Rx mode.
******************************************************************************/
void Echo_StrobeHigh(void) {
	#ifdef ECHO_STROBE
		ECHO_STROBE = 1;
		ECHO_STROBE_DDR = 1;
	#endif
}

/******************************************************************************
* Take the STROBE line low (if it is under driver control).
* When STROBE is low, Echo will stay in Standby once entered.
******************************************************************************/
void Echo_StrobeLow(void) {
	#ifdef ECHO_STROBE
		ECHO_STROBE = 0;
		ECHO_STROBE_DDR = 1;
	#endif
}

/******************************************************************************
* Tristate the STROBE line low (if it is under driver control). When STROBE is
* tristated, Echo's internal strobe oscillator is used (if SOE bit is 1) to
* control on/off time.
******************************************************************************/
void Echo_StrobeTriState(void) {
	#ifdef ECHO_STROBE
		ECHO_STROBE_DDR = 0;
	#endif
}

/******************************************************************************
* Setup and start off a delayed configuration. Schedules a 1.2ms wait before
* sending 'echoCommand' and 'echoRegCounter' number of registers to/from
* 'echoRegPtr'.
******************************************************************************/
void Echo_StartDelayedConfig(void) {
	/* Echo will be reset back to Rx mode: make flags consistent			 */
	status.Word &= 0x4154;				/* Clear all but Timeout, Error,	 */
										/* Overrun, Enabled & RSSI_Enabled	 */
	status.Bits.Busy = 1;

	ECHO_TIE &= ~ECHO_TIMER_INT;			/* In case we're transmitting	 */
	Echo_EnterConfig();

	bitCounter = ECHO_1200uS_DELAY;
	echoDriverNextState = ECHO_CONFIG_DELAY;

	Echo_KickOffTimer();
}

/******************************************************************************
* Frequency control functions - one version for OOK and one for FSK.		 
******************************************************************************/
#if ECHO_MODE_VALUE == ECHO_OOK

/******************************************************************************
* Set frequency using the user friendly mode - specify the carrier used for
* OOK. Carrier is a 12 bit value which can be derived from the datasheet.
******************************************************************************/
	void Echo_SetFreq(unsigned int carrier) {
		echoRegisters[ECHO_CONFIG2_REG] &= ~ECHO_BIT_FRM;
		echoRegisters[ECHO_F1_REG] = ((carrier & 0x0F00)>>8);
		echoRegisters[ECHO_F0_REG] =  (carrier & 0x00FF);

		echoCommand		= BUILDCMD(CMD_EIGHT, ECHO_CONFIG2_REG, 1);
		echoRegPtr		= &echoRegisters[ECHO_CONFIG2_REG];
		echoRegCounter	= 8;

		Echo_StartDelayedConfig();
	}

/******************************************************************************
* Set frequency using the direct mode - specify the carrier and local
* oscillator frequencies used for OOK. localOscillator and carrier0 are 12 bit
* values that may be derived from datasheet.
******************************************************************************/
	void Echo_SetFreqNoFRM(unsigned int localOscillator,\
						   unsigned int carrier0) {
		echoRegisters[ECHO_CONFIG2_REG] |= ECHO_BIT_FRM;

		echoRegisters[ECHO_F1_REG] = ((localOscillator & 0x0F00)>>8);
		echoRegisters[ECHO_F0_REG] =  (localOscillator & 0x00FF);
		
		echoRegisters[ECHO_FT2_REG] = ((carrier0 & 0x0FF0) >> 4);
		echoRegisters[ECHO_FT1_REG] = ((carrier0 & 0x000F) << 4);
		
		echoCommand		= BUILDCMD(CMD_EIGHT, ECHO_CONFIG2_REG, 1);
		echoRegPtr		= &echoRegisters[ECHO_CONFIG2_REG];
		echoRegCounter	= 8;

		Echo_StartDelayedConfig();
	}

#else

/******************************************************************************
* Set frequency using the user friendly mode - specify the carrier frequency
* and delta used to calculate the actual carriers for a 0 and 1 used for FSK.
* The carrier is 12 bit, deltaF is four bits and can be derived using 
* formulae in the datasheet.
******************************************************************************/
	void Echo_SetFreq(unsigned int carrier, unsigned char deltaF) {
		echoRegisters[ECHO_CONFIG2_REG] &= ~ECHO_BIT_FRM;
		echoRegisters[ECHO_F1_REG] = ((deltaF & 0x0F)<<4) | \
									 ((carrier & 0x0F00)>>8);
		echoRegisters[ECHO_F0_REG] =  (carrier & 0x00FF);

		echoCommand		= BUILDCMD(CMD_EIGHT, ECHO_CONFIG2_REG, 1);
		echoRegPtr		= &echoRegisters[ECHO_CONFIG2_REG];
		echoRegCounter	= 8;

		Echo_StartDelayedConfig();
	}

/******************************************************************************
* Set frequency using the direct mode - specify the carriers for transmitting
* a 0 and 1 explicitly and the local oscillator frequency used for FSK.
* The values are 12 bit and can be derived using formulae in the datasheet.
******************************************************************************/
	void Echo_SetFreqNoFRM(unsigned int localOscillator,
						   unsigned int carrier0,
						   unsigned int carrier1) {

		echoRegisters[ECHO_CONFIG2_REG] |= ECHO_BIT_FRM;

		echoRegisters[ECHO_F1_REG] = ((localOscillator & 0x0F00)>>8);
		echoRegisters[ECHO_F0_REG] = (localOscillator & 0x00FF);

		echoRegisters[ECHO_FT2_REG] = ((carrier0 & 0x0FF0) >> 4);
		echoRegisters[ECHO_FT1_REG] = ((carrier0 & 0x000F) << 4) | \
									  ((carrier1 & 0x0F00)>>8);
		echoRegisters[ECHO_FT0_REG] = (carrier1 & 0x00FF);

		echoCommand		= BUILDCMD(CMD_EIGHT, ECHO_CONFIG2_REG, 1);
		echoRegPtr		= &echoRegisters[ECHO_CONFIG2_REG];
		echoRegCounter	= 8;

		Echo_StartDelayedConfig();
	}

#endif
/*****************************************************************************/

/******************************************************************************
* Set the input sensitivity on Echo to level. Level must be in the range 0-3.
* Sets the ILA bits in Echo (see datasheet for more info.)
******************************************************************************/
void Echo_SetRxSensitivity(unsigned char level) {
	echoRegisters[ECHO_CONFIG3_REG] &= 0xF3;		/* Clear the ILA bits	 */
	echoRegisters[ECHO_CONFIG3_REG] |= ((level&0x03)<<2);  /* Copy in 2 bits */
														   /* of level 	 	 */

	echoCommand		= BUILDCMD(CMD_ONE, ECHO_CONFIG3_REG, 1);
	echoRegPtr		= &echoRegisters[ECHO_CONFIG3_REG];
	echoRegCounter	= 1;

	Echo_StartDelayedConfig();
}

/******************************************************************************
* Set the output power on Echo to level. Level must be in the range 0-3.
* Sets the OLA bits in Echo (see datasheet for more info.)
******************************************************************************/
void Echo_SetTxPower(unsigned char level) {
	echoRegisters[ECHO_CONFIG3_REG] &= 0xFC;		/* Clear the OLA bits	 */
	echoRegisters[ECHO_CONFIG3_REG] |= (level&0x03);	   /* Copy in 2 bits */
														   /* of level 	  	 */
	echoCommand		= BUILDCMD(CMD_ONE, ECHO_CONFIG3_REG, 1);
	echoRegPtr		= &echoRegisters[ECHO_CONFIG3_REG];
	echoRegCounter	= 1;

	Echo_StartDelayedConfig();
}


/******************************************************************************
* Reset the Automatic Gain Control to maximum.
* Stays at maximum as long as RAGC=1.
******************************************************************************/
void Echo_RagcHigh() {
	echoRegisters[ECHO_COMMAND_REG] |= ECHO_BIT_RAGC;

	echoCommand		= BUILDCMD(CMD_ONE, ECHO_COMMAND_REG, 1);
	echoRegPtr		= &echoRegisters[ECHO_COMMAND_REG];
	echoRegCounter	= 1;

	Echo_StartDelayedConfig();
}

/******************************************************************************
* Allow Automatic Gain Control to take effect again.
******************************************************************************/
void Echo_RagcLow() {
	echoRegisters[ECHO_COMMAND_REG] &= ~ECHO_BIT_RAGC;

	echoCommand		= BUILDCMD(CMD_ONE, ECHO_COMMAND_REG, 1);
	echoRegPtr		= &echoRegisters[ECHO_COMMAND_REG];
	echoRegCounter	= 1;

	Echo_StartDelayedConfig();
}

/******************************************************************************
* Freeze the Automatic Gain Control to its current value.
******************************************************************************/
void Echo_FagcHigh() {
	echoRegisters[ECHO_COMMAND_REG] |= ECHO_BIT_FAGC;

	echoCommand		= BUILDCMD(CMD_ONE, ECHO_COMMAND_REG, 1);
	echoRegPtr		= &echoRegisters[ECHO_COMMAND_REG];
	echoRegCounter	= 1;

	Echo_StartDelayedConfig();
}

/******************************************************************************
* Allow Automatic Gain Control to unfreeze again.
******************************************************************************/
void Echo_FagcLow() {
	echoRegisters[ECHO_COMMAND_REG] &= ~ECHO_BIT_FAGC;

	echoCommand		= BUILDCMD(CMD_ONE, ECHO_COMMAND_REG, 1);
	echoRegPtr		= &echoRegisters[ECHO_COMMAND_REG];
	echoRegCounter	= 1;

	Echo_StartDelayedConfig();
}

/******************************************************************************
* Enable the RSSI module and automatically read RSSI during reception of
* messages. The received RSSI reading will be stored in the buffer along 
* with the message.
******************************************************************************/
#ifdef ECHO_RSSIC	
	void Echo_EnableRSSI(void) {
		status.Bits.RSSI_Enabled = 1;

		echoRegisters[ECHO_COMMAND_REG] |= ECHO_BIT_RSSIE;

		echoCommand		= BUILDCMD(CMD_ONE, ECHO_COMMAND_REG, 1);
		echoRegPtr		= &echoRegisters[ECHO_COMMAND_REG];
		echoRegCounter	= 1;

		Echo_StartDelayedConfig();
	}
#endif

/******************************************************************************
* Disable the RSSI module and stop automatically reading the RSSI during
* reception.
******************************************************************************/
#ifdef ECHO_RSSIC
	void Echo_DisableRSSI(void) {
		status.Bits.RSSI_Enabled = 0;

		echoRegisters[ECHO_COMMAND_REG] &= ~ECHO_BIT_RSSIE;
  	
		echoCommand		= BUILDCMD(CMD_ONE, ECHO_COMMAND_REG, 1);
		echoRegPtr		= &echoRegisters[ECHO_COMMAND_REG];
		echoRegCounter	= 1;

		Echo_StartDelayedConfig();
	}
#endif

/******************************************************************************
* Read the RSSI from Echo's registers. Starts a conversion (which lasts _at 
* least_ 32*Tdigclk (around 53usec)), then reads the RSSI value and stores it
* in echoRSSIResult. Requires the RSSI module to be enabled - call 
* Echo_EnableRSSI. Also, if Echo is in transmit mode, the RSSI cannot be read -
* status bit Error is set.
******************************************************************************/
#ifdef ECHO_RSSIC
	void Echo_ReadDigitalRSSI(void) {
		/* Can't read RSSI while transmitting - in any case, toggling CONFB  */
		/* to read the RSSI would reset Echo and abort transmission, so just */
		/* don't do it. Also, we require the RSSI module to be enabled 		 */
		/* before reading the RSSI.											 */
		if (status.Bits.Mode == 1 || status.Bits.RSSI_Enabled == 0) {
			status.Bits.Error = 1;
			return;
		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线综合视频| 色天使久久综合网天天| 亚洲国产欧美在线| 久久久久九九视频| 欧美日韩国产综合久久| 成人黄页毛片网站| 久久国产乱子精品免费女| 亚洲欧美日韩国产手机在线| 欧美一级国产精品| 在线观看一区不卡| 成人三级在线视频| 韩国一区二区在线观看| 视频一区在线播放| 亚洲人成电影网站色mp4| 国产午夜一区二区三区| 日韩免费高清视频| 欧美日本一区二区在线观看| 99精品国产热久久91蜜凸| 国产精品一区二区久久不卡| 丝袜亚洲另类欧美综合| 一区二区高清在线| 国产精品传媒在线| 欧美激情一区二区三区| 精品国产91九色蝌蚪| 91精品在线免费观看| 欧美三级在线视频| 91久久精品一区二区| 成人h动漫精品一区二区| 国产一区二区看久久| 老司机精品视频在线| 免费看精品久久片| 日本v片在线高清不卡在线观看| 亚洲国产一二三| 伊人夜夜躁av伊人久久| 综合在线观看色| 国产精品美女一区二区| 国产精品久久久久久久久果冻传媒 | 精品一区二区三区在线观看国产| 亚洲成人先锋电影| 亚洲一区二区精品久久av| 自拍av一区二区三区| 国产精品国产三级国产aⅴ中文| 中文一区二区完整视频在线观看| 久久九九99视频| 精品国产一区二区三区四区四 | 亚洲成av人片一区二区三区 | 成人国产视频在线观看| 风间由美性色一区二区三区| 国产福利91精品一区二区三区| 国产精品一区2区| 国产成人免费在线观看不卡| 国产成人精品一区二区三区网站观看| 国产成人夜色高潮福利影视| 成人白浆超碰人人人人| 91蜜桃视频在线| 欧美色手机在线观看| 欧美一区二区在线免费播放| 日韩视频免费直播| 国产欧美日韩精品在线| 亚洲品质自拍视频| 日韩有码一区二区三区| 精品亚洲成a人| av网站一区二区三区| 精品婷婷伊人一区三区三| 91麻豆精品国产91久久久久久久久 | 欧美日韩性生活| 欧美一卡在线观看| 国产欧美精品一区二区色综合| 国产精品久久久久久久久动漫 | 五月天亚洲精品| 国内精品久久久久影院色 | 91黄色在线观看| 欧美一区二区视频在线观看| 久久久久久影视| 亚洲精品免费电影| 蜜桃传媒麻豆第一区在线观看| 国产一区二三区| 色悠悠亚洲一区二区| 欧美一区二区三级| 国产精品久久久久久久久免费丝袜| 亚洲精品欧美专区| 狠狠色丁香婷综合久久| 色婷婷亚洲婷婷| 久久久久一区二区三区四区| 亚洲精品视频自拍| 国产曰批免费观看久久久| av一区二区三区四区| 88在线观看91蜜桃国自产| 欧美高清一级片在线观看| 亚洲123区在线观看| 成人免费电影视频| 欧美一区二区三区啪啪| 亚洲精品视频在线观看免费| 国产一区二区在线观看免费| 欧美怡红院视频| 国产精品少妇自拍| 久久精品国产久精国产| 日本韩国精品在线| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲精品videosex极品| 久久国产精品无码网站| 欧美色网站导航| 国产精品久久久久一区二区三区| 蜜臀av亚洲一区中文字幕| 色婷婷久久久综合中文字幕| 久久精品视频网| 五月婷婷久久综合| 色哟哟一区二区三区| 欧美激情在线观看视频免费| 卡一卡二国产精品| 欧美日本一区二区在线观看| 亚洲色大成网站www久久九九| 精品在线播放免费| 欧美一级黄色片| 午夜视频在线观看一区二区| 99re这里只有精品6| 国产欧美日韩卡一| 国产专区欧美精品| 日韩你懂的在线观看| 三级久久三级久久久| 欧美亚洲一区二区在线| 亚洲欧美另类图片小说| av电影天堂一区二区在线| 国产日韩高清在线| 国产东北露脸精品视频| 久久久久国产成人精品亚洲午夜| 日本不卡一区二区三区高清视频| 在线免费观看日本一区| 一区二区三区在线免费视频| 色综合中文综合网| 欧美性猛片xxxx免费看久爱| 亚洲欧美日韩人成在线播放| zzijzzij亚洲日本少妇熟睡| 国产日韩欧美激情| 国产成人免费9x9x人网站视频| 久久夜色精品国产欧美乱极品| 蜜臀av国产精品久久久久| 91精品国产欧美一区二区18| 天天色图综合网| 91.xcao| 久久爱www久久做| 久久亚洲一级片| 国产成人精品三级麻豆| 国产精品久久久久毛片软件| 成人免费看黄yyy456| 亚洲少妇屁股交4| 91国产免费看| 日韩激情在线观看| 精品国精品自拍自在线| 国产高清一区日本| 国产精品色在线| 91久久精品网| 秋霞午夜av一区二区三区| 日韩精品资源二区在线| 经典三级视频一区| 国产精品家庭影院| 欧美日韩一级二级三级| 青娱乐精品视频| 国产三级精品视频| 色一情一伦一子一伦一区| 视频一区中文字幕国产| 久久众筹精品私拍模特| yourporn久久国产精品| 午夜激情一区二区三区| 久久日一线二线三线suv| 99视频热这里只有精品免费| 亚洲动漫第一页| 久久尤物电影视频在线观看| 波多野结衣亚洲一区| 午夜欧美视频在线观看| 久久尤物电影视频在线观看| 91色九色蝌蚪| 另类小说图片综合网| 国产精品伦一区| 91精品麻豆日日躁夜夜躁| 国产成人精品一区二区三区四区| 一区二区在线观看av| 欧美成人乱码一区二区三区| 成人看片黄a免费看在线| 亚洲成a人片在线观看中文| 久久精品亚洲精品国产欧美| 在线免费观看日韩欧美| 国产精品99久久久久久久女警| 亚洲欧美日韩电影| 久久在线观看免费| 欧美日韩国产系列| 成人美女视频在线观看18| 日韩成人免费电影| 亚洲色欲色欲www在线观看| 欧美精品一区二区三| 色香蕉久久蜜桃| 国产福利一区二区三区视频| 亚洲第一福利视频在线| 欧美国产一区二区| 日韩欧美国产一区二区三区| 色综合久久综合| 国产精品中文字幕欧美| 蜜桃视频一区二区三区在线观看| 亚洲区小说区图片区qvod| 久久欧美中文字幕|