Shop OBEX P1 Docs P2 Docs Learn Events
serial input — Parallax Forums

serial input

shmowshmow Posts: 109
edited 2008-06-11 04:18 in Propeller 1
Hello all,

I can send·data using the 912Mhz transceiver.

the basic layout is:

·propeller --> wireless tx --> wireless rx --> bs2

I tried using a prop at the receiving end but I'm a bit over my head on this.

You can see the spin program (for wireless tx) is simple:

·· every 4 seconds the chip sends out 8 bits of data serially

CON
  _clkmode = xtal1 + pll16x
  _xinfreq = 5_000_000
  
  BaudRate = 9600  
  TxPin = 4
      
VAR
  byte Serial_Value
         
OBJ
    BS2 : "BS2_Functions"    ' Create BS2 Object
        
PUB Wireless_Output
  dira[noparse][[/noparse]16]~~
  Serial_Value := 255
    repeat
       outa[noparse][[/noparse]16]~~
       waitcnt(clkfreq*3+cnt)
       BS2.serout_dec(TxPin,Serial_Value,BaudRate,1,8) 
       outa[noparse][[/noparse]16]~
       waitcnt(clkfreq+cnt)

On the other hand,·the spin program (for wireless rx) is pretty bad:


CON
  _clkmode        = xtal1 + pll16x
  _xinfreq        = 5_000_000
  TxPin = 1
  RxPin = 0
  
VAR
  byte DataIn[noparse][[/noparse]10]
  byte SerDataIn[noparse][[/noparse]10]
  byte valone
  long stack[noparse][[/noparse]1000]  
OBJ
   SER  : "FullDuplexSerial"
   SIO  : "FullDuplexSerial_2"
                                                                 
PUB Wireless_Input
  SER.Start(0,20,0,9600)
  cognew(7, Hyper_Terminalt, @stack[noparse][[/noparse]100])
  repeat
    SerDataIn[noparse][[/noparse]0] := IN_SIO.rx
    SerDataIn[noparse][[/noparse]1] := IN_SIO.rx
    SerDataIn[noparse][[/noparse]2] := IN_SIO.rx
    SerDataIn[noparse][[/noparse]3] := IN_SIO.rx
    SerDataIn[noparse][[/noparse]4] := IN_SIO.rx
    SerDataIn[noparse][[/noparse]5] := IN_SIO.rx
    SerDataIn[noparse][[/noparse]6] := IN_SIO.rx
    SerDataIn[noparse][[/noparse]7] := IN_SIO.rx
    valone := (10*serdatain[noparse][[/noparse]0])+(serdatain[noparse][[/noparse]1])
PUB Hyper_Terminal

SIO.start(31, 30, 0, 57600)
  repeat
    outa[noparse][[/noparse]16]~~
    waitcnt(clkfreq*3+cnt)
    dataIn[noparse][[/noparse]0] := SerDataIn[noparse][[/noparse]0]
    dataIn[noparse][[/noparse]1] := SerDataIn[noparse][[/noparse]1]
    dataIn[noparse][[/noparse]2] := SerDataIn[noparse][[/noparse]2]
    dataIn[noparse][[/noparse]3] := SerDataIn[noparse][[/noparse]3]
    dataIn[noparse][[/noparse]4] := SerDataIn[noparse][[/noparse]4]
    dataIn[noparse][[/noparse]5] := SerDataIn[noparse][[/noparse]5]
    dataIn[noparse][[/noparse]6] := SerDataIn[noparse][[/noparse]6]
    dataIn[noparse][[/noparse]7] := SerDataIn[noparse][[/noparse]7]                                 
    ser.tx(10)                          'line feed
    ser.tx(13)                          'carriage return
    ser.str(string(" Results =   "))    'display decimal value of temp
    ser.dec(datain[noparse][[/noparse]0])
    ser.dec(datain[noparse][[/noparse]1])
    ser.dec(datain[noparse][[/noparse]2])
    ser.dec(datain[noparse][[/noparse]3])
    ser.dec(datain[noparse][[/noparse]4])
    ser.dec(datain[noparse][[/noparse]5])
    ser.dec(datain[noparse][[/noparse]6])
    ser.dec(datain[noparse][[/noparse]7])                            
    ser.tx(13)                          'carriage return
    ser.tx(10)                          'line feed                  
    ser.str(string(" Binary value is   "))     
    ser.dec(datain[noparse][[/noparse]0])
    ser.dec(datain[noparse][[/noparse]1])
    ser.dec(datain[noparse][[/noparse]2])
    ser.dec(datain[noparse][[/noparse]3])
    ser.dec(datain[noparse][[/noparse]4])
    ser.dec(datain[noparse][[/noparse]5])
    ser.dec(datain[noparse][[/noparse]6])
    ser.dec(datain[noparse][[/noparse]7]) 
    ser.tx(13)                          'carriage return
    ser.tx(10)                          'line feed
    outa[noparse][[/noparse]16]~
    waitcnt(clkfreq+cnt)


When the data is recieved, each bit is saved in a part of an array.
Then every 4 seconds·this array displays the value.
I even tried to string together the separate parts - see valone.

Does anyone have any suggestions to do this better?

Thanks,
Shmow
Sign In or Register to comment.