Can I use nRF51822 to generate system time ?

Hey guys,

  1. I need to record many time interval ?, can i generate system time and use it to record all of my time intervals?
  2. If I want to send all of the time intervals to App via BLE, how could I do ?

Best regards,


  • You can implement your own system time by starting TIMER1/TIMER2 or RTC1 when the system starts. Using RTC1 might be good selection but it will have a overflow every 582 hours if you use the prescaler of (2^12 -1).

    If you use TIMER1 or TIMER2 then those will keep HFCLK enabled in sleep modes making your power go up.

    1. there is no system time function in SDK or C library that uses nrf clocks. You have to implement your own

    2. use one of examples like ble_app_hrs and use that service to send your tailored data to APP. There are many tutorials/blogs and documentation in devzone to give you a kickstart.

  • Hi Aryan,

    Thanks for your answer.

    What can i do to keep HFCLK enable in sleep modes making my power go up ?

    And can you recommend me some tutorials/blogs and documentation about data transfer between my BLE device and App ?

    Best regards, Billy

  • Any of the modules in the system that use HFCLK when started and not stopped before going to sleep will keep the HFCLK enabled. For example, if you enable and start Timer1 and then call sd_app_evt_wait(), then Timer1 will be on and it will keep the HFCLK on.

    for your tutorials, try these This will give you basic idea of how to do things. Follow the blog posts of @electronut , where he has done many different applications with data over BLE by just using NUS (Nordic Uart service).

  • Thanks Aryan. If I want to to use timer to timing when the softdevice is enable, is it different from when the software is disable? How could i do?

    Best regards, Billy Hu

  • You cannot use Timer0 as it is used by softdevice. Check the softdevice specifications to see what peripherals are reserved by it and hence cannot be used application. You can also only use IRQ priority 1 and 3 (APP_PRIORITY_HIGH and APP_PRIORITY_LOW) with the timers when softdevice is enabled. There is another way to use highest priority if you use TimeSlot API.