Moderadores: andre_luis, 51, guest2003, Renie
Quando uso o TMR1 da certo, mas com o TMR0 não... Tem algum tipo de limite na frequência??
vtrx escreveu:Quando uso o TMR1 da certo, mas com o TMR0 não... Tem algum tipo de limite na frequência??
Oque voce quer dizer com "não da certo",não conta direito ou não ativa nada?
MOR_AL escreveu:Nos PICs 16F...
Em termos de frequência, o TIMER0 pode medir até cerca de 40Mc/s. Vai depender da frequência do Xtal e da tensão de alimentação do uC.
Outro detalhe é que não conheço um modo de parar a contagem por programação do TMR0 (e do prescaler). Um modo é colocar um pino conectado ao T0CKI e fazê-lo ora como entrada (deixa passar os pulsos), ora como saída em '1' ou '0', para interromper a contagem. Neste caso tem que haver um resistor (geralmente de 470 ohms) para limitar a corrente no pino.
Outro detalhe é que o valor do prescaler não pode ser lido diretamente. Você tem que aplicar pulsos, por meio deste pino extra, e ir contando até que o registro TMR0 se altere. O valor contado é o complemento do valor existente no prescaler.
Não sei se a coisa (TIMER0) muda com os 18F.
MOR_AL
Moreto escreveu:MOR_AL escreveu:Nos PICs 16F...
Em termos de frequência, o TIMER0 pode medir até cerca de 40Mc/s. Vai depender da frequência do Xtal e da tensão de alimentação do uC.
Outro detalhe é que não conheço um modo de parar a contagem por programação do TMR0 (e do prescaler). Um modo é colocar um pino conectado ao T0CKI e fazê-lo ora como entrada (deixa passar os pulsos), ora como saída em '1' ou '0', para interromper a contagem. Neste caso tem que haver um resistor (geralmente de 470 ohms) para limitar a corrente no pino.
Outro detalhe é que o valor do prescaler não pode ser lido diretamente. Você tem que aplicar pulsos, por meio deste pino extra, e ir contando até que o registro TMR0 se altere. O valor contado é o complemento do valor existente no prescaler.
Não sei se a coisa (TIMER0) muda com os 18F.
MOR_AL
Que unidade de medida é essa? "40Mc/s" ... ciclos de máquina por segundo? M = Milhões; c/s = Ciclos por segundo. Diferente de Hz, que refere-se a apenas uma frequência senoidal, c/s refere-se a um sinal periódico (cíclico) podendo até ser senoidal, mas não necessariamente.
Então, nos registros do timer0, tem como um jeito de configurar ele para ora contar os pulsos externos e ora não Sim!... se deixar configurado para incremento externo, ele vai contar sempre, mesmo que o timer esteja desabilitado Como você deixaria ele desabilitado?, então a solução é deixar configurado para incremento interno, e o timer desabilitado. Ai quando eu quero contar os pulsos externos, eu habilito o timer e mudo a fonte de clock... da certinho...
Não! Releia minha postagem anterior.
E o valor do prescaler, eu fiz um teste no programa, no bit que registra a configuração do prescaler, e dependendo do resultado eu acionava um pino extra, assim deu pra saber em voo se a configuração estava correta...
Não entendi sua colocação!
Que unidade de medida é essa? "40Mc/s" ... ciclos de máquina por segundo? M = Milhões; c/s = Ciclos por segundo. Diferente de Hz, que refere-se a apenas uma frequência senoidal, c/s refere-se a um sinal periódico (cíclico) podendo até ser senoidal, mas não necessariamente.
RobL escreveu:Que unidade de medida é essa? "40Mc/s" ... ciclos de máquina por segundo? M = Milhões; c/s = Ciclos por segundo. Diferente de Hz, que refere-se a apenas uma frequência senoidal, c/s refere-se a um sinal periódico (cíclico) podendo até ser senoidal, mas não necessariamente.
Epa, confundiu.
Hertz é o mesmo que Ciclos por Segundos, para qualquer fenômeno periódico (não somente senoidal, Hz).
A questão está somente no sistema de unidades eleito. No Sistema Internacional de medidas, homenageiam Hertz, para a unidade de medida, ciclos por segundos.
Quanto a contagem, ou sua entrada está com capacitância alta formando um filtro passa baixa ou é o que o Mor_All colocou, quanto aos registros mais altos (vai um). Se sua entrada for ST se cair um pouco abaixo de 4V já era, se for CMOS a falta dos pulsos só vai ocorrer abaixo de 2,5V para Vdd = 5V.
Se tiver um scope, veja a forma de onda, acima de 700KHz, na entrada do pic.
MOR_AL escreveu:Moreto escreveu:MOR_AL escreveu:Nos PICs 16F...
Em termos de frequência, o TIMER0 pode medir até cerca de 40Mc/s. Vai depender da frequência do Xtal e da tensão de alimentação do uC.
Outro detalhe é que não conheço um modo de parar a contagem por programação do TMR0 (e do prescaler). Um modo é colocar um pino conectado ao T0CKI e fazê-lo ora como entrada (deixa passar os pulsos), ora como saída em '1' ou '0', para interromper a contagem. Neste caso tem que haver um resistor (geralmente de 470 ohms) para limitar a corrente no pino.
Outro detalhe é que o valor do prescaler não pode ser lido diretamente. Você tem que aplicar pulsos, por meio deste pino extra, e ir contando até que o registro TMR0 se altere. O valor contado é o complemento do valor existente no prescaler.
Não sei se a coisa (TIMER0) muda com os 18F.
MOR_AL
Que unidade de medida é essa? "40Mc/s" ... ciclos de máquina por segundo? M = Milhões; c/s = Ciclos por segundo. Diferente de Hz, que refere-se a apenas uma frequência senoidal, c/s refere-se a um sinal periódico (cíclico) podendo até ser senoidal, mas não necessariamente.
Então, nos registros do timer0, tem como um jeito de configurar ele para ora contar os pulsos externos e ora não Sim!... se deixar configurado para incremento externo, ele vai contar sempre, mesmo que o timer esteja desabilitado Como você deixaria ele desabilitado?, então a solução é deixar configurado para incremento interno, e o timer desabilitado. Ai quando eu quero contar os pulsos externos, eu habilito o timer e mudo a fonte de clock... da certinho...
Não! Releia minha postagem anterior.
E o valor do prescaler, eu fiz um teste no programa, no bit que registra a configuração do prescaler, e dependendo do resultado eu acionava um pino extra, assim deu pra saber em voo se a configuração estava correta...
Não entendi sua colocação!
Com o prescaler e TMR0 só dá para contar até 65.535 e não é possível LER o valor do prescaler diretamente .
Para contar mais que 65.535 pulsos é necessário incluir mais registros de propósito geral.
Monitore cada transbordo de TMR0 e incremente o registro, ou registros de mais alta ordem.
MOR_AL
não é possível LER o valor do prescaler diretamente
Silvio51 escreveu:MorAl...não é possível LER o valor do prescaler diretamente
Não entendo o por quê de alguém querer ler o "prescaler" do timer... se não somos nós que configuramos ele ? nós que o programamos... para que ler o prescaler ?
Será que está confundindo com o registro de período/contagem ?
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante