|
|
View previous topic :: View next topic |
Author |
Message |
hakam_saffour
Joined: 14 May 2008 Posts: 13 Location: Germany
|
Send message through RS485 |
Posted: Tue Jun 10, 2008 3:59 am |
|
|
Hi,
I am trying to send data stream through UART, specifically through RS485. I wrote the following simple code, just to check how I can send data through RS485 is working:
Code: | #if defined(__PCH__)
#include <18F8520.h>
#fuses Hs,NOWDT,NOPROTECT,NOLVP
#use delay(clock=10000000)
#include <rs485.c>
#include <stdlib.h>
void main() {
char data[10]="123456789";
int *pointer;
pointer=&data[0];
rs485_init(); //Initialize RS485 Communication
while(1)
{
rs485_wait_for_bus(FALSE);
rs485_send_message( 1, 9, pointer );
delay_ms(100);
}
} |
In the rs485.c file I just modified the pins numbers:
Code: | #if (RS485_USE_EXT_INT==FALSE)
#define RS485_RX_PIN PIN_C7
#define RS485_TX_PIN PIN_C6
#define RS485_ENABLE_PIN PIN_C0 //controls DE pin. low for RX, high for TX . //For our Kit//
#define RS485_RX_ENABLE PIN_C1 //controls RE pin. should keep low.
#use rs232(baud=9600, xmit=RS485_TX_PIN, rcv=RS485_RX_PIN, enable=RS485_ENABLE_PIN, bits=8, long_data, errors, stream=RS485)
#use rs232(baud=9600, xmit=RS485_TX_PIN, rcv=RS485_RX_PIN, enable=RS485_ENABLE_PIN, bits=8, long_data, force_sw, multi_master, errors, stream=RS485_CD) |
I connected the four pins from PORTC to a RS485 Tranceiver (circuit shown in the below link):
http://www.mikroe.com/pdf/rs485_board_schematic.pdf
I checked the output signal of the tranceiver (pin A & B) on an oscilloscope, and what I got is a clock signal (sinewave) of 4KHz frequency only.
I am not an experienced person, I would appreciate any comment or advise.
Thank you _________________ Hakam B Saffour |
|
|
arunb
Joined: 08 Sep 2003 Posts: 492 Location: India
|
RE: |
Posted: Tue Jun 10, 2008 11:01 am |
|
|
Hi,
RS 485 defines only the electrical standard, you have to implement a protocol that sends RS 485 frames/packets and receives them.
You could start by sending some data like 'A' , 'C' etc. To check the transmission there must be a RS 485 converter connected to the serial port of the computer. You could then use hyperterminal (or some other better program) to receive the data (the receiver must be enabled for this, this is usually done by the RTS pin of the serial port).
thanks
arunb |
|
|
hakam_saffour
Joined: 14 May 2008 Posts: 13 Location: Germany
|
|
Posted: Wed Jun 11, 2008 1:42 am |
|
|
Dear Arunb:
Thank you for your reply, actually I want to connect PIC to other controller (system) using RS485, but first I want to make sure that every thing is ok from the PIC side.
Is it ok if I checked the output signal on an oscilloscope?
Is there any thing wrong in my code?
Why am I getting the 4KHz clock signal?
If there is any mistake in my C code, please let me know!
Thank you _________________ Hakam B Saffour |
|
|
arunb
Joined: 08 Sep 2003 Posts: 492 Location: India
|
RE: |
Posted: Wed Jun 11, 2008 11:07 am |
|
|
I am not sure if 4Khz is normal. There is nothing wrong with using an oscilloscope. You could use the scope to see what character is actually being sent by examining the pulses.
An easier way would be to use the converter and the PC. But with this method you can only determine if characters are being received.
Hope this helps..
arunb |
|
|
Guest_7068 Guest
|
|
Posted: Sun Jun 15, 2008 3:10 pm |
|
|
At 9600 baud, you should see 1 byte transmitted in about 1ms. I am not sure what this 4Khz means.
Make sure the baud rate at the RX matches the one are the TX.
Make sure the other parameters like number of bit, parity etc match.
The transceiver should be taking care of the voltage requirements, so hopefully you should not need to probe too much with a scope.
Also make sure you are transmitting the packet correctly, if there is some checksum involved etc. |
|
|
Ttelmah Guest
|
|
Posted: Mon Jun 16, 2008 2:19 am |
|
|
Each bit at 9600bps, will happen in 1/9600th second. The highest 'frequency' that can occur in the output stream, is when you have alternate 1's and 0's, and will be at 4800Hz. Close to the 4KHz being mentioned.
I'd suspect this is what is being seen.
Best Wishes |
|
|
hakam_saffour
Joined: 14 May 2008 Posts: 13 Location: Germany
|
|
Posted: Mon Jun 16, 2008 6:05 am |
|
|
Ttelmah, Guest_7068, and arunb thanks for your advise.
Appreciate your support
Best Regards' _________________ Hakam B Saffour |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|