Estoy tratando de hacer una frecuencia de 60Hz, así es como lo hago:
freq_hz = 60
pca9685_frequency = 25000000.0 #pca9685 clock : 25Mhz
pca9685_resolution = 4096.0 #12 bits resolution
freq_in_step = pca9685_resolution*float(freq_hz)
prescaleval = pca9685_frequency/freq_in_step
print "prescaler value = {}".format(prescaleval)
prescale = int(math.floor(prescaleval + 0.5))
print "however only round values can be set so we wil use {} as a prescaler value".format(prescale)
print "which makes a frequency of {}".format(pca9685_frequency/(prescale*pca9685_resolution))
oldmode = self.pca9685_device.readU8(self.MODE1);
newmode = (oldmode & 0x7F) | 0x10 # sleep
self.pca9685_device.write8(self.MODE1, newmode) # go to sleep
self.pca9685_device.write8(self.PRESCALE, prescale)
self.pca9685_device.write8(self.MODE1, oldmode)
time.sleep(0.005)
self.pca9685_device.write8(self.MODE1, oldmode | 0x80)
En la pantalla, el resultado es:
prescaler value = 101.725260417
Sin embargo, solo se pueden establecer valores redondos, por lo que usaremos 102 como un valor preescalador que hace una frecuencia de 59.8383884804
Pero con mi osciloscopio, un Tektronix TDS210 tengo una frecuencia de 64.1Hz, no 59.84Hz
¿Cometí un error en alguna parte?