Gast
#3503183
Hi! Ich versuche derzeit einen Servo mit einem ATmega328P anzusteuern. Dieser sitzt in einem Arduino UNO. Dieser dient allerdings nur zur Stromversorgung, etc. Programmiert wird ohne Bootloader direkt aus AtmelStudio mit dem AVR ISP mkii. Habe versucht den Code aus folgendem Artikel Modellbauservo Ansteuerung auf meine CPU anzupassen:
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 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
Irgendwas stimmt da aber nicht. Ich bekomme an PB1 eine PWM mit ungefähr gleichbleibender Frequenz von ca. 49Hz. Wenn ich für OCR1A beispielsweise mal 4500 einsetze, was ja 1ms Impulsdauer entsprechen sollte, bekomme ich aber eine Impulsdauer von ca. 17,2ms. Bei OCR1A = 4700 bekomme ich 18,4ms. Für OCR1A = 2000 ist die Impulsdauer 16,7ms. Wenn ich nun für OCR1A 200 einsetze, verändert sich das Tastverhältnis über die Zeit. Irgendjemand eine Idee, was ich falsch mache? Stimmen die Berechnungen für OCR1A so (Siehe Code)? Grüße und schonmal danke!