Fórum Eletrônica2002 (Brasil)
Seja bem vindo ao fórum Eletrônica2002.

Para ter acesso a todo o conteúdo do fórum você precisa estar cadastrado e fazer o login!

Se não é cadastrado no fórum: aproveite e faça.

Para criar um tópico, você precisa se cadastrar e estar conectado.
Ao criar um tópico, vc deve colocar a marca/modelo/e defeito do aparelho no título do tópico. Isto é regra neste fórum!
http://eletronica2002.forumeiros.com/forum-de-reparacao-de-aparelhos-eletronicos-f1/regras-do-forum-t19731.htm

Falar com o administrador?
Mande um e-mail: valdeni@eletronica2002.com.br
.
Menu de navegação


Clique nas imagens abaixo para acessar os fóruns desejados.

Fóruns:





---------------------------

PARCEIROS

E PATROCINADORES

DO FÓRUM 2002:

================

Clique nos banners:




================

Quer ser um patrocinador do fórum?

Mande um e-mail para:

Valdeni@eletronica2002.com.br


_________________
Últimos assuntos
» Multímetro Hikari HM2090 danificado.
Hoje à(s) 00:57 por Teimoso

» som multilaser sp250 sem audio
Hoje à(s) 00:18 por Teimoso

» APARELHO DE SOM PHILIPS FWM-416 NÃO ACIONA A FUNÇÃO CD
Ontem à(s) 23:27 por Oficina do SOM

» Som Sony HCD-GT55 mensagem EJECT desligando
Ontem à(s) 23:25 por Oficina do SOM

» Microondas Panasonic NN-S50BH inoperante
Ontem à(s) 15:34 por Paranista

» PHILCO PLATINUM TP-1452N ITAUTEC - SÓ FICA EM STAND BY
Ontem à(s) 12:45 por MARIO Y. SEGAWA

» micro ondas electrolux MEF28
Ontem à(s) 10:37 por manoel geovani

» Reparo em Solda Inversora Balmer Maxxiarc 162DV
Ontem à(s) 10:24 por Marcos Piva

» Gradiente AT 51
Ontem à(s) 08:47 por Nill

» Como Prolongar vida util da Ponteira do Ferro de Solda
Sex 17 Ago 2018, 17:22 por kir

» som aiwa modelo cxz51lh defeito sem som
Sex 17 Ago 2018, 14:33 por gerldo

» como você pode transformar um antigo alicate em uma ferramenta multifuncional.
Sex 17 Ago 2018, 10:28 por kir

» Como fazer um Mancal caseiro.facilita seus projetos!
Sex 17 Ago 2018, 10:12 por kir

» cd player Pionner 2350UB saida queimada
Sex 17 Ago 2018, 08:16 por Nill

» video cassete
Sex 17 Ago 2018, 08:15 por Nill

» Tv mitsubishi TC2098 sem imagem, som e caracteres normais.
Qui 16 Ago 2018, 17:24 por CARLOS AMARAL

» No-break Hagtech easy pro 1200 inverter não arma.
Qui 16 Ago 2018, 16:10 por Paranista

»  mini system philco ph 650, travando as funcoes depois de 1 minuto ligado
Qui 16 Ago 2018, 15:09 por Oficina do SOM

» System lg // cm 8330 // sem som e não modula
Qui 16 Ago 2018, 14:51 por DANTEX

» Como fazer um Buzzer de Speaker Simples na Falta !
Qui 16 Ago 2018, 10:14 por kir

» playstation 2 slim scph 90006 nao le e cooler nao gira
Qua 15 Ago 2018, 19:38 por shergio

» microondas cônsul cms25abhna diodo duplo = Resolvido
Qua 15 Ago 2018, 14:56 por Roberto Soares

» MICRO SYSTEM PHILIPS FWM452X/78 SEM ÁUDIO
Qua 15 Ago 2018, 13:45 por Oficina do SOM

» tv de tubo sony (kv29fs100) imagem cortando
Qua 15 Ago 2018, 13:24 por Edwilson

» Home Theater LG HT306SU - Sem som
Qua 15 Ago 2018, 11:44 por brlac3rda

» SONY HCD-N555AV não faz leitura de CD- Preciso de ajuda!
Qua 15 Ago 2018, 11:42 por CARLOS AMARAL

» [Resolvido]TRANSCEPTOR KENWOOD TS-130SE SEM TRANSMISSÃO
Qua 15 Ago 2018, 09:34 por Roberto Soares

» teclado yamaha psr s 750
Qua 15 Ago 2018, 09:29 por Oficina do SOM

» CAIXA ATIVA JBL EON 515XT NÃO LIGA
Qua 15 Ago 2018, 09:17 por Oficina do SOM

» Amplificador Warm Music GT208 - Distorcido
Qua 15 Ago 2018, 09:05 por Oficina do SOM

Quem está conectado
174 usuários online :: 8 usuários cadastrados, Nenhum Invisível e 166 Visitantes :: 2 Motores de busca

altair mendes, joaquimrosadesouza, jomiese, laelio mendes, MARIO Y. SEGAWA, Roberto Soares, Ronaldo LSA, wallter

O recorde de usuários online foi de 1034 em Sex 24 Jul 2015, 10:41

DUVIDAS com TMR0

Ir em baixo

DUVIDAS com TMR0

Mensagem por antgodoy em Sex 19 Maio 2017, 10:38

Pessoal,tenho estudado muito,mas infelizmente não consigo entender o carregamento do TMR0=39.
Gostaria muito que me ajudassem com isto.
Segue um pequeno bloco indicando isto:

if (!START && !Get_Input){
debounce();
switch (Timer_LIGA){
case 0:play_sound();
Timer_LIGA = 1;;
OPTION_REG = 0x07; //prescaler(1:256)is assigned to the timer TMR0
TMR0 =39 ; //timer to counts from 39 to 255
INTCON = 0xA0; // Enable interrupt TMR0 and GLOBAL interrupts
INTCON.T0IF = 0;
Mode_Select = 0;
Blink = 0;
Disp_Time();
break;

A duvida é :
Contara 39 vezes o 255
Sendo que estou usando cristal de 4 Mhz e esta funcionando corretamente.Só que estou alterando para trabalhar com 8 Mhz e estou apanhando para configura-los.
Agradeço muito pela explicação do TMR0 referente ao 39
Abraço a todos
avatar
antgodoy
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : 10 anos
Sexo : Masculino
Número de Mensagens : 2
Idade : 60
Cidade/Estado: : Rio Claro SP
Data de inscrição : 28/11/2016

Voltar ao Topo Ir em baixo

Re: DUVIDAS com TMR0

Mensagem por nagkiller em Sab 20 Maio 2017, 00:14

Na verdade ele conta de 39 até 255 e não conta de 0 - 39 255 vezes ou de 0 - 255 39 vezes!!!
Ou seja, ele vai contando 40,41,42,...,254,255 (valor máximo, por ser de microcontrolador de 8bits)... neste momento há um estouro (Overflow) no TIMER0 ((T0IF) (ele fica em nível logico 1, é necessário realizar a limpeza desse registrador por software (T0IF = 0;) e atribuir novamente o valor de TMR0 (TMR0 = 39;) para continuar a contagem)). Se não fizer estes passos acima, ele continuará contando 0, 1, 2, 3, 4...

Existe um cálculo em que se utiliza dados de prescaler.
Um PIC utiliza um divisor por 4 em seu ciclo de máquina... sendo assim, ele rodando a 4MHz, estará rodando a exatos 1 / ( Frequência do XTAL / 4) = 1/4000000/4 = 0.000001 = 1us = 1 microssegundo, ou seja, cada ciclo de máquina equivale a 1us.

O prescaler divide o ciclo de maquina por um valor fixo (veja os valores do prescaler de seu PIC no datasheet), com isso há uma demora na contagem, seria um divisor de frequência. Em OPTION_REG há os bits responsáveis pelo precaler (PS2, PS1 e PS0). O valor do prescaler pode ser, de acordo com o microcontrolador, 1:1, 1:2, 1:4, 1:8, 1:16, 1:32, 1:64, 1:128 e 1:256.

Exemplo com prescaler de 1:256 e 4MHz de frequência:
Use a conta para saber o ciclo de maquina 1/(4000000/4) = 0.000001 = 1us
Para calcular o valor do periodo de Timer0 (Overflow)  = 1/(4000000/4/256) =  0,000256 = 256us
Então dividindo 1/(4000000/4)/0,000256 = 0,0039063s ou ± 4ms
Então TIMER0 recebe o valor de 256-39 = 217
0,000256*217= 0,055552s = 56ms.

Em seu exemplo A cada ±56ms há um evento de estouro do TIMER0!!!

Exemplo em XC8 PIC16F629 @ 4MHz:

Código:

/*
* File:   mainc.c
* Author: Clodoaldo Souza
*
* Created on 20 de Maio de 2017, 00:14
*/

#include <xc.h>

// CONFIG
#pragma config FOSC = INTRCIO   // Oscillator Selection bits (INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-Up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // GP3/MCLR pin function select (GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD)
#pragma config BOREN = OFF      // Brown-out Detect Enable bit (BOD disabled)
#pragma config CP = OFF         // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)

void interrupt
timer0_isr(void) // Serviço de interrupção do timer0
{
T0IF = 0; // limpando a flag de estouro...
   TMR0 = 39;                  // TIMER0 recebe 39
   GPIO0 = !GPIO0;             // Inverte estado do pino
}

void main(void)
{
   OPTION_REG = 0b0111; // prescaler de 256
T0CS = 0; // seleciona clock interno
T0IE = 1; // habilita as interrupções de timer0
T0SE = 0;
GIE = 1; // habilita as interrupções globais
TMR0 = 39;                  // Timer 0 recebe valor 39
OSCCAL = 0x3ff;             // Calibracao oscilador interno
GPIO = 0x00;                // Limpa os bits GPIO
CMCON = 0x07;
TRISIO = 0b00001000;        // GP3 SEMPRE ENTRADA!!!
   for (;;)
   {
       // Aqui faz-se algo em loop
   }
   return;
}

Com 8MHz, já não será possível realizar o cálculo como acima, pois as frequências e tempos são diferentes, o TIMER0 máximo será de 0,032768s (0.000128*256). No caso terá que inserir uma variável que calcule a metade de 56ms e que conte duas vezes essa metade, por exemplo.

Fontes:
[Você precisa estar registrado e conectado para ver este link.]
[Você precisa estar registrado e conectado para ver este link.]
[Você precisa estar registrado e conectado para ver este link.]

Flw...


Última edição por nagkiller em Dom 21 Maio 2017, 11:49, editado 1 vez(es)

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
avatar
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1767
Idade : 37
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: DUVIDAS com TMR0

Mensagem por antgodoy em Sab 20 Maio 2017, 06:27

Valeu nagkiller
Agora eu entendi de onde saiu este 39.
Nossa eu fiquei 2 semana pesquisando isto,encontrava mas não entendia.
Isto tudo,porque eu fabriquei uma PCB e compilei no mikroc,gravei o PIC 16F628A ,ficou perfeito,só que o projeto é de 4Mhz e na hora de finalizar eu não tinha o cristal e acabei montando com 8Mhz.
Só que 1 minuto esta executando em 0,5 minuto,claro que é devido ao dobro da frequência.
Vou alterar o programa para corrigir e você me deu a dica onde pesquisar.
O meu mais sincero OBRIGADO
avatar
antgodoy
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : 10 anos
Sexo : Masculino
Número de Mensagens : 2
Idade : 60
Cidade/Estado: : Rio Claro SP
Data de inscrição : 28/11/2016

Voltar ao Topo Ir em baixo

Re: DUVIDAS com TMR0

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum