Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdint.h>
- #include "pru_ecap.h"
- // initialization using py-uio:
- // pruss.ecap.pwm.initialize( 2**32 )
- //
- // initialization using pru:
- static void timestamp_initialize()
- {
- CT_ECAP.ECCTL2 = 0x0200;
- CT_ECAP.ECCTL1 = 0;
- CT_ECAP.TSCTR = 0;
- CT_ECAP.CAP3 = 0xffffffff;
- CT_ECAP.CAP4 = 0;
- CT_ECAP.CAP1 = 0xffffffff;
- CT_ECAP.CAP2 = 0;
- CT_ECAP.ECCTL2 = 0x0210;
- }
- // returns timestamp in units of 1 pru cycle (= 5ns).
- // timestamp wraps every 21.47483648 seconds (exactly).
- static inline uint32_t timestamp()
- {
- return CT_ECAP.TSCTR;
- }
- // returns timestamp in units of 65536 pru cycles (= 0.32768 ms).
- // must be called at least once every 21 seconds to ensure correct timekeeping.
- // timestamp wraps every 16 days (approximately).
- uint32_t timestamp_shr16()
- {
- static uint32_t now = 0;
- return now += (uint16_t)( ( timestamp() >> 16 ) - now );
- }
- // returns 64-bit timestamp in units of pru cycles (= 5 ns).
- // must be called at least once every 21 seconds to ensure correct timekeeping.
- // timestamp never wraps.
- uint64_t timestamp64()
- {
- static uint64_t now = 0;
- return now += (uint32_t)( timestamp() - now );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement