PDA

View Full Version : Output/Input numbers



limlik
11-13-2009, 10:59 AM
Is there a way to output numbers on the BS2? Or is serial the only way?

Mike Green
11-13-2009, 11:06 AM
What do you want to output numbers to? Most I/O devices that a BS2 would use communicate via serial (SERIN / SEROUT). Some communicate via SPI which is also a serial protocol, but usually sends binary information back and forth rather than displayable characters.

The SEROUT (and its equivalent DEBUG) statement is the only one on the BS2 that has built-in provisions for converting binary values to the equivalent decimal character numbers. Other Stamp models (BS2p/pe/px) have other I/O statements that also have built-in conversion operators (called formatters) for use with parallel LCDs, 1-Wire, and I2C devices.

RiJoRi
11-13-2009, 11:08 AM
You could output them in parallel, using the pins. The format (nibble, byte, word, some weird other combination, binary, hex, BCD) is up to you.

--Rich

"More input!" -- Johnny 5 in "Short Circuit"

James Long
11-13-2009, 11:08 AM
Ha,

Mike beat me to it......

I wasn't going to be so thorough, but I think he covered it.

James L

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
James L
Partner/Designer
Lil Brother SMT Assembly Services (http://www.lil-brother.com)

Are you addicted to technology or Micro-controllers..... then checkout the forums at Savage Circuits (http://www.savagecircuits.com). Learn to build your own Gizmos!

limlik
11-13-2009, 11:26 AM
Ok next question, SEROUT and SERIN example program, my DEBUGIN just has what looks to be odd Russian letters.

Example one:

' SERIN_SEROUT1.BS2
' Using two BS2-IC's, connect the circuit shown in the SERIN command
' description and run this program on the BASIC Stamp designated as the
' Sender. This program demonstrates the use of Flow Control (FPin).
' Without flow control, the sender would transmit the whole word "Hello!"
' in about 1.5 ms. The receiver would catch the first byte at most; by the
' time it got back from the first 1-second PAUSE, the rest of the data
' would be long gone. With flow control, communication is flawless since
' the sender waits for the receiver to catch up.


' {$STAMP BS2}
' {$PBASIC 2.5}


SO PIN 1 ' serial output
FC PIN 0 ' flow control pin


#SELECT $STAMP
#CASE BS2, BS2E, BS2PE
T1200 CON 813
T2400 CON 396
T9600 CON 84
T19K2 CON 32
T38K4 CON 6
#CASE BS2SX, BS2P
T1200 CON 2063
T2400 CON 1021
T9600 CON 240
T19K2 CON 110
T38K4 CON 45
#CASE BS2PX
T1200 CON 3313
T2400 CON 1646
T9600 CON 396
T19K2 CON 188
T38K4 CON 84
#ENDSELECT


Inverted CON $4000
Open CON $8000
Baud CON T38K4 + Inverted



Main:
DO
SEROUT SO\FC, Baud, ["Hello!", CR] ' send the greeting
PAUSE 2500 ' wait 2.5 seconds
LOOP ' repeat forever
END



Example 2:


' SERIN_SEROUT2.BS2
' {$PORT COM3}
' Using two BS2-IC's, connect the circuit shown in the SERIN command
' description and run this program on the BASIC Stamp designated as the
' Receiver. This program demonstrates the use of Flow Control (FPin).
' Without flow control, the sender would transmit the whole word "Hello!"
' in about 1.5 ms. The receiver would catch the first byte at most; by the
' time it got back from the first 1-second PAUSE, the rest of the data
' would be long gone. With flow control, communication is flawless since
' the sender waits for the receiver to catch up.
' {$STAMP BS2}
' {$PBASIC 2.5}
SI PIN 0 ' serial input
FC PIN 1 ' flow control pin
#SELECT $STAMP
#CASE BS2, BS2E, BS2PE
T1200 CON 813
T2400 CON 396
T9600 CON 84
T19K2 CON 32
T38K4 CON 6
#CASE BS2SX, BS2P
T1200 CON 2063
T2400 CON 1021
T9600 CON 240
T19K2 CON 110
T38K4 CON 45
#CASE BS2PX
T1200 CON 3313
T2400 CON 1646
T9600 CON 396
T19K2 CON 188
T38K4 CON 84
#ENDSELECT
Inverted CON $4000
Open CON $8000
Baud CON T38K4 + Inverted
letter VAR Byte

Main:
DO
SERIN SI/FC, Baud, [letter] ' recieve one byte
DEBUG letter ' display on screen
PAUSE 1000 ' wait one second
LOOP ' repeat forever
END




Post Edited (limlik) : 11/13/2009 3:32:24 AM GMT

Mike Green
11-13-2009, 11:32 AM
First you need to furnish information on what you've got your Stamp connected to and how you've got it configured. When you get garbage, there's something wrong with your signal. Maybe it's the wrong voltage. Maybe it's the wrong speed. Who knows? DEBUGIN works receiving at 9600 Baud through the same I/O port used for programming. It's basically a special case of the SERIN statement with a fixed communications speed and a fixed I/O port.

Franklin
11-13-2009, 11:34 AM
I don't think the debug terminal can handle your baud rate.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Stephen

limlik
11-13-2009, 11:42 AM
I meant DEBUG not DEBUG in. This is the code provided with the BASIC stamp editor. It wants you to connect pin 1 to pin 1 and pin 0 to pin 0

Mike Green
11-13-2009, 11:54 AM
The Stamps generally will not work at 38.4KB. The fastest a BS2 will reliably operate at is 9600 Baud. Some of the faster Stamps will operate at 19.2KB. The BS2px can transmit at 38.4KB, but may not be able to receive reliably at that speed.

limlik
11-13-2009, 12:39 PM
Off board topic but was wondering if you knew the answer. If I program a Pic then I load the pic back in and copy the program off of it shouldnt it match up?

Mike Green
11-13-2009, 09:53 PM
Theoretically, if you read back in the contents of any microprocessor flash memory, it should be identical to what was written during programming. Potential reasons for differences:

1) The program was written with protection against reading and simply can't be read at all.

2) The program includes some locations that are "special", used for configuration, and only some bits exist. If you write some invalid values to those locations, they'll read back as something else.