Hans-Christoph Steiner wrote:
On Oct 6, 2006, at 9:53 AM, Martin Peach wrote:
...
In the Pd_firmware.pde code the pins are set on at a time even if the data is sent as two bytes:
for(i=0; i<7; ++i) { mask = 1 << i; if( (digitalPinStatus & mask) && !(pwmStatus & mask) ) { digitalWrite(i, inputData & mask); } }
I am definitely open to suggestions as to how to make the code work better. I've been focused on the protocol design, so little optimization has happened. In this case, its not quite as simple as just getting the byte from the serial port and writing it to the ports. If a PWM is running, then you don't want to write to that port, that's what pwmStatus is doing.
From what I read about the functions that write a byte at a time to the digital pins, you have to have all of the pins set to OUTPUT in order to use them. But I could be wrong.
In assembly you can definitely write bytes to the ports, the PWM pins and any other special-purpose pins just ignore the values. In the PIC version that's what I do, because the bit-write instructions don't work properly unless all the pins are outputs. I guess it's Wiring that needs looking at... Martin