Sign in Join
Wiki copytemporary

AVR Embedded Tutorial - Analog Write/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: AVR Embedded Tutorial - Analog Write/de

OldNewLine
1+# PWM Analog Write
2+
3+## Titel
4+
5+In diesem Beispiele wird ein Atmega328 verwendet.
6+
7+## Sleep
8+
9+Eine einfache Pausenfunktion, das die LEDs langsam hell und dunkel werden.
10+
11+``` pascal
12+ procedure sleep;
13+ var
14+ i: Int16;
15+ begin
16+ for i := 0 to 1999 do asm Nop end;
17+ end;
18+```
19+
20+## Beispiel
21+
22+In diesem Beispiel wird die PWM Frequenz sehr langsam eingestellt, so das man ein Flackern der LEDs wahr nimmt. So sieht man gut, das ein analoger Ausgang in Wirklichkeit moduliert ist. Folgendes muss eingestellt werden:
23+
24+- Mit **DDRx** müssen die PWM-Ausgänge als Ausgang eingestellt werden.
25+- **COMxx** gibt die Pins an, auf PWM laufen sollen, beim ATmega328 gibt es 6 Pins, welche in diesem Modus laufen können. Wobei jeder Timer 2 Ausgänge bedienen kann.
26+- **WGM** aktiviert die PWM-Ausgabe beim Timer.
27+- **TCCR0B** wird auf einen Clock von 1024 eingestellt, wählt man einen kleineren Wert, dann sieht man kein Flackern der LEDs mehr.
28+- **OCR0** gibt die HIGL Länge der Modulation an. 0 ist aus, 128 Mittelwert und 255 ist das Maximum.
29+
30+``` pascal
31+var
32+ i: integer; // Schleifenzähler
33+begin
34+ // PD5 und PD6 auf Ausgang
35+ DDRD := %01100000;
36+
37+ // PD5 und PD6 als PWM
38+ TCCR0A := (%10 shl COM0A) or (%10 shl COM0B) or (1 shl WGM0);
39+
40+ // Timer 0 aktivieren, Clock / 1024
41+ TCCR0B := TCCR0B or %101;
42+
43+ // Hauptschleife, welche die LEDs kontinuierlich heller und dunkler macht.
44+ repeat
45+ for i := 0 to 255 do begin
46+ OCR0A := i;
47+ OCR0B := 255 - i;
48+ sleep;
49+ end;
50+ for i := 0 to 255 do begin
51+ OCR0A := 255 - i;
52+ OCR0B := i;
53+ sleep;
54+ end;
55+ until False;
56+end.
57+```
58+
59+## Stolperfalle
60+
61+> **Note:** Da PWM mittels Timer gesteuert ist, kann es Überschneidungen mit den Timerfunktionen geben.
62+
63+Für Timerfunktionen siehe hier:
64+
65+- [[AVR Embedded Tutorial - Timer, Counter/de|Timer/Zähler]]
66+
67+## Siehe auch
68+
69+- Übersichtseite [[AVR Embedded Tutorial/de|AVR Embedded Tutorial]]
70+
71+Autor: Mathias
72+
73+---
74+*From the Free Pascal wiki, page "AVR Embedded Tutorial - Analog Write/de", as it stood on 2020-10-19 after a change by Mathias, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
75+Category: AVR/de
76+Category: Arduino/de
77+Category: Deutsch
78+Category: Embedded/de
79+Category: Tutorials/de

Back to history