Boa trde pessoal, é minha primeira vez por aqui e já venho pedindo ajuda, vamos ao pedido, estou montando um contado de voltas para uma maquina de enrolar transformador, ele é muito interessante, tem a opção de programar a quantidade de espiras para desligar o motos apos atingir o numero programado, ou contar direto sem programação, toda programação ta funcionando muito bem, o que ta acontecendo é o seguinte, ele conta normalmente em qualquer velocidade até 254, ai pula para 256, ai segue normal até 510, ai pula para 512, ou seja, ele pula 1 a cada multiplo de 255, segue anexo o projeto completo.

em anexo o código resolvido pelo mestre Rui Viana

 

Exibições: 1883

Anexos

Responder esta

Respostas a este tópico

Oi JMC, boa tarde.

1a. recomendação: leia o tópico: http://labdegaragem.com/forum/topics/sugest-o-de-como-postar

2a. Não poste code na área de texto. Anexe arquivo com o code. Fica muito extenso e ruim pra paginar.

       Você pode editar o seu tópico e remover a parte do code.

Rui

O erro deve estar aqui :

int16 contar()
{
     int cuenta=0;
     int16 n;


     cuenta=get_timer0();

     if (cuenta==255)
     {
       set_timer0(0);
       desbordamiento++;
     }
     n=256*desbordamiento+cuenta;

Você entende de programação ? Traduza em português, o que cada linha faz e conseguirá resolver o seu problema. 

esse é o problema maior Jose Gustavo, meu conhecimento em programação limita-se a copiar colar, e mudar algum parametro e ver o que acontece..

rsrs

int cuenta=0;                      // contador cuenta é igual a zero

unsigned int16 n;                // definindo contador n 

cuenta=get_timer0();           // contador cuenta pega o valor do timer0 

 if (cuenta==255)              //  Se o contador cuenta for igual a 255 
     {
       set_timer0(0);            //   Reseta o Timer0 (zerando) 
       desbordamiento++;    // some um para o contador desbordamiento
     }
     n=256*desbordamiento+cuenta;    // contador n é igual a 256 x desbordamiento + cuenta

Veja que no início do programa   desbordamiento = 1

int desbordamiento=1;

Onde esta o erro ?? 

então, como falei antes, eu não sou programador, baixei esse projeto na net e a unica falha que ta acontecendo é essa, o que vc sugere?

Não sou craque em programação...

Tente isso :

 if (cuenta>255)   

 

Eu não entendi porque desse numero 255. Pode explicar ?

Esse timer conta até 256 ?

Boa noite nobre amigo Jose, eu tentei essa modificação e contou até 255 depois passou a contas da seguinte maneira, de 255 foi para 055, 155, 255 355 e assim por diante, como falei antes eu não sou programador e conheço muito pouco do assunto, sou tecnico em eletronica e quero montar esse contador porque ele é bem interessante, ele tem a opção de programar para desligar o motor quando atingir um determinado numero de voltas ou contar livremente.

se vc não é craque em programação, eu estou pra lá de perna de pau,,

kkkk

Esse timer conta até 256 ? Se for tente isso :

Mude no início do programa   desbordamiento = 0

int desbordamiento=0;

if (cuenta>256)                 //  Se o contador cuenta for maior do que 256

 {
       set_timer0(0);            //   Reseta o Timer0 (zerando) 
       desbordamiento++;    // some um para o contador desbordamiento
     }
     n=(256*desbordamiento)+cuenta;    // contador n é igual a (256 x desbordamiento) + cuenta

então Jose, deu o mesmo resultado da alteração anterior, voce que que mande o pacote completo pra

vc dar uma olhada?

Você copiou todas as alterações ?

Viu que mudei o valor para 256?

Copie o seu código alterado e envie.

Oi JMC, boa noite

Acho que encontrei o problema.

Vamos la'.

O seu code usa o timer0 para contar qta voltas a maquina deu.

Quando chega em 255, nesta linha   if (cuenta == 255), ele zera o timer antes de contabilizar o valor .

A solução é mover a linha   n = 256 * desbordamiento + cuenta; para antes do if, e  muda o valor 256 para 255.

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço