From 875675c886d1ab96124ddcae1402fff35a37c011 Mon Sep 17 00:00:00 2001 From: edolomb Date: Mon, 26 Feb 2018 22:28:41 +0000 Subject: RTC demo git-svn-id: https://svn.code.sf.net/p/chibios/svn2/trunk@11561 110e8d01-0319-4d1e-a829-52ad28d1bb01 --- testhal/ATSAMA5D2/RTC/main.c | 100 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 testhal/ATSAMA5D2/RTC/main.c (limited to 'testhal/ATSAMA5D2/RTC/main.c') diff --git a/testhal/ATSAMA5D2/RTC/main.c b/testhal/ATSAMA5D2/RTC/main.c new file mode 100644 index 000000000..6f0556946 --- /dev/null +++ b/testhal/ATSAMA5D2/RTC/main.c @@ -0,0 +1,100 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include "ch.h" +#include "hal.h" +#include "chprintf.h" +#include "string.h" +#include + +#define SIZE 30 + +RTCDateTime cfg_time = { + 38, + 2, + 0, + 1, + 26, + 46824000 +}; + +RTCDateTime now_DateTime; +struct tm now_tm; + +char buffer[SIZE]; + +static const SerialConfig sdcfg = { + 115200, + 0, + UART_MR_PAR_NO +}; + +/* + * LED blinker thread, times are in milliseconds. + */ +static THD_WORKING_AREA(waThread1, 512); +static THD_FUNCTION(Thread1, arg) { + + (void)arg; + chRegSetThreadName("blinker"); + + while (true) { + palToggleLine(LINE_LED_BLUE); + chThdSleepMilliseconds(500); + } +} + +/* + * Application entry point. + */ +int main(void) { + + /* + * System initializations. + * - HAL initialization, this also initializes the configured device drivers + * and performs the board-specific initializations. + * - Kernel initialization, the main() function becomes a thread and the + * RTOS is active. + */ + halInit(); + chSysInit(); + + /* + * Activates the serial driver 1 using the driver default configuration. + */ + sdStart(&SD1, &sdcfg); + + /* Redirecting UART1 RX on PD2 and UART1 TX on PD3. */ + palSetGroupMode(PIOD, PAL_PORT_BIT(2) | PAL_PORT_BIT(3), 0U, + PAL_SAMA_FUNC_PERIPH_A | PAL_MODE_SECURE); + + chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO , Thread1, NULL); + + /* + * Configures date + */ + rtcSetTime(&RTCD0, &cfg_time); + + while (true) { + if(!palReadPad(PIOB, PIOB_USER_PB)) { + rtcGetTime(&RTCD0, &now_DateTime); + rtcConvertDateTimeToStructTm(&now_DateTime, &now_tm, NULL); + strftime(buffer, SIZE, "%Y-%m-%d %H:%M:%S", &now_tm); + chprintf((BaseSequentialStream *) &SD1,"Current time:%s\n\r",buffer); + } + chThdSleepMilliseconds(1000); + } +} -- cgit v1.2.3