Replies: 1 comment 4 replies
-
I looked at the library. It bit bangs data on a 1-Wire interface. That's going to be very sensitive to timing. Are you seeing variations in the input signal (SDI) of the TLC5973? If not, then it's possible the bit rate on incoming data doesn't match the 12Mhz internal clock. Update: TLC5973 datasheet says the timebase (tCYCLE) is established by measuring the distance between the first 2 rising edges on the SDI line. The library you linked does disable interrupts*, so in theory the bit timing should be consistent. If this doesn't work, you can use a hardware timer to get precise interrupts for each bit. Also consider looking for one-wire libraries for Dallas Semiconductor products. Here's one written for IDF (the layer below Arduino-esp32): https://github.com/DavidAntliff/esp32-owb/tree/master *Disabling interrupts in FreeRTOS works on the current core. WT32-ETH01 appears to be a dual core device, so Arduino layer runs on Core 1 and interrupts will be disabled on Core 1. WiFi functionality should run on Core 0. Not sure which core runs ethernet. |
Beta Was this translation helpful? Give feedback.
-
Hello everyone,
I’m facing issues with the TLC5973 LED driver when paired with the WT32-ETH01 microcontroller. In my project, I use the TLC5973 to control LEDs. When I try dimming just one color, everything works perfectly. However, as soon as I dim two or three colors, at high brightness flickering starts to occur.
I have a stable power supply and adding a capacitor didn’t make a difference. After some debugging and using an oscilloscope, I noticed that some of the PWM pulses from the TLC appear shorter than they should be. This might explain the flickering.
I’ve attempted several things but turning off the WiFi and Bluetooth on the WT32-ETH01 with WiFi.mode(WIFI_OFF); and btStop(); commands seemed to help a lot, but the flickering is still not entirely gone. Therefore I assume it could be an Issue with the timing or Interrupts which occur.
Has anyone had experience with this hardware combination or can offer tips on optimizing the timing? Is it feasible to rewrite the library to be better suited for the TLC5973 and the WT32-ETH01?
My code looks like this:
The routine which sends the data looks like this:
The TLC5973 documents are based on the development from:
https://github.com/miandehe/Arduino-TLC5973.git
Any help or recommendations would be greatly appreciated!
Thanks in advance.
Beta Was this translation helpful? Give feedback.
All reactions