I'm new to serial comms and never tried a radio link before and am having troubles. I have an "easy radio" ER400TS and ER400RS chips, and am trying to link two PIC16F678 together with them. Have tried most things but gotten stuck - it does say in the datasheet for the easy radio chips that it defaults to 19200bps and gives the instruction to set data rate to 2400 as ER_CMD#U1
Many thanks to anyone who can give me some clue as to what I'm doing
Here's my receiver code:
@ DEVICE PIC16F676, INTRC_OSC_NOCLKOUT, MCLR_OFF, PROTECT_OFF, BOD_ON, CPD_OFF
'Define OSCCAL_1K 1
DEFINE OSC 4
TRISA = %001000
TRISC = %000000
ANSEL = 0 'disable analog
T1CON = %00000100
VRCON = 0 ' A/D Voltage reference disabled
CMCON = 7 'Disable comparitor
timesw var PortA.5
gosw var PortA.3
stopsw var PortA.4
timeset var byte
display var byte
time var word
b0 var byte
b1 var bit
clear
timeset = 1
PortA = 0
PortC = 0
serout PORTA.4,0,["ER_CMD#U1"] 'change receiver to 2400bps
Begin:
display = (1 << b0) - 1
PORTC = display
pause 100
if b0 < 7 then
b0 = b0 + 1
goto begin
Else
Pause 1000
b0 = 0
portC = b0
Endif
Start:
serin PORTA.0,0,["A"],timeset,b1 'Read receiver
disply:
display = (1 << timeset) - 1 'Set display to be bar type
PORTC = display 'output LEDs
goto Start
AND HERE'S MY TRANSMITTER CODE:
@ DEVICE PIC16F676, INTRC_OSC_NOCLKOUT, MCLR_OFF, PROTECT_OFF, BOD_ON, CPD_OFF
'DEFINE ADC_BITS 10
'DEFINE ADC_CLOCK 3
'DEFINE ADC_SAMPLEUS 50
'Define OSCCAL_1K 1
DEFINE OSC 4
TRISA = %111000
TRISC = %000000
'ADCON0 = %10000000
'ADCON1 = %000
ANSEL = 0 'disable analog
T1CON = %00000100
VRCON = 0 ' A/D Voltage reference disabled
CMCON = 7 'Disable comparitor
timesw var PortA.5
gosw var PortA.3
stopsw var PortA.4
timeset var byte
display var byte
time var word
b0 var byte
b1 var word
clear
timeset = 1
PortA = 0
PortC = 0
Begin:
display = (1 << b1) - 1
PORTC = display
pause 100
if b1 < 7 then
b1 = b1 + 1
goto Begin
Else
Pause 1000
b1 = 0
portC = b1
Endif
Start:
if timesw = 1 then settime 'jump to setime if triggered
if gosw = 1 then go
if stopsw = 1 then trnsstop
gosub disply
goto start
settime:
if timeset > 6 then timeset = 0 'if greater than max then reset
time = 0
pause 100
if timesw = 1 then settime 'wait till switch open
timeset = timeset + 1
goto start
disply:
display = (1 << timeset)' - 1
PORTC = display
return
go:
PORTC = 0
PORTC.5 = 1
pause 1000
for b0 = 0 to 5
toggle PORTC.5
SEROUT PortA.0,0,["A",timeset,1]
pause 100
next b0
goto start
trnsstop:
PORTC = 0
PORTC.0 = 1
Pause 1000
for b1 = 0 to 5
toggle PORTC.0
serout PortA.0,0,["A",timeset,0]
pause 50
next b1
goto start
Bookmarks