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 !
Tags:
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:
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
.
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
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por