Beispiel #1
0
void cmd_reboot() {
	if(sci_getport() == SCI_USB0) {
		sci_puts("5秒後にリセットします。それまでの間にUSB仮想COMポートを閉じてください。 ");
		buzz_ok();
		timer_wait_ms(1000);
		sci_puts("4 ");
		buzz_ok();
		timer_wait_ms(1000);
		sci_puts("3 ");
		buzz_ok();
		timer_wait_ms(1000);
		sci_puts("2 ");
		buzz_ok();
		timer_wait_ms(1000);
		sci_puts("1 ");
		buzz_ok();
		timer_wait_ms(1000);
		sci_puts("0 ");
	}
	buzz_ok();
#ifdef CPU_IS_RX62N
	WDT.WRITE.WINB = 0x5a5f; // RSTCSR書き込み。オーバーフローでリセット発生あり
	WDT.WRITE.WINA = 0xa5fc; // TCSR書き込み。WDT開始。5ms後にオーバーフロー
	sci_puts("system reboot!\n");
#endif
#ifdef CPU_IS_RX63N
	sci_puts("RX63N cannot reboot yet...\n");
#endif
}
Beispiel #2
0
void buzz_ng() {
	int i;
	for(i=0;i<100;i++)
	{
		gpio_write_port(PIN_BUZZ,1);
		timer_wait_ms(4);
		gpio_write_port(PIN_BUZZ,0);
		timer_wait_ms(4);
	}
}
Beispiel #3
0
void entry(void)
{
	int8_t tag_angle;

	/* set advertisment packet */
	radio_advertise(&g_beacon_pkt, sizeof(g_beacon_pkt));
	/* run advertisement in background every 995ms */
	radio_interval_ms(995);

	/* infinite foreground loop */
	while(TRUE)
	{
		/* get tag angle from 3D accelerometer */
		acc_magnitude(&tag_angle);
		/* only tx while beacon is worn (facing forward +/-45 degree) */
		radio_enable(abs(tag_angle)<45);

		/* blink once every three seconds */
		timer_wait_ms(3000);
		pin_set(CONFIG_LED_PIN);
		timer_wait_ms(1);
		pin_clear(CONFIG_LED_PIN);
	}
}
Beispiel #4
0
void loop()
{
	analogWrite(PIN_LED0,ledbright(x));
	analogWrite(PIN_LED1,ledbright(x + 64));
	analogWrite(PIN_LED2,ledbright(x + 128));
	analogWrite(PIN_LED3,ledbright(x + 192));
	x++;
	x = x & 255;

/*
	int mtu0,mtu1;
	mtu0 = MTU0.TCNT;
	mtu1 = MTU1.TCNT;
	Serial.print("MTU0=");
	Serial.print(mtu0);
	Serial.print(" MTU1=");
	Serial.print(mtu1);
	Serial.print("\n");
*/

	if(Serial.available())
	{
		anyreceived = 1;
		char c = Serial.read();
		analogWrite(PIN_ARD0,x);
		
		digitalWrite(PIN_LED0,c & 1);
		digitalWrite(PIN_LED1,c & 2);
		digitalWrite(PIN_LED2,c & 4);
		digitalWrite(PIN_LED3,c & 8);
		Serial.write(c);
	}
	else
	{
		timer_wait_ms(5);
	}
}
Beispiel #5
0
/***********************************************************************
 *
 * Function: ddr_if_init
 *
 * Purpose: Sets up DDR interface and initial calibration
 *
 * Processing:
 *     See function.
 *
 * Parameters:
 *    cfg: Dynamic configuration value
 *
 * Outputs: None
 *
 * Returns: Nothing
 *
 * Notes: None
 *
 **********************************************************************/
static void ddr_if_init(UNS_32 cfg)
{
	UNS_32 tmp, ringosccount;
	int idx;

	/* Use nominal rate for DDR clocking */
	tmp = CLKPWR->clkpwr_hclk_div & ~(0x3 << 0x7);
	CLKPWR->clkpwr_hclk_div = tmp | CLKPWR_HCLKDIV_DDRCLK_NORM;

	/* Resync DDR clocks */
	ddr_clock_resync(cfg);

	/* Enable calibration logic with low calibration sensitivity and
	   a guessed first DQSIN delay value. This is just temporary and
	   is used for the next step. */
	CLKPWR->clkpwr_sdramclk_ctrl |= CLKPWR_SDRCLK_USE_CAL |
		CLKPWR_SDRCLK_SENS_FACT(7) | CLKPWR_SDRCLK_DQS_DLY(0xF);

	/* Force calibration 10 times and save the average value */
	ringosccount = 0;
	for (idx = 0; idx < 10; idx++)
	{
		CLKPWR->clkpwr_sdramclk_ctrl |= CLKPWR_SDRCLK_DO_CAL;
		CLKPWR->clkpwr_sdramclk_ctrl &= ~CLKPWR_SDRCLK_DO_CAL;
		timer_wait_ms(TIMER_CNTR0, 25);
		ringosccount += CLKPWR->clkpwr_ddr_lap_count;
	}

	/* use the average for the nominal ring oscillator value */
	CLKPWR->clkpwr_ddr_lap_nom = ringosccount / 10;

	/* Enable automatic RTC tick calibration, but keep calibration off
	   for now until uncalibrated DQS delay is found. */
	CLKPWR->clkpwr_sdramclk_ctrl |= CLKPWR_SDRCLK_CAL_ON_RTC;
	CLKPWR->clkpwr_sdramclk_ctrl &= ~CLKPWR_SDRCLK_USE_CAL;

	/* Setup CAS and RAS latencies */
	EMC->emcdynamicrascas0 =
		EMC_SET_CAS_IN_HALF_CYCLES(SDRAM_CAS_LATENCY) |
		EMC_SET_RAS_IN_CYCLES(SDRAM_RAS_LATENCY);

#ifdef USE_DUAL_SDRAM_DEVICES
	EMC->emcdynamicrascas1 =
		EMC_SET_CAS_IN_HALF_CYCLES(SDRAM_CAS_LATENCY) |
		EMC_SET_RAS_IN_CYCLES(SDRAM_RAS_LATENCY);
#endif

	/* Setup DDR read strategy */
	EMC->emcdynamicreadconfig = (EMC_SDR_CLK_NODLY_CMD_DEL |
	    EMC_SDR_READCAP_POS_POL | EMC_DDR_CLK_NODLY_CMD_DEL);

	/* Setup slew rates */
#ifdef SDRAM_USE_SLOW_SLEW
	CLKPWR->clkpwr_sdramclk_ctrl |= (CLKPWR_SDRCLK_SLOWSLEW_CLK |
		CLKPWR_SDRCLK_SLOWSLEW | CLKPWR_SDRCLK_SLOWSLEW_DAT);

#else
	CLKPWR->clkpwr_sdramclk_ctrl &= ~(CLKPWR_SDRCLK_SLOWSLEW_CLK |
		CLKPWR_SDRCLK_SLOWSLEW | CLKPWR_SDRCLK_SLOWSLEW_DAT);
#endif
}
Beispiel #6
0
void cmd_wait(char *arg)
{
	printf("WAIT start ... ");
	timer_wait_ms(atoi(arg));
	printf("done\n");
}