setup_timer_2(mode, period, postscale):
Esta função configura o timer 2 para gerar o período do pwm.
Mode(prescaler): é o divisor do clock do processador, podendo assumir os valores:
- T2_DISABLED
- T2_DIV_BY_1, T2_DIV_BY_4, T2_DIV_BY_16
Postscale: é um número de 1 à 16 que determina quantos overflows de temporizador deve ocorrer antes de uma interrupção: (1 significa uma vez, 2 significa duas vezes, uma assim por diante).(Não utilizado no calculo do periodo do pwm).
Para tanto a equação abaixo é utilizada para calcular o período da frequência do pwm.
CÓDIGO TESTADO:
#include <16f886.h> // identifica microcontrolador alvo
#use delay (clock=8000000) // colocar internal ao inves de
clock para oscilador interno
#fuses
INTRC, NOWDT, NOPROTECT, NOBROWNOUT,PUT
void
main() // função principal
{
setup_oscillator(OSC_8MHZ);//somente chip com oscilador OSCCON
setup_timer_2(T2_DIV_BY_16, 124, 1);//aqui é configurado o periodo do
pwm
setup_ccp1(CCP_PWM);//porta ccp1 configurada como pwm
set_pwm1_duty(100L);//duty
cycle configurado para 20%, o L após o 100 é
para
//definir o valor como Long
while(1) // para repetir bloco. Laço infinito.
{
}
}
A partir do
código acima, pode ser feito o calculo do periodo do pwm do mesmo, como é
mostrado abaixo:
Seguindo, pode ser
calculado o duty cycle do código acima, como mostra abaixo:
Atenção para o fato de que não há nada dentro do laço while, ou seja, sua rotina principal está sendo executada livremente enquanto o trecho acima gera o sinal de pwm.
Assim a forma de onda
adquirida do pino ccp1 é mostrada na figura 1 abaixo:
Nenhum comentário:
Postar um comentário