Strangeness in using the PropBackpack from our friend
Buck Rogers
Posts: 2,185
in BASIC Stamp
Hello!
Okay so sometime ago, I included our favorite demo program which is of course connecting a
Texas Instruments TI-83Plus calculator to a Stamp2 unit, into a program which attempted to deliver data from one of my gadgets to a screen. Here it is:
' ========================================================================= ' ' File...... screentest8.bs2 ' Purpose... screener ' Author.... GCL -- Jedi Knight Computers ' E-mail.... gregg@levine.name ' Started... 10 Mar 2014 ' Updated... 11 Mar 2014 ' ' {$STAMP BS2} ' {$PBASIC 2.5} ' ' ========================================================================= ' -----[ Program Description ]--------------------------------------------- ' This program outputs video to an NTSC color monitor via a Propeller ' Backpack module and demonstrates the various features of the video driver. ' -----[ I/O Definitions ]------------------------------------------------- io PIN 12 ' Serial I/O pin for Propeller Backpack. ' -----[ Constants ]------------------------------------------------------- ' Baudrate definitions. Serial I/O must be open-drain. The Propeller Backpack ' includes a pullup internally. #SELECT $STAMP #CASE BS2, BS2E, BS2PE baud CON 84 + 32768 #CASE BS2SX, BS2P baud CON 240 + 32768 #CASE BS2PX baud CON 396 + 32768 #ENDSELECT ' The following is a table of "command" constants for the Propeller Backpack ' that can be copied to other programs. The ones that are commented are already ' defined by the BASIC Stamp Editor and perform the same functions as they ' would in a DEBUG screen. 'CLS CON $00 'clear screen 'HOME CON $01 'home 'CRSRXY CON $02 'set X, Y position (X, Y follow) 'CRSRLF CON $03 'cursor left 'CRSRRT CON $04 'cursor right 'CRSRUP CON $05 'cursor up 'CRSRDN CON $06 'cursor dn USECLR CON $07 'use color C (C follows) BS CON $08 'backspace 'TAB CON $09 'tab (8 spaces per) 'LF CON $0A 'linefeed 'CLREOL CON $0B 'clear to end of line 'CLRDN CON $0C 'clear down (to end of window) 'CR CON $0D 'return 'CRSRX CON $0E 'set X position (X follows) 'CRSRY CON $0F 'set Y position (Y follows) DEFWIN CON $10 'define window W (W, Left, Top, nCols, nRows follow) USEWIN CON $11 'use window W (W follows) DEFCLR CON $12 'define color C (C, FG, BG follow) SCRLLF CON $13 'scroll window left SCRLRT CON $14 'scroll window right SCRLUP CON $15 'scroll window up SCRLDN CON $16 'scroll window down CHGCLR CON $17 'change all colors in window to C (C follows) SCRSIZ CON $1D 'set screen size (Rows, Columns follow) CLRW CON $1E 'same as CLR, but can be used in strings. ESC CON $1F 'escape next character C (i.e. print as-is) (C follows) ZERO CON $FF 'can be used for 0, which is not allowed in strings, for command arguments '-------[ Variables ]---------------------------------------------------------- i VAR Word char VAR Byte serdata VAR Byte W VAR Word '-------[ Program starts here. ]----------------------------------------------- LOW io 'Reset the Propeller Backpack PAUSE 500 INPUT io PAUSE 2000 'Wait for it to come out of reset. 'SEROUT io, baud, [DEFWIN, 1, 20, 2, 9, 18, USEWIN, 1, CHGCLR, 12] 'SEROUT io, baud, [DEFCLR, 12, $AD, $0C] 'SEROUT io, baud, [DEFWIN, 1, 20, 2, 7, 9, USEWIN, 2, CHGCLR, 13] 'SEROUT io, baud, [DEFCLR, 12, $AD, $0C] 'SEROUT io, baud, [DEFWIN, 1, 20, 2, 9, 18, USEWIN, 2, CHGCLR, 13] 'SEROUT io, baud, [DEFCLR, 12, $AD, $0C] 'FOR U = 65 TO 127 'FOR W = 1000 TO 1050 'FOR W = 65 TO 127 'FOR W = 65 TO 91 'FOR W= 65 TO 99 'FOR W = 65 TO 255 FOR W = 1 TO 500 SERIN 15,396,[serdata] '***this will send it to the pc debug screen 'DEBUG DEC serdata, CR SEROUT 12,baud, [DEC serdata, CR] '***this will send the same data plus 1 back to the calculator serdata=serdata + 1 SEROUT 15,396,[serdata] DEBUG DEC serdata, CR SEROUT 12,baud,[serdata, CR] 'SEROUT io, baud, ["___>", DEC U1, CR] PAUSE 2000 'SEROUT io, baud, [" ", ASC ?W,CR] 'PAUSE 350 'SEROUT io, baud, [" ", DEC W,CR] 'PAUSE 700 NEXT 'NEXT
Oddly enough I find that I first visited the issue above back in 2021, in April in fact. I now know why it didn't work. The device sending data expects it at around 2400 baud, which contained in the 396 number shown there. But the backpack wants 9600 baud which the whole setup travels on. Swapping the variable for the number caused it to work. I still don't know why I didn't get that bit of trivia then.