add real time counter

This commit is contained in:
Conor Patrick
2018-05-30 22:49:34 -04:00
parent b65dfdec76
commit f0e2daa5c7
4 changed files with 9632 additions and 57 deletions

View File

@@ -51,36 +51,93 @@
#include <stdbool.h>
#include <stdio.h>
#include <stdint.h>
#include "nrf.h"
#include "nrf_gpio.h"
#include "nrf_delay.h"
#include "boards.h"
#include "nrf_drv_rtc.h"
#include "nrf_drv_clock.h"
#include "SEGGER_RTT.h"
/**
* @brief Function for application main entry.
#define COMPARE_COUNTERTIME (3UL) /**< Get Compare event COMPARE_TIME seconds after the counter starts from 0. */
#ifdef BSP_LED_0
#define TICK_EVENT_OUTPUT BSP_LED_0 /**< Pin number for indicating tick event. */
#endif
#ifndef TICK_EVENT_OUTPUT
#error "Please indicate output pin"
#endif
#ifdef BSP_LED_1
#define COMPARE_EVENT_OUTPUT BSP_LED_1 /**< Pin number for indicating compare event. */
#endif
#ifndef COMPARE_EVENT_OUTPUT
#error "Please indicate output pin"
#endif
const nrf_drv_rtc_t rtc = NRF_DRV_RTC_INSTANCE(0); /**< Declaring an instance of nrf_drv_rtc for RTC0. */
/** @brief Function starting the internal LFCLK XTAL oscillator.
*/
static void lfclk_config(void)
{
ret_code_t err_code = nrf_drv_clock_init();
APP_ERROR_CHECK(err_code);
nrf_drv_clock_lfclk_request(NULL);
}
static void rtc_config(void)
{
uint32_t err_code;
//Initialize RTC instance
nrf_drv_rtc_config_t config = NRF_DRV_RTC_DEFAULT_CONFIG;
config.prescaler = 32;
err_code = nrf_drv_rtc_init(&rtc, &config, NULL);
APP_ERROR_CHECK(err_code);
//Enable tick event & interrupt
/*nrf_drv_rtc_tick_enable(&rtc,true);*/
/*//Set compare channel to trigger interrupt after COMPARE_COUNTERTIME seconds*/
/*err_code = nrf_drv_rtc_cc_set(&rtc,0,COMPARE_COUNTERTIME * 8,true);*/
/*APP_ERROR_CHECK(err_code);*/
//Power on RTC instance
nrf_drv_rtc_enable(&rtc);
}
int main(void)
{
/* Configure board. */
bsp_board_init(BSP_INIT_LEDS);
lfclk_config();
rtc_config();
SEGGER_RTT_printf(0, "Hello FIDO2\n");
/*SEGGER_RTT_Init();*/
uint32_t count;
int i = 0;
/* Toggle LEDs. */
while (true)
while (1)
{
i++;
for (int i = 0; i < LEDS_NUMBER; i++)
{
bsp_board_led_invert(i);
nrf_delay_ms(100);
nrf_delay_ms(25);
}
count = nrf_drv_rtc_counter_get(&rtc);
printf("toggle\r\n");
SEGGER_RTT_SetTerminal(0);
SEGGER_RTT_printf(0, "Hello World %d!\n", i);
SEGGER_RTT_printf(0, "Hello World %d!\n", count);
SEGGER_RTT_SetTerminal(1);
SEGGER_RTT_printf(0, "Hello World %d!\n", i*i);
SEGGER_RTT_printf(0, "Hello World %d!\n", i);
}
}