Eu estou implementando uma rotina que gera um PWM por software:
#INT_TIMER1
void trata_timer1(void)
{
long int i;
set_timer1 (22678);
saida = 1;
for (i=1; i<=tempo; i++)
{
delay_us (1);
}
saida = 0;
}
sendo que eu queria variar a largura do Duty Cicle pelo menos uns 3ms, meu problema é que a rotina delay_us(variavel); não me atende pois quando eu uso uma variavel como parâmetro ela só pode variar de 1 à 256 e isso não me atende, precisava um controle maior.
Essa rotina que eu fiz com o "for" não ficou muito legal e eu queria melhorar isso, fora que eu me baseio da seguinte forma, quando tempo=400 o duty cicle do pulso é de 1ms (tempo da rotina for + delay), e eu ainda descobri esse valor usando o Proteus (osciloscópio), então nem precisão nesse valor eu tenho...
Alguem pode me sugerir um meio de fazer isso com maior precisão???
Muito obrigado pessoal!!!