Servo Squirter - USB vattenpistol (3 / 5 steg)
Steg 3: Konfigurera PWM på MCU
I videon, vi talar om två nivåer används av modulen timer/counter: det bästa värdet och jämför värdet. Båda dessa är viktiga i generera PWM signalen du vill.
Men för att aktivera din ATmega168 PWM utgången i första hand, måste vi ställa in några register. Först väljer vi snabbt PWM mode med OCR1A som högsta värde, som låter oss godtyckligt ange hur ofta du vill starta en ny puls.
Vi Ställ sedan klockan för att köra med en pre division 8, vilket betyder att disken kommer att öka med 1 varje 8 /(14745600 Hz) = 542 nanosekunder. Eftersom vi har 16-bitars register för denna timer, detta innebär att vi kan ställa våra övergripande signal period vara så hög som 65536 * 542ns = 36 millisekunder. Om vi använde ett större antal division, vi kunde göra vår pulser glesare (som inte hjälper i denna situation) och vi skulle förlora upplösning. Om vi använde färre division (t.ex. 1), skulle inte vi kunna göra våra pulser minst 16 millisekunder apart, som räknar med våra servo.
Slutligen satte vi jämföra produktionen läge för en "icke-vända" PWM utgång, som beskrivs i vår video. Vi också ställa in PIN-koden PB2 vara en utgångsstiftet--visas inte här, men det är i koden.
Klicka för att förstora dessa bilder från sidor 132-134 i databladet ATmega168 med våra register värde val markeras: