blob: a1096bbe2b5895bec7df68905bc8d70fed29530e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// Small rand() implementation
//
// The libc rand implementation takes to much flash space, so an smaller rand() function is used.
#include "quantum.h"
int rand(void)
{
// static unsigned int z4;
unsigned int z1, z2, z3, z4;
int r;
unsigned int b;
z1 = timer_read32();
z2 = 12345;
z3 = 12345;
z4 = z1 << 8;
b = ((z1 << 6) ^ z1) >> 13;
z1 = ((z1 & 4294967294U) << 18) ^ b;
b = ((z2 << 2) ^ z2) >> 27;
z2 = ((z2 & 4294967288U) << 2) ^ b;
b = ((z3 << 13) ^ z3) >> 21;
z3 = ((z3 & 4294967280U) << 7) ^ b;
b = ((z4 << 3) ^ z4) >> 12;
z4 = ((z4 & 4294967168U) << 13) ^ b;
r = z1 ^ z2 ^ z3 ^ z4;
// z4 = r;
return r;
}
|