|
PWM mit Attiny2313
PWM steht für Pulsweitenmodulation
(engl.: pulse width modulation).
Eigentlich ist das bessere deutsche
Wort für unsere Anwendung: Pulsbreitensteuerung.
Hier wird erklärt, was es
ist und was man damit alles machen kann.
Experiment:
Eine LED an OC0A (PB2) in 4 Helligkeitsstufen
leuchten
lassen:
Hier der Code:
#include <avr/io.h>
#define F_CPU 8000000UL // 8 MHz (fuer delay.h)
#include <util/delay.h>
int main(void){
//Hardware-PWM initialisieren
DDRB |= _BV(PB2);
TCCR0A = (1<<WGM11) | (1<<WGM10) |
(1<<COM1A1); TCCR0B = (1<<CS10);
while(1){
OCR0A = 0;
_delay_ms(250);_delay_ms(250); //dunkel
OCR0A = 30;
_delay_ms(250);_delay_ms(250); //schwach leuchtend
OCR0A = 80;
_delay_ms(250);_delay_ms(250); //staerker leuchtend
OCR0A = 255;
_delay_ms(250);_delay_ms(250); //volle Helligkeit
}
return 0;
}
Hier der Quelltext-Ordner.
Anmerkungen
und
Aufgaben:
- Du kannst (eventuell mit einem zusätzlichen Transistor) auch
gewaltige superhelle LEDs
oder Lampen
sowie Gleichstrommotoren und Servomotoren ansteuern. Das findest Du auf
der Mikrocontrollerspielwiese auch für andere Mikrocontroller hier.
- Ich geb's zu: Die Harware-PWM-Befehle sind ziemlich
unübersichtlich.
Wenn Du genau das Benutzen der PWM-Funktionen erkunden
willst, kannst Du das auch alles in den Datenblättern
nachlesen.
|