Stap 15: Instellen van de PWM
VOID initPins(void)
{
//---------------------------------------------------------------------
TCCR2A instellingen
//---------------------------------------------------------------------
Deze bits besturen de Output vergelijken pin (OC2A). Als één of
beide van de COM2A1:0-bits zijn ingesteld, de OC2A uitgang overschrijft de
de functionaliteit van de normale poort van de I/O pin die is aangesloten.
Nochtans, merken op dat de Data richting registreren (DDR) bit
overeenkomt met de OC2A pin moet worden ingesteld zodat de
uitvoer-stuurprogramma.
Wanneer OC2A is verbonden met de pin, de functie van de COM2A1:0-bits
afhankelijk van de WGM22:0 bit instellen.
//
Snelle PWM-modus
COM2A1 COM2A0
0 0 normale poort werking, OC2A verbroken.
0 1 WGM22 = 0: normaal poort werking, OC0A verbroken.
WGM22 = 1: OC2A op vergelijk Match in-/ uitschakelen.
1 0 duidelijk OC2A op vergelijk Match, set OC2A onderaan
1 1 OC2A duidelijk op vergelijk Match, duidelijk OC2A onderaan
CBI(TCCR2A,COM2A1);
CBI(TCCR2A,COM2A0);
SBI(TCCR2A,COM2B1);
CBI(TCCR2A,COM2B0);Gecombineerd met de WGM22 bit gevonden in het TCCR2B Register, deze bits
de tellen opeenvolging van de teller, de bron voor maximale controle
Waarde van de teller (boven), en welk type golfvorm generatie worden gebruikt
Bewerkingsmodi ondersteund door de Timer/Counter unit zijn:
-Normale modus (counter),
-Duidelijke Timer op vergelijk Match (CTC) modus,
-twee soorten puls breedte modulatie (PWM) modi.
//
Mode WGM22 WGM21 WGM20 Operation TOP
0 0 0 0 normaal 0xFF
1 0 0 1 PWM 0XFF
2 0 1 0 CTC OCRA
3 0 1 1 snel PWM 0xFF
4 1 0 0 voorbehouden -
5 1 0 1 PWM OCRA
6 1 1 0 voorbehouden -
7 1 1 1 snel PWM OCRA
CBI(TCCR2B,WGM22);
SBI(TCCR2A,WGM21);
SBI(TCCR2A,WGM20);
//---------------------------------------------------------------------
TCCR2B instellingen
//---------------------------------------------------------------------
De FOC2A-bit is alleen actief wanneer de WGM-bits een niet-PWM opgeeft
modus.
Echter, om te zorgen voor compatibiliteit met toekomstige apparaten, dit stukje
moet worden ingesteld op nul wanneer TCCR2B wordt geschreven wanneer operationele in PWM
modus. Bij het schrijven van een logische vraag aan de FOC2A-bit, een onmiddellijke
Vergelijk Match wordt gedwongen op de golfvorm generatie eenheid. De OC2A
uitvoer wordt gewijzigd volgens de bits van de COM2A1:0 instellen. Merk op dat
de FOC2A-bit is geïmplementeerd als een flitser. Daarom is het de waarde
aanwezig in de COM2A1:0 bits die bepaalt het effect van de
gedwongen vergelijken.
Een FOC2A flitser zal niet een interrupt genereren, noch zal het duidelijk
de timer in CTC modus met behulp van OCR2A als TOP.
De FOC2A-bit wordt altijd gelezen als nul.
CBI(TCCR2B,FOC2A);
CBI(TCCR2B,FOC2B);
De drie klok Selecteer bits Selecteer het klokbron taalgebruikin
de Timer/teller.
CS22 CS21 CS20 Prescaler
0 0 0 geen klokbron (Timer/teller gestopt).
0 0 1 geen 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, OUTPUT);
pinMode (thresholdPin, OUTPUT);
analogWrite (thresholdPin, 127);
}