Quanto tempo demora para o contador micros() do ESP32 reiniciar? - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T05:06:51Zhttps://labdegaragem.com/forum/topics/quanto-tempo-demora-para-o-contador-micros-do-esp32-reiniciar?feed=yes&xn_auth=noESP32 micros()Resultado do Se…tag:labdegaragem.com,2022-06-24:6223006:Comment:8842932022-06-24T00:14:28.646ZCarlos Biazotohttps://labdegaragem.com/profile/CarlosBiazoto
<p><strong>ESP32 micros()</strong><br/><br/>Resultado do Serial print.<br/><strong>20:10</strong>:18.289 -> <strong>01h:10m</strong>:00s:318 |micros: <strong>4201329323</strong></p>
<p><strong>A contagem zerou em 01h:12 minutos</strong> aproximadamente<br/><strong>20:15</strong>:18.266 -> <strong>00h:03m</strong>:25s:33016 |micros: <strong>206362021</strong></p>
<p><strong>ESP32 micros()</strong><br/><br/>Resultado do Serial print.<br/><strong>20:10</strong>:18.289 -> <strong>01h:10m</strong>:00s:318 |micros: <strong>4201329323</strong></p>
<p><strong>A contagem zerou em 01h:12 minutos</strong> aproximadamente<br/><strong>20:15</strong>:18.266 -> <strong>00h:03m</strong>:25s:33016 |micros: <strong>206362021</strong></p> Achei esse programa no youtub…tag:labdegaragem.com,2022-06-23:6223006:Comment:8842912022-06-23T21:51:30.838ZCarlos Biazotohttps://labdegaragem.com/profile/CarlosBiazoto
<p>Achei esse programa no youtube que mostra um relógio do tipo cronometro usando millis() num arduino nano e modifiquei para testar micros() no ESP32, tambem modifiquei para usar SerialPrint no lugar do display LCD.<br></br> <br></br>Fontes : </p>
<p>Video - <a href="https://www.youtube.com/watch?v=ByvTKcU8Wdc" rel="nofollow noopener" target="_blank">https://www.youtube.com/watch?v=ByvTKcU8Wdc</a><br></br>Código - …</p>
<p>Achei esse programa no youtube que mostra um relógio do tipo cronometro usando millis() num arduino nano e modifiquei para testar micros() no ESP32, tambem modifiquei para usar SerialPrint no lugar do display LCD.<br/> <br/>Fontes : </p>
<p>Video - <a rel="nofollow noopener" href="https://www.youtube.com/watch?v=ByvTKcU8Wdc" target="_blank">https://www.youtube.com/watch?v=ByvTKcU8Wdc</a><br/>Código - <a rel="nofollow noopener" href="https://create.arduino.cc/projecthub/shashwatraj98765/how-to-make-stopwatch-with-arduino-6e09db?ref=user&ref_id=1535387&offset=0" target="_blank">https://create.arduino.cc/projecthub/shashwatraj98765/how-to-make-s...</a><br/><br/></p>
<p>#########################################################<br/>Código alterado<br/><br/></p>
<p>#include <Bounce2.h></p>
<p>const byte startButton = 4;<br/>Bounce startDebouncer1 = Bounce();</p>
<p>const byte resetButton = 23;<br/>Bounce resetDebouncer2 = Bounce();</p>
<p><br/>void setup()<br/>{<br/> Serial.begin(115200);<br/> pinMode(startButton, INPUT_PULLUP);<br/> startDebouncer1.attach(startButton);<br/> startDebouncer1.interval(5);</p>
<p>pinMode(resetButton, INPUT_PULLUP);<br/> resetDebouncer2.attach(resetButton);<br/> resetDebouncer2.interval(5);<br/> Serial.println("Press 1st-Strt/Stp");<br/> Serial.println("Press 2nd-Reset");</p>
<p>}</p>
<p><br/>bool startState = LOW;<br/>bool resetState = LOW;</p>
<p>unsigned long startMicros;<br/>unsigned long currentMicros;<br/>unsigned long elapsedMicros;</p>
<p>void loop() {<br/> // Update the Bounce instances :<br/> startDebouncer1.update();</p>
<p>if ( startDebouncer1.fell() ) { // Call code if button transitions from HIGH to LOW<br/> startState = !startState; // Toggle start button state<br/> startMicros = micros();<br/> }</p>
<p>if (startState)<br/> {<br/> currentMicros = micros();<br/> elapsedMicros = (currentMicros - startMicros);</p>
<p><br/> unsigned long durMS = (elapsedMicros % 1000000 ); //Microseconds<br/> unsigned long durSS = (elapsedMicros / 1000000) % 60; //Seconds<br/> unsigned long durMM = (elapsedMicros / (60000000)) % 60; //Minutes<br/> unsigned long durHH = (elapsedMicros / (3600000000)); //Hours<br/> durHH = durHH % 24;</p>
<p>String durMicrosec = timeMicros(durHH, durMM, durSS, durMS);</p>
<p>Serial.print(durMicrosec);<br/> Serial.print(" |micros: ");<br/> Serial.println(currentMicros);</p>
<p>delay(100);<br/> }</p>
<p>resetDebouncer2.update();</p>
<p>if (resetDebouncer2.fell())<br/> {<br/> resetState = HIGH;<br/> }</p>
<p>if (resetState)<br/> {</p>
<p>Serial.print("Press 1st-Strt/Stp");<br/> Serial.print("Press 2nd-Reset");</p>
<p>delay(100);</p>
<p>resetState = LOW;<br/> }</p>
<p>}</p>
<p>String timeMicros(unsigned long Hourtime, unsigned long Mintime, unsigned long Sectime, unsigned long MStime)<br/>{<br/> String dataTemp = "";</p>
<p>if (Hourtime < 10)<br/> {<br/> dataTemp = dataTemp + "0" + String(Hourtime) + "h:";<br/> }<br/> else {<br/> dataTemp = dataTemp + String(Hourtime) + "h:";<br/> }</p>
<p>if (Mintime < 10)<br/> {<br/> dataTemp = dataTemp + "0" + String(Mintime) + "m:";<br/> }<br/> else {<br/> dataTemp = dataTemp + String(Mintime) + "m:";<br/> }</p>
<p>if (Sectime < 10)<br/> {<br/> dataTemp = dataTemp + "0" + String(Sectime) + "s:";<br/> }<br/> else {<br/> dataTemp = dataTemp + String(Sectime) + "s:";<br/> }</p>
<p>dataTemp = dataTemp + String(MStime);</p>
<p>return dataTemp;<br/>}</p>
<p><br/> </p> Eu vi as mensagens anteriores…tag:labdegaragem.com,2022-06-23:6223006:Comment:8842862022-06-23T17:23:38.698ZCarlos Biazotohttps://labdegaragem.com/profile/CarlosBiazoto
<p>Eu vi as mensagens anteriores e realmente é muito interessante saber quanto tempo demora para o reset dos contadores millis() e micros() do ESP32.<br/><br/>Fazendo uma conta grosseira usando a base do Arduino, e supondo que o numero do contador do micros() seja o mesmo do millis():<br/>(49 dias / 1000 us) * 24 horas = 1,176 horas<br/><br/> <br/><br/></p>
<p>Eu vi as mensagens anteriores e realmente é muito interessante saber quanto tempo demora para o reset dos contadores millis() e micros() do ESP32.<br/><br/>Fazendo uma conta grosseira usando a base do Arduino, e supondo que o numero do contador do micros() seja o mesmo do millis():<br/>(49 dias / 1000 us) * 24 horas = 1,176 horas<br/><br/> <br/><br/></p> Boa pergunta chara Biazoto, e…tag:labdegaragem.com,2022-06-23:6223006:Comment:8843592022-06-23T16:33:51.013ZCarlos kwiekhttps://labdegaragem.com/profile/Carloskwiek
<p>Boa pergunta chara Biazoto, e ótima pesquisa e resposta SL RV.</p>
<p></p>
<p>Abs.</p>
<p></p>
<p>CK</p>
<p></p>
<p></p>
<p></p>
<p>Boa pergunta chara Biazoto, e ótima pesquisa e resposta SL RV.</p>
<p></p>
<p>Abs.</p>
<p></p>
<p>CK</p>
<p></p>
<p></p>
<p></p> Bom dia,
pelo meu entendiment…tag:labdegaragem.com,2022-06-22:6223006:Comment:8844152022-06-22T15:34:27.660Zmineirin RVhttps://labdegaragem.com/profile/RuiViana
<p>Bom dia,</p>
<p>pelo meu entendimento o millis() usa um registrador unsigned long ,</p>
<p>(4 bytes, 32 bits, HEX 0xFFFFFFFF),(DEC 4.294.967.295).</p>
<p></p>
<p>4.294.967.295 mili seg = 4.294.967 seg = 71.582 min = 1.193 H = 49 dias.</p>
<p></p>
<p>Mas como o ESP32 tem arquitetura de 64 bits podemos pensar que mudaria a duraçao,</p>
<p>mas acho que so' usa a arquitetura de 64 bits quando usa o ESP_IDF ou FreeRTOS.</p>
<p>Agora fiquei curioso. Vou pesquisar.</p>
<p></p>
<p></p>
<p>Encontrei…</p>
<p>Bom dia,</p>
<p>pelo meu entendimento o millis() usa um registrador unsigned long ,</p>
<p>(4 bytes, 32 bits, HEX 0xFFFFFFFF),(DEC 4.294.967.295).</p>
<p></p>
<p>4.294.967.295 mili seg = 4.294.967 seg = 71.582 min = 1.193 H = 49 dias.</p>
<p></p>
<p>Mas como o ESP32 tem arquitetura de 64 bits podemos pensar que mudaria a duraçao,</p>
<p>mas acho que so' usa a arquitetura de 64 bits quando usa o ESP_IDF ou FreeRTOS.</p>
<p>Agora fiquei curioso. Vou pesquisar.</p>
<p></p>
<p></p>
<p>Encontrei isto no forum do arduino:</p>
<p></p>
<p><font>millis() tem uma limitação máxima de uint32_t e rola após 49 dias.</font></p>
<p><font>O ESP32 usa um micro contador, esp_timer_get_time(), que é um unint64_t</font></p>
<p><font>e rola após mais de 200 anos.</font></p>
<p><font>O uso do contador ESP32 requer uma alteração de código.</font></p>
<p><font>Aqui está uma tarefa usando a versão ESP32 de micros, esp_timer_get_time(),</font></p>
<p><font>e a versão freeRTOS de millis(), vTaskDelayUntil().</font></p>
<p></p>