Nice! I guess its time to rename the [arduino] object...
[microcontroller]?
Oops, I forgot to update the help patch. I recently changed the
order, and I changed the arduino-test.pd patch to match. I didn't
write the arduino-help.pd so I guess I overlooked that change.
But yes, the firmware and the arduino-test.pd patch should be the
proper order. I changed the order because I wanted to have the bits
in the same order as it would be represented when writing out a
digital number: MSB leftmost and LSB rightmost. Plus I think it made
some implementations a bit easier. Feel free to update the help
patch, I don't think I'll get around to it for a few days.
Also, I think the basic protocol is stable now, and can remain
backwards compatible even after adding new features. But I would
like to hear any ideas, comments, feedback on the protocol. I want
to get it ironed out so that we can then start implementing objects
in many languages, like Processing, Max, Java, Ruby, Python, etc.
without worrying about breaking all of them when adding to the firmware.
.hc
On Oct 12, 2006, at 2:33 PM, martin.peach@sympatico.ca
martin.peach@sympatico.ca wrote:
I'm trying to implement the pduino using a PIC16F767. So far I have the analog ins and digital ins working well. In testing I find that the arduino-help patch sends digital outs as
229, low7, high7, that is, the digital out token followed by the
bit pattern for the low 7 bits and then the bit pattern for the
high 7 bits. On the other hand, the Pd_firmware.pde code expects
the high byte first:if(firstInputByte) { // output data for pins 7-13 for(i=7; i<TOTAL_DIGITAL_PINS; ++i) { mask = 1 << i; if( (digitalPinStatus & mask) && !(pwmStatus & mask) ) { // inputData is a byte and mask is an int, so align the
high part of mask digitalWrite(i, inputData & (mask >> 7)); } } firstInputByte = false; } else { // for(i=0; i<7; ++i) { mask = 1 << i; if( (digitalPinStatus & mask) && !(pwmStatus & mask) ) { digitalWrite(i, inputData & mask); } } }
...so which is correct?
Also the digitalWrite(i, inputData & mask) should probably be
digitalWrite(i, (inputData && mask)?HIGH:LOW).Martin
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/ listinfo/pd-list
Looking at things from a more basic level, you can come up with a
more direct solution... It may sound small in theory, but it in
practice, it can change entire economies. - Amy Smith