MP3(DFR0534)+BLE(TYBLE16)
Dependencies: MP3_DFR0534 mbed-os_TYBLE16
see /users/kenjiArai/notebook/mp3--voice-module-dfr0534/
Diff: main.cpp
- Revision:
- 8:7e42f8dc42a2
- Parent:
- 7:cedbf234a089
- Child:
- 9:8c9e6e270b67
--- a/main.cpp Thu Dec 19 01:43:46 2019 +0000 +++ b/main.cpp Fri Dec 20 01:19:40 2019 +0000 @@ -5,7 +5,7 @@ * http://www.page.sannet.ne.jp/kenjia/index.html * https://os.mbed.com/users/kenjiArai/ * Created: December 14th, 2019 - * Revised: December 19th, 2019 + * Revised: December 20th, 2019 */ // Include -------------------------------------------------------------------- @@ -27,7 +27,7 @@ DigitalOut fram_pwr(D5, 1); // FRAM power on InterruptIn rtc_irq(P0_2, PullUp); Serial pc(USBTX, USBRX); -nRF51_Vdd vdd(3.6f, 1.8f, ONLY4VDD); +nRF51_Vdd vdd(3.6f, 1.6f, ONLY4VDD); // RAM ------------------------------------------------------------------------ uint8_t fram_id[4]; @@ -39,13 +39,13 @@ float barometer; float temperature; float humidity; - + // ROM / Constant data -------------------------------------------------------- const char *const opngmsg0 = "\r\n---------\r\nCompiled on " __DATE__ " " __TIME__ " (UTC)\r\n"; const char *const opngmsg1 = "Project: TYBLE16_simple_data_logger by Kenji Arai\r\n"; - + // Function prototypes -------------------------------------------------------- static void rtc_interrupt(void); static void goto_standby(void); @@ -59,7 +59,7 @@ char buf[64]; // data buffer for text time_t seconds; - ThisThread::sleep_for(100); + ThisThread::sleep_for(20); pc.puts(opngmsg0); pc.puts(opngmsg1); // Check TYBLE-16 configuration @@ -80,14 +80,14 @@ if (id == FRAM_ID) { fram_ready = true; } - if (fram_ready == true){ + if (fram_ready == true) { pc.printf("(looks like Fujitsu MB85RS2M)\r\n"); } else { pc.printf("(unknown device)\r\n"); } // RX8025 RX8025 ex_rtc(I2C_SDA, I2C_SCL); // RTC(RX8025) (Fixed address) - ThisThread::sleep_for(500); + ThisThread::sleep_for(100); ex_rtc.clear_alarmD_INTA(); w_check_rtc_time(ex_rtc); int32_t count = 3; @@ -99,7 +99,7 @@ temperature = bme280.getTemperature(); humidity = bme280.getHumidity(); vcc_voltage = vdd.read_real_value(); - if (count == 1){ + if (count == 1) { pc.printf("%s", buf); pc.printf("%+2.2f,%2.2f,%04.2f,", temperature, humidity, barometer); @@ -122,8 +122,28 @@ sleeping_time); ex_rtc.set_next_alarmD_INTA(sleeping_time); //----- SLEEP -------------------------------------------------------------- + // FRAM & BME280 power off bme280_pwr = 0; fram_pwr = 0; + // SPI output keeps low + DigitalOut p0(SPIS_PSELMOSI, 0); + DigitalOut p1(SPIS_PSELSCK, 0); + DigitalOut p2(P0_25, 0); + DigitalOut p3(P0_6, 0); + // SPI MISO sets pulldown + DigitalIn p4(SPIS_PSELMISO, PullDown); + // Periperal power off + NRF_UART0->ENABLE = 0; + NRF_UART0->POWER = 0; + NRF_TWI1->ENABLE = 0; + NRF_TWI1->POWER = 0; + NRF_SPI0->ENABLE = 0; + NRF_SPI0->POWER = 0; + NRF_SPIS1->ENABLE = 0; + NRF_SPIS1->POWER = 0; + NRF_ADC->ENABLE = 0; + NRF_ADC->POWER = 0; + // Enter sleep mode ThisThread::sleep_for((sleeping_time) * 60 * 1000 + 10000); system_reset(); #else @@ -143,7 +163,7 @@ { time_t seconds_1st, seconds_2nd, diff; struct tm t; - + for (uint32_t i = 0; i < 10; i++) { ex_rtc.get_time_rtc(&t); // read External RTC data seconds_1st = mktime(&t); @@ -151,7 +171,7 @@ seconds_2nd = mktime(&t); diff = seconds_2nd - seconds_1st; if ((diff == 0) || (diff == 1)) { - if (seconds_2nd > DATE_COUNT_START){ + if (seconds_2nd > DATE_COUNT_START) { return seconds_2nd; } }