Example #1
0
/**********************************************************************
 *	n x 2ms待つ.
 **********************************************************************
 */
void delay2ms(uchar n)
{
	uchar i;
	for(i=0;i<n;i++) {
		delay8(250);	//2mS
	}
}
Example #2
0
static int nrf24_tx_result_wait(void) {
	uint8_t status;
	uint16_t count = 10000; /* ~100ms timeout */

	status = nrf24_read_status();

	/* Reset CE early so that a new Tx or Rx op can start sooner. */
	nrf24_ce(0);

	while ((!(status & (1 << TX_DS)) || (status & (1 << TX_FULL))) &&
			!(status & (1 << MAX_RT)) && --count) {
		delay8((int) (F_CPU / 8000L * 0.01));
		status = nrf24_read_status();
	}

	/* Reset status bits */
	nrf24_write_reg(STATUS, (1 << MAX_RT) | (1 << TX_DS));

	if (nrf24_in_rx) {
		nrf24_in_rx = 0;

		nrf24_rx_mode();
	}

	return (status & (1 << TX_DS)) ? 0 : -1;
}
Example #3
0
/**********************************************************************
 *	キースキャン: 定時処理
 **********************************************************************
 */
void keybd_scan()
{
	uchar i,c,trig;

	//
	//	一周 回ったあとの処理.
	//
	if(	scan_cnt>=MAX_SCAN_COLUM) {
		if(	trig_keycnt==1 ) {			//検出キーが1つの場合、
			keybd_exec(trig_key);		//そのキーに対応する処理を実行する.
		}
		scan_init();		//次の周回のための変数初期化.
		return;
	}
	//
	//	逐次処理.
	//
	i=scan_cnt;
	{
//		DDRD=pulldn_tbl[i+2];		テーブルはSRAMを食うので下のアルゴリズム処理に変更.
		DDRD=pulldn_tbl(i+2);		// プルダウン共通線のLow出力を1本のみセットする.

		delay8(2);
		scan_cnt++;

		c = PINB;c ^= 0xff; c &= MASK;
		trig = (c & (kb_stat[i] ^ MASK));	//トリガ抽出.

//		if(trig) keybd_trigger(i,trig);		//押された初回のみに反応.
		if(c)    keybd_trigger(i,c);		//押されていれば常に反応.

		kb_stat[i]=c;
	}
}