Shop OBEX P1 Docs P2 Docs Learn Events
Strangeness in using the PropBackpack from our friend — Parallax Forums

Strangeness in using the PropBackpack from our friend

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....
'   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.

    baud    CON  84 + 32768
    baud    CON  240 + 32768
    baud    CON  396 + 32768

' 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 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

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.

Sign In or Register to comment.