PWM schrieb:
> Hier hätte ich gleich eine Frage vorab: Wie genau ist so eine Soft-PWM?
> Wird man damit glücklich, insbesondere wenn man mehrere an einem kleinen
> Controller betreiben möchte?
Naja, kommt drauf an was Dein uC sonst noch machen muss ausser PWM.
Du musst sicher mal mit einem Timerinterrupt arbeiten, welcher eine
Variable hochzählt.
Im Prinzip etwa so (Pseudocode):
1 | static int zaehler = 0;
|
2 |
|
3 | if (zaehler < max) {
|
4 | if (zaehler < pwm1) {
|
5 | output1 = 1;
|
6 | } else {
|
7 | output1 = 0;
|
8 | }
|
9 |
|
10 | if (zaehler < pwm2) {
|
11 | output2 = 1;
|
12 | } else {
|
13 | output2 = 0;
|
14 | }
|
15 |
|
16 | if (zaehler < pwmN) {
|
17 | outputN = 1;
|
18 | } else {
|
19 | outputN = 0;
|
20 | }
|
21 |
|
22 | zaehler++;
|
23 | } else {
|
24 | zaehler = 0;
|
25 | }
|
Damit kannst Du prinzipiell beliebig viele PWM Signale machen.
Du musst sicherstellen, dass Deine anderen Interruptroutinen möglichst
schnell abgearbeitet werden, sonst flackert es dann unschön.