Apesar de antigo o tópico, o nobre colega encontrou solução para o assunto?
Caso ainda não tenha e para ajudar alguém que visite o tópico, alguns esclarecimentos abaixo podem ajudar com esta IDE:
O mikroC possui uma biblioteca que trabalha com PWM em quatro funções:
PWM1_Init(frequencia em Hz);
PWM1_Set_Duty(0 à 255);
PWM1_Start();
PWM1_Stop();
PWM
1 << esse 1 é para modelos que possui apenas 1 modulo.
Caso tenha mais de 1, seria PWM
2, PWM
3 e assim por diante.
Logo após o
main, configure o pino de saida/entrada do modulo CCP no registrador TRIS como saída declare uma variável para mudar o Duty e inicie o modulo PWM:
void main(){
TRISB = 0x08; // Alguns modelos possuem o modulo no pino RB3.
unsigned short x = 100; // Valor inicial para o Duty com valor 100. Vai de 0 = desligado à 255 máximo (módulos de 8 bits).
PWM1_Init(500); // 500Hz. Os valores minimo/máximo dependem do Cristal usado.
PWM1_Set_Duty(x);
PWM1_Start();
do{
x++;
PWM1_Set_Duty(x);
delay_ms(100);
} while(1);
}
O código acima é funcional e irá mudar a largura do pulso a cada 100ms. Ao ultrapassar 255, a variavel x retorna a 0 e incrementando sempre até que seja interrompida a alimentação.
Se quiser ajustar manualmente os registradores (caso não queira usar a biblioteca do mikroC) recomendo esta página:
http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.htmlEla possui uma calculadora que muda os parametros do moculo CCP de acordo com os valores setados nos campos solicitados.
abç.
O correto seria abrir outro tópico, acredito estar certo seguir a linha de raciocinio do autor deste.
Ao minilathe: caso julgar não util esta mensagem, favor desconsiderar