Já criei um tópico no Forum do ESP32, mas se alguém quiser e puder me ajudar ficarei grato ! 

https://www.esp32.com/viewtopic.php?f=19&t=11261#p45725

Em fevereiro de 2018, eu rodei o Sketch (arduino IDE) no meu projeto - voltímetro digital ESP32 e funcionou perfeitamente - Arduino IDE 1.8.5 e ESP32 Board versão 1.0.0. 


A comunicação do voltímetro digital é feita com o chip PCF8574 através da interface I2C.

 Resistores de Pullups são 3K3 ohms (VCC = 3.3V) 

https://www.elektormagazine.com/labs/esp32-digital-voltmeter#/comme...

https://github.com/Gustavomurta/ESP32-DVM

O sketch completo para teste do voltímetro ESP32 é esse :

https://github.com/Gustavomurta/ESP32-DVM/blob/master/ESP32_DVM7135...

Agora, com o Arduino 1.8.9 e o ESP32 Board versão 1.0.2, a interface I2C funciona em um modo louco. O pino SCL envia pulsos contínuos e o SDA envia dados errados (verificados com o analisador lógico). 


Meu ESP32 é DOIT ESP32 DevKit V1 e o hardware está OK e verificado com meu scanner I2C. (baseado em Nick Gammon). 

https://github.com/Gustavomurta/ESP32-DVM/blob/1bc07438e89eac39ae83...


Pesquisando este problema com a opção Debug (Arduino IDE), encontrei essas mensagens, mas não sei o que significam :

debugFlags=0x00000000
[I][esp32-hal-i2c.c:311] i2cDumpDqData(): Debug Buffer not Enabled
[I][esp32-hal-i2c.c:354] i2cDumpInts(): Debug Buffer not Enabled
[D][esp32-hal-i2c.c:1336] i2cProcQueue(): Busy Timeout start=0x303a4, end=0x303a4, =0, max=50 error=0
[E][esp32-hal-i2c.c:318] i2cDumpI2c(): i2c=0x3ffbebe0
[I][esp32-hal-i2c.c:319] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:321] i2cDumpI2c(): lock=0x3ffb84ec
[I][esp32-hal-i2c.c:323] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): error=0
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): event=0x3ffb8570 bits=0
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): intr_handle=0x3ffb85a0
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): dq=0x3ffb854c
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): errorByteCnt=0
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): debugFlags=0x00000000

Alguém pode me ajudar? Obrigado ! 

Exibições: 2466

Responder esta

Respostas a este tópico

Aparentemente sim ,mas não tenho o TCL7135, então fica imprimindo  " Over Voltage".

Vc está usando o clock do  TCL7135 no port 2.

O port 2 do ESP tem o led builtin, será que pode está afetando o uso do TCL7135?

Vc olhou o port 4 com o analisador ? Tem Pulso?

RV

Rui, 

Fica imprimindo Over Voltage pois o ESP32 não consegue ler nada na I2C. 

O Clock do Voltimetro TLC7135 é gerado pelo GIO-2 e esta funcionando corretamente - 480 KHz. 

O Pino GPIO-4 esta gerando as interrupções na frequencia correta (esperada) 480 Hz . 

Anexei o arquivo do analisador lógico com a I2C maluca. 

Veja a maluquice:

Anexos

Rui,

Como já dito, a interrupção no pino GPIO-4 esta funcionando corretamente.

Mas enfim, mudei o pino para INPUT_PULLUP, como sugeriu. 

pinMode (STB, INPUT_PULLUP); // Interrupt - ESP32 GPIO_4

Não mudou nada. 

Obrigado. 

Verifiquei que um analista chamado de StickBreaker foi o útlimo que atualizou a Biblioteca WIRE.

E acho que alguma modificação que ele fez, quebrou o meu programa. KKKK

https://github.com/espressif/arduino-esp32/tree/master/libraries/Wire

https://github.com/espressif/arduino-esp32

Achei isso sobre Debug mode - OPA ! 

https://github.com/espressif/arduino-esp32/blob/master/libraries/Wi...

Para ativar o modo DEBUG, ative a linha apagando as duas barras:

 \\#define ENABLE_I2C_DEBUG_BUFFER at line 45 o no arquivo  esp32-hal-i2c.c.

  • When Arduino-Esp32 is installed in Windows with Arduino Boards Manager, esp32-hal-i2c.c can be found in:C:\Users\{user}\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.1\cores\esp32\

Eu não estava ativando o modo DEBUG corretamente ! 

Agora ativando o modo DEBUG (não encontrei o erro ainda)

[D][esp32-hal-i2c.c:1337] i2cProcQueue(): Busy Timeout start=0x131, end=0x131, =0, max=50 error=0
[E][esp32-hal-i2c.c:319] i2cDumpI2c(): i2c=0x3ffbebe0
[I][esp32-hal-i2c.c:320] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:322] i2cDumpI2c(): lock=0x3ffb84ec
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): error=0
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): event=0x3ffb8570 bits=0
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): intr_handle=0x3ffb85a0
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): dq=0x3ffb854c
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorByteCnt=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:335] i2cDumpI2c(): debugFlags=0x00000000
[I][esp32-hal-i2c.c:289] i2cDumpDqData(): [0] 7bit 41 R STOP buf@=0x3ffbfeb8, len=1, pos=0, ctrl=11110
[I][esp32-hal-i2c.c:307] i2cDumpDqData(): 0x0000: . 00
[I][esp32-hal-i2c.c:347] i2cDumpInts(): 0 row count INTR TX RX Tick

Muito interessante Rui ! 

Irei testar :

https://github.com/bblanchon/ArduinoTrace

Rui , esse ESP32 Trace é usado quando o programa esta com um bug e esta travando.

Não é o meu caso. Será que adiantará  usá-lo??

Já usou esse trace alguma vez?

Tem que ativar o bit de Debug no Sketch. Mas não identifiquei o erro ainda. 

Nenhum erro esta sendo detectado. 

Acho que é assim :

void ReadData ()
{
   uint8_t flag = 1 1; // turn on bit 1
   uint32_t debugFlag = flag 16; // correctly position the 8bits of flag as the second byte of setBits.
   Wire.setDebugFlags(debugFlag, 0); // resetBits=0 says leave all current setBits as is.

   Wire.begin(); // Start I2C
   Wire.requestFrom(PCF8574, 1); // Read One Byte from PCF8574
   pcfData = Wire.read(); // Byte Read

   Wire.setDebugFlags(0, debugFlag); // don't add any new debug, remove debugFlag
}

DEBUG na Console Serial :

rst:0x1 (POWERON_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:928
ho 0 tail 12 room 4
load:0x40078000,len:8424
ho 0 tail 12 room 4
load:0x40080400,len:5868
entry 0x4008069c
[D][esp32-hal-i2c.c:1337] i2cProcQueue(): Busy Timeout start=0xd6, end=0xd6, =0, max=50 error=0
[E][esp32-hal-i2c.c:319] i2cDumpI2c(): i2c=0x3ffbebe0
[I][esp32-hal-i2c.c:320] i2cDumpI2c(): dev=0x60013000 date=0x16042000
[I][esp32-hal-i2c.c:322] i2cDumpI2c(): lock=0x3ffb84ec
[I][esp32-hal-i2c.c:324] i2cDumpI2c(): num=0
[I][esp32-hal-i2c.c:325] i2cDumpI2c(): mode=1
[I][esp32-hal-i2c.c:326] i2cDumpI2c(): stage=3
[I][esp32-hal-i2c.c:327] i2cDumpI2c(): error=0
[I][esp32-hal-i2c.c:328] i2cDumpI2c(): event=0x3ffb8570 bits=0
[I][esp32-hal-i2c.c:329] i2cDumpI2c(): intr_handle=0x3ffb85a0
[I][esp32-hal-i2c.c:330] i2cDumpI2c(): dq=0x3ffb854c
[I][esp32-hal-i2c.c:331] i2cDumpI2c(): queueCount=1
[I][esp32-hal-i2c.c:332] i2cDumpI2c(): queuePos=0
[I][esp32-hal-i2c.c:333] i2cDumpI2c(): errorByteCnt=0
[I][esp32-hal-i2c.c:334] i2cDumpI2c(): errorQueue=0
[I][esp32-hal-i2c.c:335] i2cDumpI2c(): debugFlags=0x00020000
[I][esp32-hal-i2c.c:289] i2cDumpDqData(): [0] 7bit 20 R STOP buf@=0x3ffbfeb8, len=1, pos=0, ctrl=11110
[I][esp32-hal-i2c.c:307] i2cDumpDqData(): 0x0000: . 00
[I][esp32-hal-i2c.c:347] i2cDumpInts(): 0 row count INTR TX RX Tick
[I][esp32-hal-i2c.c:438] i2cTriggerDumps(): after ProcQueue
[I][esp32-hal-i2c.c:347] i2cDumpInts(): 0 row count INTR TX RX Tick

Pesquisando problemas semelhantes no GitHub ESP32 Arduino. 

https://github.com/espressif/arduino-esp32/issues/2751

https://github.com/espressif/arduino-esp32/issues/2495

https://github.com/espressif/arduino-esp32/issues/2433

https://github.com/espressif/arduino-esp32/issues/2412

https://github.com/espressif/arduino-esp32/issues/2261

Eu acho que esse StickBreaker fez alguma bagunça na LIB Wire. 

Nenhum problema foi resolvido e o cara pede para fechar o tópico do problema! 

Acho que vou abrir um tópico no ESP32 Arduino Github

Cada vez mais preocupado com tanta reclamação de problemas e o cara não resolve nada...

Até entendo a dificuldade em dar manutenção numa IDE dessas. O ESP32 é muito complexo e com inúmeros recursos.

Mas para resolver alguns problemas, ele criou vários outros. 

https://github.com/espressif/arduino-esp32/issues/2069

https://github.com/espressif/arduino-esp32/issues/1962

https://github.com/espressif/arduino-esp32/issues/1020

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço