Hello!
I’m trying to get Bidirectional DShot running on Matek H743-WLITE with MatekH743-bdshot firmware. So far I had no success with different ESCs (AM32 or BLHeli32). The only ESC protocols I get reliable working are PWM and OneShot 125 (Q_M_PWM_TYPE,1). Motors don’t spin with any of the DShot protocols.
In the boot messages I always see the correct protocol selected (for example: RCOut: PWM:1-2 DS300:3-6 PWM:7-13).
Any ideas?
I am running BDshot on a Matek H743 Wing V3 (not a WLITE) without issues. You have the timer groups worked out correctly for that board? IIRC correctly, I had to have even the unused SERVOn_FUNCTION set as motors in the timing group to get DSHOT output (I am using it for a tricopter VTOL, so only have 3 motors, but since the timing group has 4, the 4th SERVO_FUNCTION also had to be set to motor.
Yes, I’m doing always a full power cycle.I can read the ESCs with their config tool and they are all working in PWM and OneShot mode. So it seems they are working. Is there some requirement for a specific or minimum ESC firmware version?
I’m also using WLITE boards. The only differences I noticed were the two parameters I pointed out above. One other thing was I run my loop rates at 400hz, and I noticed yours is at 300. The SERVO_DSHOT_RATE setting I recommended above should take care of that, but you could always try setting the loop rate to 400.
I’ve seen where AM32 get’s cranky if the KV isn’t correct. Usually the motors will work but there’s tune issues. Could be worth checking out.
OK, so I just made a quick test with Copter 4.6.0 instead of Plane 4.6.0. I was able to get my motors spinning in DShot300/600 (MOT_PWM_TYPE,5/6). I also got directly RPMs from the ESC. This means my ESCs are working with BDShot!
The question is now, did I make a mistake with my plane parameters or is it a bug in plane?
And again, can somebody with a VTOL please confirm that BDShot is working in Plane 4.6.0 ?
Interesting. As I mentioned, I run a Matek Wing V3, rather than the WLITE, but I have had no problems running SERVO_DSHOT_RATE = 0, and is seems @Allister is similarly using that. However, I am glad to hear you got it working!
Just speculating, but I’m wondering if it has to do with BLHELI32 vs AM32. It seems AM32 is more sensitive to the Dshot rate and will cause trouble if it’s not happy.