Moderadores: andre_luis, 51, guest2003, Renie
void dutty(unsigned int dc) //tomara que dc não seja maior que 1023
{
CCP1CON=(dc<<4)|0b1100; //lsb em bit5,4 e mantém o modo pwm
CCPR1L=dc>>2; //posiciona bits msb
}
...
PR2=0xff; //10bits
T2CON=0b100; //timer2 on, prescaler 1
CCP1CON=0b1100; //modo pwm
...
renatokodaira escreveu:Log(2) = logaritmo de 2 na base 10 = 0,301029996
Renato desculpa minha ignorancia mas podia exexmplificar um pouco como chegou a 0,301029996?
PWM Resolution(bits) = log(Fosc * 1/(Fpwm * TMR2 Prescaler)) / log(2)
PWM Resolution(bits) = log(4kk * 1/(5000 * 32)) / log(2)
PWM Resolution(bits) = log(4kk* 1/(160000) / log(2)
PWM Resolution(bits) = log(4kk* (0,00000625)) / log(2)
PWM Resolution(bits) = log(25) / log(2)
PWM Resolution(bits) = 1,397940008672037609572522210551 / log(2)
PWM Resolution(bits) = 1,397940008672037609572522210551 / 0,30102999566398119521373889472449
PWM Resolution(bits) = 4,6438561897747246957406388589863
HEHE. Acho que não esta muito certo isso não..
Tem alguma coisa errada na formula..
ou eu engoli caroço e não achei onde
MOR_AL escreveu:Se for na base neperiana, log (2) = 0,6931471806...
Para saber em que base você deve usar, tem que mostrar a referência da expressão (de onde você tirou a expressão).
Mas, se ainda me lembro de logarítmos, sua expressão genérica é
x = log(a) / log(b)
x é o seu PWM Resolution(bits) , log(a) é o seu log(Fosc * 1/(Fpwm * TMR2 Prescaler)) e log(b) = log(2)
Acho que se as bases forem iguais (o log do numerador e do denominador), tanto faz usar uma como a outra. Vai dar o mesmo valor.
MOR_AL
MOR_AL escreveu:...A partir daí são livros e horas de estudo. Muitas horas. A ponto dos seus neurônios fazerem novas ligações.MOR_AL
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante