Gast
#4559938
Hi Ich versuche mich gerade das erste mal an I2C um eine Servo anzusteuern. Es wird ein PCA9685 verwendet, denn ich mit einem Arduino Uno über GND, SDAm und SCL verbunden habe. Datenblatt: https://cdn-shop.adafruit.com/datasheets/PCA9685.pdf Ich möchte also nun die PWM Frequenz auf 50Hz setzen und den duty cycle zwischen 0.8ms bis 2.2ms. Aus dem Datenblatt habe ich entnommen, dass das Bit SLEEP im MODE1 Register(#0x00) auf 1 gesetzt werden muss um den Prescaler zu setzen. Bei der Berechnung des Prescalers fehlt mir die osc_clock, wo kann ich die finden (ich verwende die interne clock)? Die Berechnung ist dann auf S.25 des Datenblattes. Ich habe noch nicht ganz verstanden, wie man die PWM der einzelnen Outputs setzen kann; Die einzelnen Register für die Ausgänge sind ja 12 bit und daher mit Low/High adressierbar. Ist der Wert denn ich dort reinschreibe direkt die Limite für den Counter? Also wenn ich jetzt z.B 500 reinschreibe ist der duty cycle 500/4096? Hier noch den Code, denn ich implementiert habe:
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 | |
32 | |
Grüsse Pascal