PDA

View Full Version : Conditional Compilation For Pulsout



NWUpgrades
10-23-2009, 11:30 AM
Is it possible to create a Conditional Compilation for the Pulsout function? This would surely simplify running the BS2 code for the BoeBot, etc on a BS2sx chip. Just a thoght...

Mike Green
10-23-2009, 12:04 PM
Sure. Along with the Baud constants, just add an adjustment factor. For the BS2 models, the unit is either 2us or 0.8us. To get the PULSOUT argument, you'd need to divide the time in us by either 2 or 8/10. Alternatively you could multiply by 2/4 (1/2) or 5/4 (10/8). In the various condition compilation choices, you'd define a constant "adjFactor" as either 2 (for 2us) or 5 (for 0.8us) and make each PULSOUT like "PULSOUT <pin>,(<time us>*adjFactor)>>2".

You could use the conditional compilation directives right around the PULSOUT statement(s), but you'd end up with a very very difficult to read, but otherwise correct and efficient version.

NWUpgrades
10-24-2009, 05:55 AM
Do you by chance have an example? Math has never been my strongest point.

Mike Green
10-24-2009, 06:44 AM
All the math is in that previous reply. If you're using pin 13, you'd declare some name like "myPin" with

myPin PIN 13

then you'd add either

adjFactor CON 2 ' PULSOUT unit is 2us

or

adjFactor CON 5 ' PULSOUT unit is 0.8us

to the various groups of conditional declarations.

If you want to produce a 1.5ms pulse, you'd put

PULSOUT myPin, (1500 * adjFactor) >> 2