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
Tags:
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por