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 }
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); } }
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); } }
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); } }
/*********************************************************************** * * 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 }
void cmd_wait(char *arg) { printf("WAIT start ... "); timer_wait_ms(atoi(arg)); printf("done\n"); }