Página 1 de 1

Como criar uma rotina de delay com maior range???

MensagemEnviado: 15 Out 2006 16:45
por Visitante
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!!!

MensagemEnviado: 15 Out 2006 16:47
por Visitante
Esqueci de mencionar, o PIC que eu estou usando é um 18F452 rodando à 40Mhz, o prescaler está para um (65536 de Timer1) e frequencia da interrupção é um pouquinho maior que 4ms...
Acho que é só isso!!!

MensagemEnviado: 15 Out 2006 16:49
por Jerena
Anonymous escreveu:Esqueci de mencionar, o PIC que eu estou usando é um 18F452 rodando à 40Mhz, o prescaler está para um (65536 de Timer1) e frequencia da interrupção é um pouquinho maior que 233Hz (4ms aprox.)...
Acho que é só isso!!!

MensagemEnviado: 17 Out 2006 01:43
por Visitante
Ninguem conhece uma tecnica melhor para gerar delay???
Eu estou desconfiado pela simplicidade, mas essa rotina abaixo gera um sinal PWM certinho, estou enganado????

#INT_TIMER1

void trata_timer1()
{
long int i;

set_timer1 (10535);
saida = 1;
for (i=1; i <= tempo; i++)
{
delay_us (1);
}
saida = 0;
}

MensagemEnviado: 17 Out 2006 03:15
por __JEREK__
olá "visitante", é bom sempre lembrar que existe um tutorial sobre implementação de PWM via software na página do Renie (http://www.reniemarquet.cjb.net/eletronica.htm), lá tem esse tutorial "Tutorial implementando PWM por software".

valeu!!!