View difference between Paste ID: TkFpy87h and PBXzCFAD
SHOW: | | - or go back to the newest paste.
1-
moved to https://pastebin.com/PhSU0kPc
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
}