itamar escreveu:
Desculpe mas não entendi o que vc disse.
E também acho que vc não me entendeu... fazer com o pic faça testes "if bla bla bla" vai desviar a "atenção" dele pq ele deve esperar que algum dos sensores informe que ele deve tomar uma decisão, pois este é o firm. que já está implementado e FUNCIONA perfeitamente, novamente repito o problema é adicionar o PWM 3 .
Quanto aos 100ms acho que não gostaria de esperar esse tempo pra que o PIC decida se meu dedo é ou não importante rsrsrsr.
mas de qualqer forma Valew pela idéia
Itamar, você esta precisando rever alguns conceitos serio...
Você utilizar essa tecnica de chavear a saida PWM provavlmente vai gastar tantas instruções quanto se você utilizasse o seu timer.
Se você utilizar o timer, você ira gastar pouquissimas insturções a cada vez que o timer for disparado. De no resto do tempo o seu programa ira rodar norlamente, como se o timer nem existisse. Por exemplo. Dentro de uma instrução o que você ira colocar é
- Código: Selecionar todos
If(state = OFF_STATE)
{
//configura o timer para rodar o tempo que ele deve ficar ligado
state = ON_STATE
}
else
{
//configura o timer para rodar o tempo que ele deve ficar desligado
state = OFF_STATE
}
//zera a flag
De modo geral se o seu PWM estiver rodando a 20Hz, a interrupção ira estourar duas vezes por ciclo, logo.. a cada 40Hz. Digamos que no total sejam gatos 10 instruções para tudo isso... e que seu clock seja de 4Mhz, o tempo de cada instrução é de 1uS. Logo você ira gastar 10us a cada 25ms. Ou seja 0.04% do tempo você ira cuidar do PWM por firmware!!!
Se você erroneamente colocar qualquer debounce de botão por delay de instruções não via timer (que eu vejo em muitos codigos), o seu codigo ja é MUITO mais afetado do que isso. DIga-se de passagem, qualquer delay via instrução , ira ter um impacto ordens de grandeza maior do que esse PWM via timer...