Project

General

Profile

Revision e8960789

IDe8960789096a564c4ccafc9518cd0178d38d485b
Parent db11713d
Child c12b6be5

Added by Thomas Mullins about 11 years ago

Fixed another overflow bug and removed isqrt

View differences:

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