mozy:
Then when I put a DVM onto the receiver, I get between 2v and 4.96v readings, jumping around, so I KNOW it’s receiving SOMETHING (data or garbage, anything).
It is receiving garbage (noise) when the transmitter is not on (sometimes even between bits). I really recommend using a simple comparator where you can adjust the threshold (look at the part of the Cricket receiver between the receiver module and the input to the PIC). For what it is worth, here is my Proton+ code that exercises the transmitter and receiver. Variations of this code are being used everyday to send and receive data without any issues. Remember that I use a comparator so when the transmitter is not transmitting the serial input port is not seeing any data.
' Transmitter
Device 16F88
XTAL = 8
ALL_DIGITAL = TRUE
HSERIAL_BAUD = 9600
Symbol RTX = PORTA.6
Symbol BAUD_300_8N1 = 19697
Symbol BAUD_600_8N1 = 18030
Symbol BAUD_1200_8N1 = 17197
Symbol BAUD_2400_8N1 = 16780
Symbol BAUD_4800_8N1 = 16572
Symbol Preamble = $55
Symbol Sync = $AA
Dim I As Byte
Dim Address As Byte
DelayMS 500
Address = 5
Loop: HSerOut ["Transmitting data", 13, 10]
' Give the receiver a little time to "wake up" and adjust its AGC
SerOut RTX,BAUD_2400_8N1,[Preamble,Preamble,Preamble] ' Sync Transmitter and receiver
SerOut RTX,BAUD_2400_8N1,["RWI",Address,"The rain in Spain falls mainly on the plain... ABCDEFGHIJKLMNOPQRSTUVWXYZ", 13, 10]
DelayMS 10000
GoTo Loop
End
And the counterpart receiver code…
' Receiver test code
Device 16F876A
XTAL = 20
ALL_DIGITAL = TRUE
HSERIAL_BAUD = 9600
Symbol RRX = PORTC.0
Symbol BAUD_300_8N1 = 19697
Symbol BAUD_600_8N1 = 18030
Symbol BAUD_1200_8N1 = 17197
Symbol BAUD_2400_8N1 = 16780
Symbol BAUD_4800_8N1 = 16572
Symbol Preamble = $55
Symbol Sync = $AA
Dim I As Byte
Dim Address As Byte
Dim SERDATA[76] As Byte
Dim WaitString As Byte
Dim Timeout As Byte
DelayMS 500
HSerOut ["Ready to receive data...", 13, 10]
Loop: Clear SERDATA
SerIn RRX, BAUD_2400_8N1, 2000, Loop, [ Wait( "RWI" ), Address, Str SERDATA]
HSerOut [Dec Address, " ", Str SERDATA, 13, 10]
GoTo Loop
End
If you can get your receiver to generate output only in the presence of an actual signal, you’ll be well on the way to getting things working.