/* set current date time */ EXPORT ER cdSetDateTime(void *date_tim) { DATE_TIM dt; INT year; /* read calendar date time */ dt = *((DATE_TIM *)date_tim); /* BIN -> BCD conversion */ year = (dt.d_year + 1900) % 100; dt.d_year = BINtoBCD(year); dt.d_month = BINtoBCD(dt.d_month); dt.d_wday = BINtoBCD(dt.d_wday); dt.d_day = BINtoBCD(dt.d_day); dt.d_hour = BINtoBCD(dt.d_hour); dt.d_min = BINtoBCD(dt.d_min); dt.d_sec = BINtoBCD(dt.d_sec); /* stop counter temporarily */ rtcWrite(rxCTRL, 0x02); /* set current date time */ rtcWrite(rxSEC, dt.d_sec); rtcWrite(rxMIN, dt.d_min); rtcWrite(rxHOUR, dt.d_hour); rtcWrite(rxWEEK, 0x01); // we do not use day of the week rtcWrite(rxDAY, dt.d_day); rtcWrite(rxMONTH, dt.d_month); rtcWrite(rxYEAR, dt.d_year); /* resume counter */ rtcWrite(rxCTRL, 0x00); return E_OK; }
/* hardware initialization */ EXPORT ER cdInitHardware(void) { ER er; er = em1d512_iicspi_svc(TRUE); if (er >= E_OK) { rtcWrite(rxEXT, 0x00); rtcWrite(rxFLAG, 0x00); rtcWrite(rxCTRL, 0x00); } return er; }
void write16(const u32 address, const u16 value) { switch (address >> 24) { case 8: if (address == 0x80000c4 || address == 0x80000c6 || address == 0x80000c8) { rtcWrite(address, value); } break; case 13: if (game.hasEEPROM()) { eepromWrite(address, (u8)value); } break; case 14: if (game.hasSRAM()) { sramWrite(address, (u8)value); } else if (game.hasFlash()) { flashWrite(address, (u8)value); } break; default: break; } }
void rtcSetEpochSeconds (time_t now) { struct tm tm; localtime_r (&now, &tm); rtcWrite (&tm); }
/* * @Brief: Configure RTC peripheral. * @param RTC_t rtc: RTC structure * @return bool_t true (1) if config it is ok */ bool_t rtcConfig( RTC_t * rtc ){ bool_t ret_val = 1; static bool_t init; RTC_TIME_T rtcTime; if( init ){ /* Already initialized */ ret_val = 0; } else { /* RTC Block section ------------------------- */ Chip_RTC_Init(LPC_RTC); /* Set current time for RTC */ /* Current time is 22:00:00 , 2016-07-02 */ /* rtcTime.time[RTC_TIMETYPE_SECOND] = 0; rtcTime.time[RTC_TIMETYPE_MINUTE] = 0; rtcTime.time[RTC_TIMETYPE_HOUR] = 22; rtcTime.time[RTC_TIMETYPE_DAYOFMONTH] = 2; rtcTime.time[RTC_TIMETYPE_MONTH] = 7; rtcTime.time[RTC_TIMETYPE_YEAR] = 2016; Chip_RTC_SetFullAlarmTime(LPC_RTC, &rtcTime); */ rtcWrite( rtc ); /* Enable rtc (starts increase the tick counter and second counter register) */ Chip_RTC_Enable(LPC_RTC, ENABLE); init = 1; } return ret_val; }
void set_date(int argc, char **argv) { unsigned char *str_rtc; struct rtc_time tmku; int ret; time_t clk; rtc_reset(); rtc_init(); rtc_start(); str_rtc = pvPortMalloc(512); if (str_rtc == NULL) { printf("ERR: alok failed\r\n"); //free(str_rtc); vPortFree(str_rtc); return; } //printf("dapat free %X\r\n", str_rtc); memset(str_rtc, 0, 512); printf(" set_date tahun bulan tanggal jam menit\r\n"); printf(" misalnya : set_date 2010 3 5 10 22\r\n"); printf(" artinya : set waktu ke tgl 5 Maret 2010, jam 10:22 pagi\r\n"); if (argc < 5) { printf("Argument kurang !\r\n"); vPortFree(str_rtc); return; } //display_args(argc, argv); sprintf(str_rtc, "%s:%s:%s:%s:%s", argv[1], argv[2], argv[3], argv[4], argv[5]); ret = sscanf(str_rtc, "%d:%d:%d:%d:%d", &tmku.tm_year, &tmku.tm_mon, &tmku.tm_mday, &tmku.tm_hour, &tmku.tm_min); if (ret < 5) { printf(" ERR: format salah !\r\n"); vPortFree(str_rtc); return; } printf(" Set : %d-%d-%d %d:%d ", tmku.tm_year, tmku.tm_mon, tmku.tm_mday, tmku.tm_hour, tmku.tm_min); tmku.tm_year = tmku.tm_year - 1900; tmku.tm_mon = tmku.tm_mon - 1; tmku.tm_sec = 0; debug_printf(" OK : %d-%d-%d %d:%d\r\n", tmku.tm_year, tmku.tm_mon, tmku.tm_mday, tmku.tm_hour, tmku.tm_min); /* if (rtc_valid_tm(&tmku)) { printf(" ERR: waktu tidak mungkin !\r\n"); return; }*/ //rtc_set_time_tm( tmku ); rtcWrite( &tmku ); //clk = mktime(&tmku); //ret = rtc_time_to_bfin(clk); //bfin_write_RTC_STAT(ret); vPortFree(str_rtc); printf(" ..OK\r\n"); }
/* FUNCION PRINCIPAL, PUNTO DE ENTRADA AL PROGRAMA LUEGO DE RESET. */ int main(void){ /* ------------- INICIALIZACIONES ------------- */ /* Inicializar la placa */ boardConfig(); /* Inicializar el conteo de Ticks con resolución de 1ms, sin tickHook */ tickConfig( 1, 0 ); /* Inicializar DigitalIO */ digitalConfig( 0, ENABLE_DIGITAL_IO ); /* Configuración de pines de entrada para Teclas de la CIAA-NXP */ digitalConfig( TEC1, INPUT ); digitalConfig( TEC2, INPUT ); digitalConfig( TEC3, INPUT ); digitalConfig( TEC4, INPUT ); /* Configuración de pines de salida para Leds de la CIAA-NXP */ digitalConfig( LEDR, OUTPUT ); digitalConfig( LEDG, OUTPUT ); digitalConfig( LEDB, OUTPUT ); digitalConfig( LED1, OUTPUT ); digitalConfig( LED2, OUTPUT ); digitalConfig( LED3, OUTPUT ); /* Inicializar UART_USB a 115200 baudios */ uartConfig( UART_USB, 115200 ); /* Estructura RTC */ RTC_t rtc; rtc.year = 2016; rtc.month = 7; rtc.mday = 3; rtc.wday = 1; rtc.hour = 13; rtc.min = 17; rtc.sec= 0; bool_t val = 0; uint8_t i = 0; /* Inicializar RTC */ val = rtcConfig( &rtc ); delay_t delay1s; delayConfig( &delay1s, 1000 ); delay(2000); for( i=0; i<10; i++ ){ /* Leer fecha y hora */ val = rtcRead( &rtc ); /* Mostrar fecha y hora en formato "DD/MM/YYYY, HH:MM:SS" */ showDateAndTime( &rtc ); delay(1000); } rtc.year = 2016; rtc.month = 7; rtc.mday = 3; rtc.wday = 1; rtc.hour = 14; rtc.min = 30; rtc.sec= 0; /* Establecer fecha y hora */ val = rtcWrite( &rtc ); /* ------------- REPETIR POR SIEMPRE ------------- */ while(1) { if( delayRead( &delay1s ) ){ /* Leer fecha y hora */ val = rtcRead( &rtc ); /* Mostrar fecha y hora en formato "DD/MM/YYYY, HH:MM:SS" */ showDateAndTime( &rtc ); } } /* NO DEBE LLEGAR NUNCA AQUI, debido a que a este programa no es llamado por ningun S.O. */ return 0 ; }