Stap 3: Instellen van de PWM op de MCU
In de video, we praten over twee niveaus gebruikt door de timer/teller module: de hoogste waarde en de waarde vergelijken. Beide zijn belangrijk in het PWM-signaal dat u wilt genereren.
Maar om te activeren van uw ATmega168 PWM-uitgang in de eerste plaats, we hebben een paar registers instellen. Eerst, selecteer we snel PWM mode met OCR1A als de hoogste waarde, waarmee we willekeurig instellen hoe vaak u wilt starten van een nieuwe puls.
Wij stel vervolgens de klok te lopen met een pre-divisie van 8, wat betekent dat de teller met 1 met elke 8 /(14745600 Hz) toenemen zal = 542 nanoseconden. Aangezien wij 16-bits registers voor deze timer hebben, betekent dit kunnen we het instellen van onze totale signaal periode tot zo hoog als 65536 * 542ns = 36 milliseconden. Als we een groter aantal van de divisie gebruikt, kunnen we onze pulsen verder uit elkaar (die niet helpen in deze situatie), en we zouden verliezen resolutie. Als we een kleinere afdeling nummer (zoals 1) gebruikt, zouden we niet kunnen maken onze pulsen ten minste 16 milliseconden uit elkaar, zoals onze servo verwacht.
Tot slot, wij de vergelijk Output-modus instellen voor een "niet-inverterende" PWM-uitgang, die wordt beschreven in onze video. Wij ook de pincode instellen PB2 om te worden van een uitgang pins--niet hier is afgebeeld, maar wel in de programmacode.
Klik om te vergroten van deze opnamen van pagina's 132-134 van het gegevensblad ATmega168 met onze register waarde selecties gemarkeerd: