AVR Embedded Tutorial - Analog Write/de
From Free Pascal wiki
Jump to navigationJump to search
PWM Analog Write
Titel
In diesem Beispiele wird ein Atmega328 verwendet.
Sleep
Eine einfache Pausenfunktion, das die LEDs langsam hell und dunkel werden.
procedure sleep;
var
i: Int16;
begin
for i := 0 to 1999 do asm Nop end;
end;
Beispiel
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.
var
i: integer;
begin
// PD6 und PD7 auf Ausgang
DDRD := %01100000;
// PD6 und PD7 als PWM
TCCR0A := (%10 shl COM0A) or (%10 shl COM0B) or (%01 shl WGM0);
// Timer 0 aktivieren, Clock / 1024
TCCR0B := TCCR0B or %101;
// Hauptschleife, welche die LEDs kontunierlich heller und dunkler macht.
repeat
for i := 0 to 255 do begin
OCR0A := i;
OCR0B := 255 - i;
sleep;
end;
for i := 0 to 255 do begin
OCR0A := 255 - i;
OCR0B := i;
sleep;
end;
until 1 = 2;
end.
Stolperfalle
Hinweis: Da PWM auch mittels Timer gesteuert ist, kann es Überschneidungen mit den Timerfunktionen geben.
Für Timerfunktionen siehe hier:
Siehe auch
- Übersichtseite AVR Embedded Tutorial/de