Girino - snabb Arduino oscilloskop (15 / 26 steg)
Steg 15: Konfigurera PWM
void initPins(void)
{
//---------------------------------------------------------------------
TCCR2A inställningar
//---------------------------------------------------------------------
Dessa bitar styra den Output jämför pin (OC2A). Om en eller
båda av COM2A1:0 bitar är inställda, OC2A utgång åsidosätter den
normala port funktionaliteten i i/o pin den är ansluten till.
Observera dock att den Data riktning registrera (DDR) lite
motsvarar den OC2A PIN-kod måste anges för att aktivera den
utdata-drivrutin.
När OC2A är ansluten till stift, funktionen COM2A1:0 bitar
beror på den WGM22:0 lite inställning.
//
Snabb PWM Mode
COM2A1 COM2A0
0 0 normala port drift, OC2A bortkopplad.
0 1 WGM22 = 0: Normal Port drift, OC0A kopplas bort.
WGM22 = 1: växla OC2A på Compare Match.
1 0 klart OC2A på Jämför Match, ställa in OC2A längst ner
1 1 rensa OC2A på Jämför Match, rensa OC2A längst ner
CBI(TCCR2A,COM2A1);
CBI(TCCR2A,COM2A0);
SBI(TCCR2A,COM2B1);
CBI(TCCR2A,COM2B0);Kombinerat med WGM22 lite hittade i TCCR2B Register, dessa bitar
Kontrollera den cykliska sekvensen av räknaren, källan för maximal
(Överst) counter värde och vilken typ av vågformen generation ska användas
Driftsformer stöds av Timer/Counter enheten är:
-Normalt läge (counter),
-Tydlig Timer på Jämför Match (CTC) läge,
-två typer av puls bredd modulering (PWM) lägen.
//
Läge WGM22 WGM21 WGM20 Operation topp
0 0 0 0 Normal 0xFF
1 0 0 1 PWM 0XFF
2 0 1 0 CTC OCRA
3 0 1 1 snabb PWM 0xFF
4 1 0 0 reserverade -
5 1 0 1 PWM OCRA
6 1 1 0 reserverade -
7 1 1 1 snabb PWM OCRA
CBI(TCCR2B,WGM22);
SBI(TCCR2A,WGM21);
SBI(TCCR2A,WGM20);
//---------------------------------------------------------------------
TCCR2B inställningar
//---------------------------------------------------------------------
Den FOC2A biten är bara aktiv när WGM bitar anger en icke-PWM
läget.
Men för att säkerställa kompatibilitet med framtida enheter, denna bit
måste anges till noll när TCCR2B är skriven vid PWM
läget. När du skriver en logiskt att det FOC2A lite, en omedelbar
Jämföra matchen tvingas på vågformen Generation enheten. OC2A
utdata ändras enligt dess COM2A1:0 bitar inställningen. Observera att
FOC2A lite implementeras som en strobe. Därför är det värdet
i de COM2A1:0 bitarna som bestämmer effekten av den
tvingade jämför.
En FOC2A strobe inte kommer att generera ett avbrott sker, inte heller kommer att klara det
timern i CTC läge med hjälp av OCR2A som topp.
FOC2A lite läses alltid som noll.
CBI(TCCR2B,FOC2A);
CBI(TCCR2B,FOC2B);
De tre klockan Välj bitarna Välj klocka källa att användas av
Timer/Counter.
CS22 CS21 CS20 Prescaler
0 0 0 ingen klocka källa (Timer/Counter slutat).
0 0 1 ingen 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, produktionen);
pinMode (thresholdPin, produktionen);
analogWrite (thresholdPin, 127);
}