Advertisement
zmatt

pru ecap timestamp seconds.c

Jun 14th, 2021 (edited)
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // This assumes PRUSS is clocked at 200 MHz, which is its typical clock frequency.
  2. //
  3. // A more generic version of this code for any frequency and period: https://pastebin.com/rBR4v35a
  4.  
  5. // Initialization from python (using py-uio):
  6. //    pruss.ecap.pwm.initialize( 200000000 )  # 1 second period
  7.  
  8. struct Timestamp {
  9.     uint32_t s;
  10.     uint32_t ns;
  11. };
  12.  
  13. // Returns timestamp in seconds and nanoseconds (with 5ns precision).
  14. // Must be called at least once every second to ensure correct timekeeping.
  15. struct Timestamp timestamp()
  16. {
  17.     static struct Timestamp now = { 0, 0 };
  18.     uint32_t ns = CT_ECAP.TSCTR * 5;
  19.     if( ns < now.ns )  // ecap counter has wrapped
  20.         ++now.s;
  21.     now.ns = ns;
  22.     return now;
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement