Dave
Thanks a million for the feedback
Will try it right away and feedback asap :-)
Kind regards
Dennis
Dave
Thanks a million for the feedback
Will try it right away and feedback asap :-)
Kind regards
Dennis
Hi Dave
Good news and a big thank you !!
It's working...
I am transmitting from 16F887 to 18F4520 and then from 18F4520 to and LCD and to PC serial port.
One tiny issue I have is with the serin command.
It displays a string fine but the variable is always a wingdings character unless I use a lookup ...(see my code below for serout on receiver)
So I have three questions now ....
1. Is there any way to set the serin command to send the variable (net) in the code example so that it appears as the number 3 ?
2.Could you possibly show me a code snippet to accomplish the same thing using debug and also hser please
3. Bearing in mind I want to eventually to accomplish all of this using RF modules, and may decide to use hserin/out ,and all I want to do is relaible transmit 3 or possible 4 bytes, would I have to use an external oscillator or would the internal suffice ?
Kind regards
Dennis
Try
DEC net
OSCs..... Some will not agree but many times times the internal is not stable enough at higher baud rates to be reliable.
Dave
Always wear safety glasses while programming.
To set DEBUG up
SendCode:DEFINE DEBUG_MODE 0 ' Debug sending TRUE serial data DEFINE DEBUG_REG PORTC ' Debug Port = PortC DEFINE DEBUG_BIT 4 ' Debug.bit = PortC.4 DEFINE DEBUG_BAUD 2400 ' Default baud rate = 2400
ReceiveCode:DEBUG 9,3
The same syntax works for HSERIN/OUTCode:DEBUGIN [WAIT("9"),DEC net]
Dave
Always wear safety glasses while programming.
Hi Dave :-)
How are you ?
Tried the code exactly as you suggested ...
On the receiver end it seems like debug is just WAITing forever to receive the number 9 match but it never seems to get it, so that's where the program stops.
I thought it might be the order of the numbers so I changed their order but that didn't fix the problem.
Is it possible that the problem could be on the receiver PIC as I still have a serout line to send the data to the PC serial port to view in hyperterminal.
Is it ok to run debug and serin in the same PIC ( wondering if this is a silly question) or should I use debug to transmit to hyperterminal as well ?
Could the problem be that I have the DEFINE statements in the wrong place ? I noticed an extra space character in the code snippet you posted between mode and 0 .. removed that and recompiled but still no joy :-(
Any suggestions ?
Here's the code :
Receiver
TransmitterCode:'debug defines begin here - necessary for degug operation DEFINE DEBUG_MODE 0 ' Debug sending TRUE serial data DEFINE DEBUG_REG PORTC ' Debug Port = PortC DEFINE DEBUG_BIT 4 ' Debug.bit = PortC.4 DEFINE DEBUG_BAUD 2400 ' Default baud rate = 2400 'debug defines end here 'Main code begins here Pause 2000 ' Wait for LCD to startup test: lcdout $fe,1 lcdout "starting tx rx" '******************************************* '*SERIN PORTC.4,T2400,[9],net 'prepare to receive the data from other PIC '*this lines works perfectly to send data '******************************************* ' '****heres the same thing using debugin (RX)- check/adjust defines for settings DEBUGIN [WAIT("9"),DEC net] '****end of debug line lcdout "rx complete" pause 1000 lcdout $fe,1 'clear lcd screen IF net = 3 then lcdout $fe,1 LCDOUT "data is ",dec net 'look for the number 3 pause 2000 endif lcdout $fe,1 lcdout "begin serout to hyperterminal" pause 1000 LOOKUP net,[0,"123A456B789C*0#D"],net 'use lookup table to diplay proper display in hyperterminal ' send net variable to hyperterminal using serout serout PORTC.3,T2400,["the key pressed or received value is ",net,10,13] lcdout $fe,1 goto test end
Code:'debug defines begin here DEFINE DEBUG_MODE 0 ' Debug sending TRUE serial data DEFINE DEBUG_REG PORTC ' Debug Port = PortC DEFINE DEBUG_BIT 4 ' Debug.bit = PortC.4 DEFINE DEBUG_BAUD 2400 ' Default baud rate = 2400 'end of debug defines LED var PORTd.0 ' Alias PORTD.0 to LED loopy: high LED ' LED on Pause 1000 ' Delay for .5 seconds low led 'LED off Pause 1000 ' Delay for .5 seconds '*this serout lines works perfectly :-) 'SEROUT PORTC.4,T2400,[9,3] '**another example - SerOut PORTC.6,T2400,["are you receiving this tx from 16f887 ",datatx] 'DEBUG line starts here DEBUG 3,9 'end of debug line pause 1000 Goto loopy ' Go back to loop and blink LED forever End 'End of all code
Hi again Dave
Thanks for your help so far , I really am learning a lot :-)
To double check that nothing on the circuit had changed I loaed the code for the serin and serout examples from earlier and all still works , which tells me the problem has something to do with the debug code.
Reading through the help and forums and manual I noticed that DEBUGIN requires it's own set of defines .
I'm still checking to see if the baud rate must be defines eg. debugin_baud ..which I tried anyway and the compiler didn't complain.
So I tried it the code again with the updated degug statements but still no joy :-(
Here's the updated receiver code:
Receiver
Kind regardsCode:'debugin defines DEFINE DEBUGIN_REG PORTC ' Set Debugin port DEFINE DEBUGIN_BIT 4 ' Set Debugin pin bit DEFINE DEBUGIN_MODE 0 ' Set Debugin mode: 0 = true, 1 = inverted Define DEBUGIN_BAUD 2400 'set Debugin baud rate 'Debugin defines end here 'debugin commands end here 'debug defines begin here - necessary for degug operation ' DEFINE DEBUG_MODE 0 ' Debug sending TRUE serial data ' DEFINE DEBUG_REG PORTC ' Debug Port = PortC ' DEFINE DEBUG_BIT 4 ' Debug.bit = PortC.4 ' DEFINE DEBUG_BAUD 2400 ' Default baud rate = 2400 'debug defines end here 'Main code begins here Pause 2000 ' Wait for LCD to startup test: lcdout $fe,1 lcdout "starting tx rx" '******************************************* '*SERIN PORTC.4,T2400,[9],net 'prepare to receive the data from other PIC '*this lines works perfectly to send data '******************************************* ' '****heres the same thing using debugin (RX)- check/adjust defines for settings DEBUGIN [WAIT("9"),DEC net] '****end of debug line lcdout "rx complete" pause 1000 lcdout $fe,1 'clear lcd screen IF net = 3 then lcdout $fe,1 LCDOUT "data is ",dec net 'look for the number 3 pause 2000 endif lcdout $fe,1 lcdout "begin serout to hyperterminal" pause 1000 LOOKUP net,[0,"123A456B789C*0#D"],net 'use lookup table to diplay proper display in hyperterminal serout PORTC.3,T2400,["the key pressed or received value is ",net,10,13] lcdout $fe,1 lcdout datatx pause 1000 goto test end
Dennis
Try
DEBUG "9",DEC 3
Dave
Always wear safety glasses while programming.
Bookmarks