Revision e8960789
Fixed another overflow bug and removed isqrt
toolbox/current.c | ||
---|---|---|
33 | 33 |
* MUX = 8, PB3(ADC8) |
34 | 34 |
*/ |
35 | 35 |
ADMUX = _BV(MUX3); |
36 |
DIDR1 |= _BV(ADC8D); |
|
37 | 36 |
|
38 | 37 |
/* |
39 | 38 |
* ADLAR = 0, right adjust result |
... | ... | |
69 | 68 |
/* keep a running total of samples and samples squared */ |
70 | 69 |
sum += new; |
71 | 70 |
sum -= old; |
72 |
sum_sq += new*new; |
|
73 |
sum_sq -= old*old; |
|
71 |
sum_sq += (unsigned long)new*new;
|
|
72 |
sum_sq -= (unsigned long)old*old;
|
|
74 | 73 |
} |
75 | 74 |
|
76 |
/*unsigned char isqrt(unsigned int x) { |
|
77 |
unsigned int sqrt, mulmask; |
|
78 |
sqrt = 0; |
|
79 |
mulmask = 0x80; |
|
80 |
if (x > 0) { |
|
81 |
while (mulmask) { |
|
82 |
sqrt |= mulmask; |
|
83 |
if (sqrt * sqrt > x) |
|
84 |
sqrt &= ~mulmask; |
|
85 |
mulmask >>= 1; |
|
86 |
} |
|
87 |
} |
|
88 |
return sqrt; |
|
89 |
}*/ |
|
90 |
|
|
91 | 75 |
unsigned int current_read() { |
92 | 76 |
unsigned int _sum; |
93 | 77 |
unsigned long _sum_sq; |
Also available in: Unified diff