New cog to run serial comms
I am using the following code to communicate serially with the propeller.· It, of course, includes Extended_FD_Serial
Is it OK to include only the portions of FD_Serial and Extended_FD_Serial that are used in the application?
And finally, to the question I originally wanted to know...· I want the serial communication to occur in a new cog so that I can use a different cog to do something else .· How do I figure how much stack space to allot to the new cog?·
I know there was a portion of one of the manuals that addressed that, but I didn't really understand it, and this seems to be much more complicated than the examples.
I just arbitrarily set it at 40, which seems to work. If I were to just keep decreasing it to just above the point that the serial comms didn't work, would that be sufficient?
Is it OK to include only the portions of FD_Serial and Extended_FD_Serial that are used in the application?
And finally, to the question I originally wanted to know...· I want the serial communication to occur in a new cog so that I can use a different cog to do something else .· How do I figure how much stack space to allot to the new cog?·
I know there was a portion of one of the manuals that addressed that, but I didn't really understand it, and this seems to be much more complicated than the examples.
I just arbitrarily set it at 40, which seems to work. If I were to just keep decreasing it to just above the point that the serial comms didn't work, would that be sufficient?
OBJ
SER : "Extended_FDSerial"
VAR
'place to put recieved transmission
long MyVariable
' to run new cog
long Stack[noparse][[/noparse]40]
CON
' spin stamp
'_CLKMODE = XTAL1 + PLL4X ' clock speed too low = 1X=10Mhz
'_XINFREQ = 10_000_000
' non-spin stamp
_CLKMODE = XTAL1 + PLL8X ' clock speed too high = 80Mhz
_XINFREQ = 5_000_000
PUB Main
cognew (Serial, @Stack)
Pub Serial
'handle serial transmissions
dira[noparse][[/noparse]17..21]:=%111111
ser.start(31,30,0,38400)
ser.str(string("Communication with propeller", $0D))
ser.dec(MyVariable)
waitcnt(10_000 + cnt)
ser.tx(13)
ser.tx(10)
outa[noparse][[/noparse]15] := 0
repeat
MyVariable :=ser.rxDec
outa[noparse][[/noparse]17..21] :=MyVariable

Comments
The stack question was asked (and answered) a couple days ago, check page 2, thread titled "Stack (Spin & PASM)" started by ImmNek.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Paul Baker
Post Edited (Paul Baker) : 1/22/2009 10:00:32 PM GMT