Rotina sendo chamada no LOOP e no ISR?

System-On-Chip com Wi-Fi embutido, para aplicações IoT

Moderadores: 51, guest2003, Renie, gpenga

Rotina sendo chamada no LOOP e no ISR?

Mensagempor andre_luis » 18 Out 2019 21:25

Olá pessoal,

Estou tentando resolver um problema num projeto baseado no Arduino do ESP32 operando como Webserver, onde sempre que a conexão de Wifi com o cliente cai, estranhamente o programa no microcontrolador se congela por aproximadamente 1s, variando.

No loop() roda apenas o manipulador de cliente WebSocketsServer() e um intertravamento que precisa operar 'realtime', resumidamente:

Código: Selecionar todos
void loop(void) {
   webSocketsServer();
   Interlock();
   }


Aparentemente, a reconexão fica presa num loop, travando o processo seguinte, que deveria responder imediatamente á mudança do valor do sensor que no processo tem uma tolerancia de digamos 0,1s.

Numa das tentativas que fiz foi colocar o Interlock() na interrupção do timer e não funcionou abaixo de uma certa temporização, mas quando acidentamente o esqueci lá e mantive no loop() (sem comentar), o proloblema diminuiu bastante; ou seja, no travamento do webSocketsServer() no loop, a interrupção cobriu a ausencia do Interlock() no loop principal, ficando agora essa rotina sendo chamada em 2 lugares:

Código: Selecionar todos
ISR_Timer() {
   Interlock();
   }

Por acaso, não há nenhuma variável local nessa rotina, apenas global.

Gostaria de confirmar se essa abordagem é incomum, ou se essa seria a solução padrão.
Algo parece estar me escapando, achei muito exótico.
"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: Rotina sendo chamada no LOOP e no ISR?

Mensagempor tcpipchip » 19 Out 2019 07:37

Opa, estranho, pois nao tive este problema com o ESP32.

Tentou colocar ele para rodar em 240Mhz ?
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Rotina sendo chamada no LOOP e no ISR?

Mensagempor andre_luis » 19 Out 2019 09:00

tcpipchip escreveu:Opa, estranho, pois nao tive este problema com o ESP32.

Tentou colocar ele para rodar em 240Mhz ?


Tambem nunca havia precebido isso poruqe ate entao as aplicacoes que trabalhei com esse uC nao tinham requisitos de reacao tao rapida, e alem disso aplicacoes clientes nao desconectavam com tanta frequencia como nesse caso onde a placa fica num ambiente ruidoso, daqui meus testes sao com o ESP a menos de meio metro do Laptop e la fica numa fabrica, dentro de um gabinete.

Pelo que vi, atualmente esta operando em 80Mhz, mas no que quadruplicando a frequencia da cpu iria ajudar ? O problema nao parece ser de processamento, mas de como a biblioteca lida com a perda da conexao com o cliente ou com a rede .
"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: Rotina sendo chamada no LOOP e no ISR?

Mensagempor tcpipchip » 19 Out 2019 12:58

mas mudou para 240Mhz ?
E estas usando Arduino via Platormio ? Eclipse ou o classico ?
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!


Voltar para ESP8266/ESP32

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x