Limite da Frequência de Incremento no TMR0

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Re: Limite da Frequência de Incremento no TMR0

Mensagempor Moreto » 18 Jul 2013 14:16

MOR_AL escreveu:
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 ?

Não sei se o VALOR do prescaler do TIMER0 pode ser lido nos PICs18F. Nos 16F o VALOR que ele adquire com a entrada de pulsos (não é o valor programado do divisor 1:, 1:2, 1:4, ...) não pode ser lido.
Ex.:
Digamos que você deseja conhecer a frequência de um trem de pulsos (ou o número de pulsos de um evento).
Você decide usar o TIMER0. Para isso você programa o prescaler para dividir os pulsos que entram (1:256).
Zera o TIMER0, que além de fazer TMR0 = 0, faz também prescaler = 0 (o valor programado "divide por 256" se mantém).
Após um período estipulado por você (e programado no firmware), você quer interromper a contagem do TIMER0 para obter os valores armazenados no prescaler e em TMR0.
Nos PICs16F não dá para interromper a contagem do TIMER0. Você usa um artifício. Coloca um pino conectado a RA4. Para habilitar a contagem, você faz esse outro pino ser ENTRADA. Para desabilitar a contagem, você faz esse outro pino virar SAÍDA (em '1' ou '0'). Para não queimar esse pino tem que haver um resistor entre o sinal de entrada e este pino.
Agora que você interrompeu a contagem, precisa conhecer o valor de prescaler e o de TMR0.
O do TMR0 é só ler diretamente, mas o valor contido em prescaler não está disponível para leitura.
Para conhecer este valor você aplica pulsos de entrada via este outro pino, configurado como saída, que está conectado ao pino RA4. Para cada pulso aplicado você incrementa um registro de propósito geral (GPR) e monitora o valor do TMR0. Quando o valor do TMR0 se altera, significa que o valor do prescaler atingiu 256 ou zero, o valor do registro GPR vai conter o complemento (a 256) do valor original desejado, do prescaler.
O TIMER0 virou um contador de dois bytes, porque você usou o registro prescaler como um dos bytes.
Aí você diz:
"Pô! eu poderia usar outro timer para isso e nem precisaria do segundo pino para interromper a contagem!"
Correto, mas a entrada via RA4 consegue ler pulsos com uma taxa de até uns 40 ou 50MHz.
MOR_AL


//*************************************************************************************************************************************************************************************************

Agora eu entendi o que você quis dizer... Eu não consigo ler o valor que está entre a entrada do prescaler e a saída dele... quantos pulsos falta ainda para ele dar um incremento na saida... mas isso não é problema no meu caso. Pois eu configuro a divisão como 1:1... pois o Timer0 na família 18F pode ser de 16 bits, então em 1ms eu consigo registrar a quantidade de pulsos na minha entrada, que dá lá os 20.000.... E na 16F eu não sei, mas ná 18, eu consigo por software desabilitar a contagem do Timer... basta desabilitar o timer, que por si só não é o suficiente, pois ele vai continuar incrementando com os pulsos externos, mas quando eu mudo a fonte de clock dele, para incrementar com os ciclos de máquina, e o timer está desabilitado, ele para de incrementar.... então eu consigo fazer o incremento do timer somente quando eu quero sem usar outro pino...
E eu levantei a questão do prescaler, porque eu pensei que em voo talvez a configuração do prescaler tivesse mudando, deixando em 1:2, 1:4 talvez... por isso que eu fiz meu software testar a configuração da divisão... o que estava certo.....
Moreto
Bit
 
Mensagens: 18
Registrado em: 04 Jul 2013 11:09

Re: Limite da Frequência de Incremento no TMR0

Mensagempor MOR_AL » 18 Jul 2013 21:26

Legal.
Então com o 18F e com prescaler em 1:1, o problema não existe.
Também aprendi mais uma.
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Re: Limite da Frequência de Incremento no TMR0

Mensagempor renatokodaira » 21 Jul 2013 20:47

Máxima frequência de entrada no T0CKl é de 50MHz com prescaler em 256

Máxima frequência de entrada no T1CKl síncrono (clock do PIC a 20MHz) é de 33,33333MHz com prescaler em 8
Máxima frequência de entrada no T1CKl assíncrono (não depende do clock) é de 16,66666MHz
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Anterior

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x