Stap 1: PIC PWM-module en timers
Wij zullen werken deze PIC @ 20MHz oscillator. Deze tutorial is voor degenen die deze zeer hoge oscillatoren heeft die is de standaard manier van het gebruik van microcontrollers. U kunt echter de eenvoudige manier (CCP als PWM) gebruiken als u een erg trage oscillator zoals 32 KHz, omdat dan timer2 50 Hz rechtstreeks zonder de behoefte bereiken kunnen aan wat wij hier zullen verklaren.
PIC MCU's hebben iets genaamd CCP-module die is Capture-Compare-PWM-module, wat betekent dat u kunt configureren om te werken als een van deze 3. Voor de typische toepassing, moet we altijd configureren om te worden PWM (dit is de eenvoudige manier die we standaard gebruiken moeten).
Wanneer deze is geconfigureerd als PWM, het maakt gebruik van Timer2 als een module van timing te berekenen zijn Ton en Toff. Dus hoe kunnen we bepalen alle vereiste waarden om onze eigen vereiste frequentie?
Timer vergelijkingen:
[1] F_timer = F_crystal / (4 * prescaler * resolutie)
[2] Period_timer = 1 / F_timer
[3] N = (t * F_crystal) / (4 * prescaler)
Vergelijking 1 berekent timer frequentie. Wij zullen het gebruiken om de laagste mogelijke frequentie die de timer kan produceren. Als er minder dan 50Hz, dan kunnen we het genereren van 50Hz of we een andere weg zal vinden.
Vergelijking 2 is duidelijk, dat is de periode van die frequentie.
Vergelijking 3 is het aantal teken"" dat de timer zal Vink totdat zij de tijd "t" die we willen tot, we volgens de instellingen opgegeven zoals prescaler en crystal frequentie.
CCP1-module wanneer gebruikt als PWM maakt gebruik van timer2, en deze timer2 is een 8-bits timer. Betekenis, zijn resolutie is 2 ^ 8 = 256. Het biedt prescaler waarden tot 16 en deze prescaler is een functie in timers waarmee ze kunnen verdelen Ingangsfrequentie gevoed in hen met het oog op lagere frequenties.
Dus de laagste ooit frequentie timer2 kunnen behandelen (uitgaande 20MHz kristal oscillator) = 20000000 / (4 * 16 * 256) = 1220.7 Hz (approx 81,9 ons periode). Zo kunnen we niet krijgen de 50 Hz signaal dat we wilden met behulp van deze timer met CCP1 als PWM.
Hoe zit het timer1? het heeft een prescaler maximumwaarde van 8 en de resolutie van 16 bits = 65536 omdat er een 16-bits timer.
Laagste timer1 frequentie = 20000000 / (4 * 8 * 65536) = 9.53 Hz. (ca 104.9 ms periode)
Dus we concluderen dat timer1 kan worden gebruikt voor het genereren van 50 Hz signaal omdat het tot lage frequenties tot leiden kan is 9.53 Hz en onze 50 net zozeer haalbaar!
V: Ok! Sluit hem aan op CCP module in PWM modus!!!
A: Nee, CCP als PWM enige toepassingen timer2 module... die u wilt zoeken op een andere manier.
Wat is het?!