[DUVIDA] Tempo de execução de um programa no Arduino

Boa noite a todos,

Estou desenvolvendo um projeto e esse utiliza vários delay. Por conta disso, quando executo o programa fica demorando muito para realizar as ações programadas.

Para reduzir esse tempo, pensei em usar interrupções para evitar que fique muito delay no void loop().

Alguem saberia me dizer se é possivel reduzir esse tempo de outra maneira ?

Exibições: 1781

Responder esta

Respostas a este tópico

 Olá Liliane. Tudo bem? ^^

 

 Você já deduziu um dos caminhos certos: utilização das interrupções.

 Realmente o uso de "delay" durante o código é um forte candidato à tornar o seu código "lento", uma vez que ele fica aguardando o tempo deste delay para que execute a próxima função.

 A sacada principal é "estruturar" o seu código para que ele se torne rápido, e execute as funções dentro de um tempo programado, mas sem recorrer ao uso de delays. E para isto um forte candidato é usar as interrupções de TIMER.

 No caso você iria programar o timer para um tempo fixo, e após "n" interrupções executar algo. Por exemplo: Uma interrupção de timer acontecendo à cada segundo, depois que você contar 60 interrupções você tem 1 minuto. E assim por diante.

 Dicas: Dentro de uma interrupção fique o menor tempo possível.

           Se precisar executar uma função com muitas instruções, faça o seu timer "sinalizar" através de uma variável, que ele precisa executar algo. E no programa dentro do "loop()" você deve colocar alguém que verifica este pedido e comece à executá-lo fora da interrupção.

            Por isso a estrutura ou arquitetura do seu software é muito importante.

 Para te auxiliar, aprenda os seguintes tópicos:

1) Interrupções;

2) Timers;

3) Função: millis();

4) Threads (no Arduino ele não é bem desenvolvido, mas te abrirá muitas idéias novas sobre otimização e aumento de performance no processamento);

Qualquer dúvida, explique o que pretende fazer no seu software para que eu ou outros garagistas possam te auxiliar no desenvolvimento de uma boa arquitetura.

Espero ter ajudado. ^^

T++.

 

 Lembrei de um tópico antigo, onde não usei interrupções, mas sim "segmentei" o delay para poder fazer o programa não ficar "travado".

http://labdegaragem.com/forum/topics/como-fazer-o-arduino-parar-uma...

T++;

Ola Daniel,  muito obrigado pela ajuda de novo

Estou estudando a interrupção de timer, mas queria saber outras opções

Esta me ajudando muito

Muito obrigado

Até +

O fodastico Ivan, fez essa lib que ajuda 100% em tudo 

https://www.youtube.com/watch?v=oeP_NiajWME

Ola Rogério, muito obrigado por me passar esse link

Me ajudou a ter novas idéias para implementar no projeto

Obrigada pela ajuda

Olá,

Vi as respostas de Daniel e do Rogério que forma fabulosas e creio que o uso combinado de threads e interrupções certamente fará o que deseja.

Ajudaria muito saber exatamente o que seria o seu problema para poder entender e dar a melhor opinião.

Muito obrigado,

  'Eiju 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço