diff --git a/dwescape/Adafruit_PWM_Servo_Driver.py b/dwescape/Adafruit_PWM_Servo_Driver.py index 35c993c..6d10385 100644 --- a/dwescape/Adafruit_PWM_Servo_Driver.py +++ b/dwescape/Adafruit_PWM_Servo_Driver.py @@ -50,7 +50,7 @@ class PWM : self.i2c.write8(self.__MODE2, self.__OUTDRV) self.i2c.write8(self.__MODE1, self.__ALLCALL) time.sleep(0.005) # wait for oscillator - + mode1 = self.i2c.readU8(self.__MODE1) mode1 = mode1 & ~self.__SLEEP # wake up (reset sleep) self.i2c.write8(self.__MODE1, mode1) @@ -77,6 +77,17 @@ class PWM : time.sleep(0.005) self.i2c.write8(self.__MODE1, oldmode | 0x80) + def getPWMFreq(self): + if (self.debug): + print "Getting PWM frequency Hz" + + prescale = self.i2c.readU8(self.__PRESCALE) + + print "Got pre-scale: %d" % prescale + print 25000000.0 / 4096.0 / ( float(prescale) + 1 ) + return 25000000.0 / 4096.0 / ( float(prescale) + 1 ) + #24576000.f / 4096.f / (data + 1) + def setPWM(self, channel, on, off): "Sets a single PWM channel" self.i2c.write8(self.__LED0_ON_L+4*channel, on & 0xFF) diff --git a/dwescape/dwescapeHAT.py b/dwescape/dwescapeHAT.py index 5542ef4..2f63f2e 100644 --- a/dwescape/dwescapeHAT.py +++ b/dwescape/dwescapeHAT.py @@ -64,15 +64,15 @@ class dw_PWM: def setPWM(self, value): if(value > 0): - self.MC._pwm.setPWM(self.pin, 0, value) + self.MC._pwm.setPWM(self.pin, 0, int(value) ) if(value == 0): self.off() def setPWMmS(self, length_ms): - self.setPWM( math.round( length_ms * 4096 ) / ( 1000 / self.freq ) ) + self.setPWM( round( length_ms * 4096 ) / ( 1000 / self.freq ) ) def setPWMuS(self, length_us): - self.setPWM( math.round( length_ms * 4096 ) / ( 1000000 / self.freq ) ) + self.setPWM( round( length_us * 4096 ) / ( 1000000 / self.freq ) ) def run(self, command, speed = 0): if not self.MC: