That would be the way to trouble shoot.
Just make sure they are running at the expected speed with a blinky and a stop watch or meter if you have one..
That would be the way to trouble shoot.
Just make sure they are running at the expected speed with a blinky and a stop watch or meter if you have one..
Dave
Always wear safety glasses while programming.
Hi again Dave
I think I am almost ready for the next step ....
RF and RF module TX RX
I have been reading posts all through the forums, even some of yours from years back ...
Now for the next step ... to try the same or a similar thing without the wires.
Should I start off with sering or plunge straight into HSER ?
The plan is to be able to send 3 bytes using the most reliable method.
So the question is where do I start and what do I start with ?
Kind regards
Dennis
I have it on good authority that the PLL speed is the one to use. Thanks Bruce!!!So do I choose 4MHz or 32 MHz ?
What radio modules are you using? I have only used the ones from rentron.com.
As for reliability, all of the serial methods (HSER,SER,SER2..) are good. Are you planning to use interrupts with the serial input or just wait and time out, check later sort of thing?
Dave
Always wear safety glasses while programming.
Hi Dave
:-)
So are you saying I should use 8MHz OSC and 4x PLL for the 18F4520 and use 32 MHz when I do the HSER DEFINE calculations then ?
And on the 16F887 use it's max INTOSC which is 8 MHZ for the HSER calculations ?
OR....
set both PIC's at 4 or 8 MHz and then calculate the HSER DEFINEs accordingly ?
Something like this maybe
A quick question here ...Code:‘For 8MHz @ 2400bps RCSTA = $90 ' Enable serial port & continuous receive TXSTA = $20 ' Enable transmit, BRGH = 0 SPBRG = 51 ' 2400 Baud @ 8MHz, 0.17% DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0 DEFINE HSER_SPBRG 51 ' 2400 Baud @ 8MHz, 0.17% DEFINE HSER_CLROERR 1 ' Clear overflow automatically ‘For 4 MHz @ 2400bps RCSTA = $90 ' Enable serial port & continuous receive TXSTA = $20 ' Enable transmit, BRGH = 0 SPBRG = 25 ' 2400 Baud @ 4MHz, 0.17% DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0 DEFINE HSER_SPBRG 25 ' 2400 Baud @ 4MHz, 0.17% DEFINE HSER_CLROERR 1 ' Clear overflow automatically
Which comes first ... DEFINE's or register settings ?
Chat soon
Dennis
Hi Dave
Have been reading the very interesting HSER info form all over.
Let's say that I have the PIC's connected as follows :
PIC 16F887 -- PIC 18F4520 -- PC(com port)
At PIC 16F887 the code is
On the 18F4520 (middleman RX and TX PIC in my setup)Code:'USART defines and register settings begin here - use for HSERIN/OUT RCSTA = $90 ' Enable serial port & continuous receive TXSTA = $20 ' Enable transmit, BRGH = 0 SPBRG = 51 ' 2400 Baud @ 8MHz, 0.17% DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0 DEFINE HSER_SPBRG 51 ' 2400 Baud @ 8MHz, 0.17% DEFINE HSER_CLROERR 1 ' Clear overflow automatically ' Check port settings PORTC.6 = TX and PORTC.7 = RX ' For PIC to PIC TX to RX C.6 to C.7 and visa versa ' Don't forget TRISC=%10000000 'USART defines and register settings end here main: 'tx loop begins high LED ' LED on Pause 1000 ' Delay for 1 seconds HSERout "9",DEC 3,$d,$a low LED ' LED off pause 1000 goto main
And on the PC hyperterminal or MCS serial tool is waiting to receive and/or send back to PICCode:'USART defines and register settings begin here - use for HSERIN/OUT RCSTA = $90 ' Enable serial port & continuous receive TXSTA = $20 ' Enable transmit, BRGH = 0 SPBRG = 51 ' 2400 Baud @ 8MHz, 0.17% DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0 DEFINE HSER_SPBRG 51 ' 2400 Baud @ 8MHz, 0.17% DEFINE HSER_CLROERR 1 ' Clear overflow automatically ' Check port settings PORTC.6 = TX and PORTC.7 = RX ' For PIC to PIC TX to RX C.6 to C.7 and visa versa ' Don't forget TRISC=%10000000 'USART defines and register settings end here main: 'tx and rx loop begins here high LED 'LED on Pause 1000 ' delay for 1 second 'HSER lines begine here HSERIN [WAIT("9"),DEC NET] '<< this is the format for the receiver or if you're looping LCDOUT $fe,1 LCDOUT "I received the number .." DEC NET HSERout "I received the number",DEC NET,$d,$a 'data to COM port on pc 'HSER lines end here goto main end
Have I got it right ?
Kind regards
Dennis
Dave ...........
IT works :-)
16F887 runnning @ 8 MHz internal clock
to 18F4520 running @ 32 MHz internal clock
to PC com port @ 2400bps 8N1
and the readout in plain text at MCS serial tool/hyperterminal is...
I received the number 93
I received the number 93
I received the number 93 etc
:-)
Not sure why it's not just displaying the number 3 which is what I was expecting ... a bug in the code for HSER lines perhaps ????
But besides that .....YAY !
And now for the next mission ....
RF TX/RX ....
Only 5 step process for now ( or more LOL depending on the TX/RX protocol,modules and more I guess --wish me luck !)
1. Wire up RF modules to PIC's
2. Remove existing TX/RX wires between PIC's ( keep avaiable for tests)
3. Wire the transmitter PIC's TX to RF TX module
4. Wire the receiver PIC's RX to RF RX module
5. Test for comms :-) << hold thumbs
Any tips would be highly appreciated and noted !
Kind regards
Dennis
Last edited by Dennis; - 29th November 2009 at 15:12.
HSERout "9",DEC 3,$d,$a
Should be
HSERout ["9",DEC 3,$d,$a]
Maybe that is why you are getting the "9"???
Using DEFINE the part in BOLD is not needed.Code:RCSTA = $90 ' Enable serial port & continuous receive TXSTA = $20 ' Enable transmit, BRGH = 0 SPBRG = 51 ' 2400 Baud @ 8MHz, 0.17% DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0 DEFINE HSER_SPBRG 51 ' 2400 Baud @ 8MHz, 0.17% DEFINE HSER_CLROERR 1 ' Clear overflow automatically
Other than that it looks OK to me...
For the radios... What modules are you using? Did you read the stuff from Dave Houston, http://davehouston.org/ ?
There is some disagreement on the forum about the preamble/synch protocol. I think Dave's method is the way to go.
Dave
Always wear safety glasses while programming.
Bookmarks