I'm noticing a GCode bug on my Duet3D board. I'm running the following configuration:
FIRMWARE_NAME: RepRapFirmware for Duet 3 MB6HC FIRMWARE_VERSION: 3.1.1 ELECTRONICS: Duet 3 MB6HC v1.01 or later FIRMWARE_DATE: 2020-05-19b2
So I'm using all 9 GPIO outputs to drive some valves and I have all the GPIO set high beforehand. But when I assign the pins using M950, some of the states change. For example, assume that all GPIO outputs are set high at 3.3V. So when I query the object model of those pins, they all say this:
{"key":"state.gpOut","flags":"","result":[{"pwm":1.00},{"pwm":1.00},{"pwm":1.00},{"pwm":1.00},{"pwm":1.00},{"pwm":1.00},{"pwm":1.00},{"pwm":1.00},{"pwm":1.00}]}
Which is what I expect.
Then I'll send down the following commands sequentially:
M950 P0 C"io0.out"
M950 P1 C"io1.out"
M950 P2 C"io2.out"
M950 P3 C"io3.out"
M950 P4 C"io4.out"
M950 P5 C"io5.out"
M950 P6 C"io6.out"
M950 P7 C"io7.out"
M950 P8 C"io8.out"
For some unknown reason, pins 4, 5, and 7 get switched low to 0V during those assignments and I have no idea why they would switch when all I'm doing is assigning them and not setting them. Even when I query the object model again, I still see that all pins are said to be high even though pins 4, 5, and 7 are low.
What's going on? Why do only those 3 gpio pins get switched when I'm assigning pins? I'm not even setting them at all which is concerning since the board even thinks that they're all set high when they're physically not which puts it at an unknown state. Am I missing something?