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
» tv sony KDL32BX425 INTERMITENTE
Hoje à(s) 01:14 por HEBERTT

» TV Semp 2134(A) SL SK-11 liga e deslig
Ontem à(s) 22:29 por Evandro Barbosa

» Mini Sistem Philips FWT9200x com defeito na fonte
Ontem à(s) 15:05 por lander

» som Samsung mx-hs6500 nao liga
Ontem à(s) 13:41 por domingos macedo

» modulo soundigital sd600.1d fica ligado led clip
Ontem à(s) 12:35 por edson vogel

» Home Philips HTS 5530 desligando
Ontem à(s) 12:01 por vanderlei bortoli

» Mini System Aiwa Nsx Zm2800 - FM não funciona
Ontem à(s) 08:19 por Roger Rodrigues

» Tv Panasonic tc 29KL04 horizontal fechado
Ontem à(s) 01:00 por MARIO Y. SEGAWA

» Receiver Kenwood SR 4090 -CCE - (queima frequente etapa de saída)
Ter 22 Jan 2019, 22:58 por AARNALDORB

» Mini System LG x-boom cm9740 sem som
Ter 22 Jan 2019, 19:23 por tec.josé ferreira

» Defeito em TVPhilco TP - 2053
Ter 22 Jan 2019, 12:00 por Nill

» 4 dicas para remover ferrugem das ferramentas
Seg 21 Jan 2019, 10:44 por kir

» FONTE DE BANCADA COM UMA SAÍDA AJUSTÁVEL ENTRE 2 A 16 VCC E OUTRA SAÍDA FIXA COM 13,8Vcc
Seg 21 Jan 2019, 10:38 por kir

» tv lg 14fk3rb falta 3cm do lado esquerdo
Seg 21 Jan 2019, 09:02 por Paranista

» TV TOSHIBA PD 2058s VERTICAL FECHADO
Seg 21 Jan 2019, 02:03 por MARIO Y. SEGAWA

» Som aiwa nsx v900 não funciona saida surround
Seg 21 Jan 2019, 01:03 por Eduardo Passos

» Dvd semp Toshiba troquei a unidade óptica mas não lê
Seg 21 Jan 2019, 00:55 por Eduardo Passos

» BALANÇA URANO US15/5 POP-S (LIGA E DESLIGA )
Dom 20 Jan 2019, 10:22 por Nill

» tv semp 1452 fonte baixa
Sab 19 Jan 2019, 22:31 por antonio benedito de queir

» [Resolvido]tv semp 1452 fonte baixa
Sab 19 Jan 2019, 22:30 por antonio benedito de queir

» tv lg 21fu4rl vertical com linhas na parte de cima
Sab 19 Jan 2019, 02:43 por isaquewallker

» TV LG 21FJ8RL ARMANDO PROTEÇÃO
Sex 18 Jan 2019, 23:18 por Evandro Barbosa

» TV LG 29q54 TUBO - Problemas no SOM
Sex 18 Jan 2019, 11:22 por carlos.scala

» tv semp 2051 u18 com linhas brancas na parte superior
Sex 18 Jan 2019, 07:59 por Nill

» mini sistem mondial MS-03 duvida sobre potenciometro
Qui 17 Jan 2019, 21:26 por Eduardo Passos

» Som LG LM-U1560a com som baixo
Qui 17 Jan 2019, 18:42 por augusto muniz dos santos

» TV Semp Toshiba 1484GAV U12 - Alta tensão
Qui 17 Jan 2019, 00:16 por MARIO Y. SEGAWA

» (ENCERRADO) som samsung mx-e 850zd armando proteçao
Qua 16 Jan 2019, 11:38 por Eduardo Passos

» Placa de circuito impresso com tinta sublimatica
Qua 16 Jan 2019, 01:50 por isaquewallker

» TV LG 29" - Mod: 29FS4RLG - Defeito: Apagada. RESOLVIDO!!!
Ter 15 Jan 2019, 20:00 por MARIO Y. SEGAWA

Quem está conectado
26 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 26 Visitantes :: 2 Motores de busca

Nenhum

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
antgodoy
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!!!
nagkiller
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 : 1818
Idade : 38
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
antgodoy
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