Schritt 15: Einrichten der PWM
void initPins(void)
{
//---------------------------------------------------------------------
TCCR2A Einstellungen
//---------------------------------------------------------------------
Diese Bits steuern die Ausgabe vergleichen Pin (OC2A) Verhalten. Wenn eine oder
sowohl die COM2A1:0 Bits gesetzt sind, die OC2A Ausgabe überschreibt die
normalen Port Funktionalität der I/O Pin ist es mit verbunden.
Beachten Sie jedoch, dass die Daten Richtung registrieren (DDR) etwas
entsprechend der OC2A-Pin muss festgelegt werden, damit können die
Ausgangstreiber.
Wenn die Pin, die Funktion der COM2A1:0 Bits OC2A verbunden ist
richtet sich nach den WGM22:0 etwas einstellen.
//
Schnelle PWM Modus
COM2A1 COM2A0
0 0 normaler Hafenbetrieb, OC2A getrennt.
0-1 WGM22 = 0: normaler Hafenbetrieb, OC0A nicht getrennt.
WGM22 = 1: OC2A bei Compare Match zu wechseln.
1 0 klar OC2A auf vergleichen Spiel eingestellt OC2A unten
1 1 klar OC2A vergleichen Match klar OC2A unten
CBI(TCCR2A,COM2A1);
CBI(TCCR2A,COM2A0);
SBI(TCCR2A,COM2B1);
CBI(TCCR2A,COM2B0);Kombiniert mit dem WGM22-Bit in das TCCR2B eingetragen, diese Bits gefunden
Kontrolle der Zählsequenz des Zählers, die Quelle für maximale
Zählerstand (oben) und welche Art von Wellenform Generation verwendet werden
Betriebsarten von Timer/Counter-Einheit unterstützt werden:
-Normalbetrieb (Zähler),
-Clear Timer vergleichen Match (CTC) eingeschaltet,
-zwei Arten von Pulse breite Modulation (PWM) Modi.
//
WGM22 WGM21 WGM20 Betriebsmodus TOP
0 0 0 0 Normal 0xFF
1 0 0 1 PWM 0XFF
2 0 1 0 CTC OCRA
3 0 1 1 schnell PWM 0xFF
4 1 0 0 reserviert -
5 1 0 1 PWM OCRA
6 1 1 0 reserviert -
7 1 1 1 schnell PWM OCRA
CBI(TCCR2B,WGM22);
SBI(TCCR2A,WGM21);
SBI(TCCR2A,WGM20);
//---------------------------------------------------------------------
TCCR2B Einstellungen
//---------------------------------------------------------------------
Das FOC2A-Bit ist nur aktiv, wenn die WGM-Bits nicht-PWM angeben
Modus.
Für die Sicherstellung der Kompatibilität mit zukünftigen Geräten, dieses bit
muss festgelegt werden, auf Null, wenn TCCR2B geschrieben wird, wenn im PWM Betrieb
Modus. Wenn Sie eine logische eins auf die FOC2A-Bit und eine sofortige schreiben
Vergleichen Sie Match ist gezwungen auf die Wellenform Generation Einheit. Das OC2A
Ausgabe ist nach seiner COM2A1:0 Bits Einstellung geändert. Beachten Sie, dass
Das FOC2A-Bit wird als ein Blitz implementiert. Daher wird der Wert
vorhanden in den COM2A1:0-Bits, die bestimmt, die Wirkung der
erzwungene vergleichen.
Eine FOC2A Blitz erzeugt keiner Interrupt, noch wird es klar
der Timer im CTC Modus Verwendung OCR2A als TOP.
Das FOC2A-Bit wird immer als Null gelesen.
CBI(TCCR2B,FOC2A);
CBI(TCCR2B,FOC2B);
Die drei Bits Uhr wählen Sie wählen Sie die Clock-Quelle zur Verfügung
der Timer/Counter.
CS22 CS21 CS20 Vorteiler
0 0 0 keine Taktquelle (Timer/Zähler gestoppt).
0 0 1 keine prescaling
0 1 0 8
0 1 1 32
1 0 0 64
1 0 1 128
1 1 0 256
1 1 1 1024
CBI(TCCR2B,CS22);
CBI(TCCR2B,CS21);
SBI(TCCR2B,CS20);
PinMode (ErrorPin, Ausgang);
PinMode (ThresholdPin, Ausgang);
AnalogWrite (ThresholdPin, 127);
}