Erros no programa - Mikroc/Proteus [Jogando a Toalha]

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Erros no programa - Mikroc/Proteus [Jogando a Toalha]

Mensagempor elzirobotelho » 17 Fev 2016 19:42

Montei um projeto onde me exibe data, hora, mensagem e temperatura em 8 display de 7 seg. O problema é quando eu habilito a chamada da rotina de temperatura(), que fica no laço while dentro da rotina main(); os caracteres da opção Sair (quando acessa o menu através do botão enter) fica indescritível, e quando acesso a opção mensagem para a alteração da mensagem exibida, não funciona adequadamente. Segue em anexo o programa escrito no MikrocPro e os arquivos do Proteus 7.7.
Detalhe, este circuito rodei num hardware real, e apresenta o mesmo problema no circuito simulado pelo Proteus.
Já quebrei a cabeça e não consegui achar o erro no programa. Sei que o programa é bem longo, se alguém quiser tentar e me ajudar a desvendar este problema, agradeço

Sds
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por andre_luis em 19 Fev 2016 07:40, em um total de 1 vez.
Razão: Título descritivo
elzirobotelho
Bit
 
Mensagens: 31
Registrado em: 22 Fev 2008 23:00
Localização: Santos - SP

Re: Jogando a Toalha

Mensagempor andre_luis » 17 Fev 2016 22:02

elzirobotelho escreveu:quando acesso a opção mensagem para a alteração da mensagem exibida, não funciona adequadamente


Se tiver como detalhar mais isso aí ajudaria.
Um video no Youtube talvez fosse melhor do que com palavras...
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Jogando a Toalha

Mensagempor brasilma » 18 Fev 2016 07:07

Olá Colega,

Pelo que descreve, está ocorrendo alguma especie de conflito, que pode ser de sinal ou variável. V

erifique a ligação de pinos do display, veja se não ficou nenhum sem conexão, verifique a rotina do display, variáveis em comum.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: Jogando a Toalha

Mensagempor tcpipchip » 18 Fev 2016 07:48

Opa,

Esta dizendo que falta DLL da MAXIM
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Jogando a Toalha

Mensagempor tcpipchip » 18 Fev 2016 07:59

Ahh, faz um teste no 18F4620 tambem no PROTEUS
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Jogando a Toalha

Mensagempor ze » 18 Fev 2016 08:45

tentei analisar por alguns minutos. Numa análise superficial penso que tudo pode ser otimizado. p.ex. penso não ser necessários:
-WordToStr()
-max7219: faria varredura pelos pinos que sobram
Sei que isso não te ajudou muito mas tenho visão minimalista e seu projeto me pareceu muito complexo pra uma missão tão simples. Estimo que o fonte poderia ser reduzido nuns 60% e o circuito uns 25. Pelo menos reduziria um pouco o tamanho do palheiro onde está a agulha

Pra tentar agregar algum coisa...
-carregue o .cof no proteus pra ver o fonte
-rode passo a passo
-crie break points onde suspeita de algo
Talvez as interrupções esteja zoando o barraco
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: Jogando a Toalha

Mensagempor vtrx » 18 Fev 2016 20:17

Não baixei nem ví o código,mas provavelmente escreveu uma uma rotina de interrupção para o Display,correto...?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: Jogando a Toalha

Mensagempor elzirobotelho » 19 Fev 2016 06:57

Vou Tentar postar imagem no youtube. Ou selecionar o print da tela e postar
elzirobotelho
Bit
 
Mensagens: 31
Registrado em: 22 Fev 2008 23:00
Localização: Santos - SP

Re: Jogando a Toalha

Mensagempor elzirobotelho » 19 Fev 2016 07:13

ze escreveu:tentei analisar por alguns minutos. Numa análise superficial penso que tudo pode ser otimizado. p.ex. penso não ser necessários:
-WordToStr()
-max7219: faria varredura pelos pinos que sobram
Sei que isso não te ajudou muito mas tenho visão minimalista e seu projeto me pareceu muito complexo pra uma missão tão simples. Estimo que o fonte poderia ser reduzido nuns 60% e o circuito uns 25. Pelo menos reduziria um pouco o tamanho do palheiro onde está a agulha

Pra tentar agregar algum coisa...
-carregue o .cof no proteus pra ver o fonte
-rode passo a passo
-crie break points onde suspeita de algo
Talvez as interrupções esteja zoando o barraco



É uma boa dica, posso tentar otimizar o programa, embora eu não seja um bom programador no sentido de criar programas enxutos.

Sds
elzirobotelho
Bit
 
Mensagens: 31
Registrado em: 22 Fev 2008 23:00
Localização: Santos - SP

Re: Jogando a Toalha

Mensagempor elzirobotelho » 19 Fev 2016 07:15

brasilma escreveu:Olá Colega,

Pelo que descreve, está ocorrendo alguma especie de conflito, que pode ser de sinal ou variável. V

erifique a ligação de pinos do display, veja se não ficou nenhum sem conexão, verifique a rotina do display, variáveis em comum.



Eu acredito que o problema seja de software, erro no programa ou bug, qualquer coisa do gênero

Sds
elzirobotelho
Bit
 
Mensagens: 31
Registrado em: 22 Fev 2008 23:00
Localização: Santos - SP

Re: Jogando a Toalha

Mensagempor elzirobotelho » 19 Fev 2016 07:18

andre_teprom escreveu:
elzirobotelho escreveu:quando acesso a opção mensagem para a alteração da mensagem exibida, não funciona adequadamente


Se tiver como detalhar mais isso aí ajudaria.
Um video no Youtube talvez fosse melhor do que com palavras...


Vou fazer um vídeo e posto, e tentarei postar aqui mesmo.

Sds
elzirobotelho
Bit
 
Mensagens: 31
Registrado em: 22 Fev 2008 23:00
Localização: Santos - SP

Re: Jogando a Toalha

Mensagempor elzirobotelho » 19 Fev 2016 14:31

andre_teprom escreveu:
elzirobotelho escreveu:quando acesso a opção mensagem para a alteração da mensagem exibida, não funciona adequadamente


Se tiver como detalhar mais isso aí ajudaria.
Um video no Youtube talvez fosse melhor do que com palavras...



Estou anexando 2 vídeos, um com a rotina temperatura habilitada e outro sem a habilitação.

Sds
Você não está autorizado a ver ou baixar esse anexo.
elzirobotelho
Bit
 
Mensagens: 31
Registrado em: 22 Fev 2008 23:00
Localização: Santos - SP

Re: Erros no programa - Mikroc/Proteus [Jogando a Toalha]

Mensagempor elzirobotelho » 19 Fev 2016 14:33

O Outro vídeo
Você não está autorizado a ver ou baixar esse anexo.
elzirobotelho
Bit
 
Mensagens: 31
Registrado em: 22 Fev 2008 23:00
Localização: Santos - SP

Re: Erros no programa - Mikroc/Proteus [Jogando a Toalha]

Mensagempor andre_luis » 19 Fev 2016 18:17

elziro,

A sua função temperatura() é instanciada diretamente dentro do loop while(1) do main(), e possui dentro dela, um delay de 300ms, que é da mesma ordem de grandeza do delay usado pela rotina do display (250ms). Em primeiro lugar, seja qual for o material que você esteja medindo, com certeza sua temperatura não vai variar significativamente em alguns segundos. Isso significa que voce poderia colocar um contador para que essa temperatura fosse monitorada a cada, digamos 10 passadas, ex.:
cpp code
for ( i=0 ; i<10 ; i++ )
{
temperatura();
}
Alem disso, será que 300ms é realmente necessário ?
Não daria pra diminuir 1/10 esse valor ?

No mais, gostei do seu código, tem bastante comentários...
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Erros no programa - Mikroc/Proteus [Jogando a Toalha]

Mensagempor elzirobotelho » 20 Fev 2016 18:36

andre_teprom escreveu:elziro,

A sua função temperatura() é instanciada diretamente dentro do loop while(1) do main(), e possui dentro dela, um delay de 300ms, que é da mesma ordem de grandeza do delay usado pela rotina do display (250ms). Em primeiro lugar, seja qual for o material que você esteja medindo, com certeza sua temperatura não vai variar significativamente em alguns segundos. Isso significa que voce poderia colocar um contador para que essa temperatura fosse monitorada a cada, digamos 10 passadas, ex.:
cpp code
for ( i=0 ; i<10 ; i++ )
{
temperatura();
}
Alem disso, será que 300ms é realmente necessário ?
Não daria pra diminuir 1/10 esse valor ?

No mais, gostei do seu código, tem bastante comentários...



Alterei a rotina temperatura, tirando o Delay, e eliminei o laço do/while, mas continuou o mesmo problema.
Com relação ao sistema de amostragem é uma coisa que eu iria melhorar depois, estou usando um LM35, e a temperatura fica oscilando um pouco com alguns degraus até significativos, mas este é o menor dos problemas

Att
elzirobotelho
Bit
 
Mensagens: 31
Registrado em: 22 Fev 2008 23:00
Localização: Santos - SP

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 1 visitante

x