Josef schrieb:
> Bitte reitet nicht darauf wenn Fehler drin sind, ich bin blutiger
> Anfänger und man lernt bekanntlich ja nur aus Fehlern..
Nicht ganz.
Ganz am Anfang funktioniert das Konzept des 'Try and Error' noch nicht.
D.h. es funktioniert schon, aber nur im Zusammenhang mit etwas/jemandem
der einen leitet. Zb ei C-Buch
> if(start=10)
Das hier ist eine Zuweisung und kein Vergleich. Ein Vergleich auf
Gleichheit schreibt sich als == und nicht als =
Den Rest des Codes hab ich mir nicht mehr genauer angesehen. Auf den
ersten Blick sieht er aber mehr als wie die Generierung von
Servo-Signalen. Auch wenn man Servo Signale als eine Form von PWM
ansehen kann, so ist das trotzdem nicht zielführend, Servo Code als
Beispiel für eine PWM anzusehen, an der man das Konzept einer PWM lernen
möchte.
Vereinfacht sieht eine Software-PWM so aus (stark vereinfacht. So würde
man das in einem echten Programm ganz sicher nicht machen)
1 | int main()
|
2 | {
|
3 | uint8_t pwmCnt = 0;
|
4 | uint8_t pwmLevel;
|
5 |
|
6 | ...
|
7 |
|
8 | pwmLevel = 20;
|
9 |
|
10 | while( 1 )
|
11 | {
|
12 | pwmCnt++;
|
13 |
|
14 | if( pwmCnt > pwmLevel )
|
15 | PORTC |= ( 1 << PC1 );
|
16 | else
|
17 | PORTC &= ~( 1 << PC1 );
|
18 | }
|
19 | }
|
durch einen anderen Wert in pwmLevel ergibt sich eine andere zeitliche
Verteilung dafür, wie lange der Pin auf 1 respektive 0 ist. Und genau
darum geht es bei PWM: die Variation dieser zeitlichen Verteilung.