|
|
View previous topic :: View next topic |
Author |
Message |
Delfy_Coltech
Joined: 25 Nov 2009 Posts: 27 Location: Vietnam
|
[Help] Receive respone AT message from module SIM548C |
Posted: Thu Nov 10, 2011 8:14 pm |
|
|
Hi everybody!
I am doing a small project that uses dsPIC and module SIM548C.
I want to interface my PIC with that module.
I use UART1 (baud=19200) port of PIC to do that. You know that, when an AT command is sent to SIM module. It will respond with a string.
I want to receive all string responses from module SIM. How do I do this?
This is my code
Code: |
#INT_RDA
void RDA_isr(void){
gsm_buf[i]=fgetc(GSM_STR);
i++;
if(i>MSG_LENGTH)
{
i = 0;
}
}
|
But when I use: Code: | printf(lcd_putc, "%s", gsm_buf); | There is only some strange characters on LCD. (I can receive a full correct string).
Thanks! _________________ -------------------------------------------------
Mechatronics Department, Coltech, VNUH
Hanoi, Vietnam.
------------------------------------------------- |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19504
|
|
Posted: Fri Nov 11, 2011 3:01 am |
|
|
Several different possible things.
First, a 'string' in C, requires a null terminator. Without this, when you print your buffer, you will get loads of garbage displayed, as the print walks through memory, printing things, until it accidentally hits a '0'.
Normally strings from something like a modem, will have a line feed at the end of the line!. So check for this in your code, and if it is seen, add the terminating '0' to the buffer, and prematurely reset 'i'.
Also, remember the buffer should be _longer_ than the longest string you expect, by at least the character for the terminator...
Second, are you sure the module you are using is talking at 19200bps. Some require an initialisation to be sent when they first wake up (typically three line feeds), to set the baud rate to use. Unless this is happening, you module may be talking at the wrong rate. I think the default for the module you describe, is 115200bps, not 19200bps....
Third are you sure of your wiring?. You do realise that the module you have 'talks' RS232, _not_ TTL levels like the PIC, so a MAX232 or similar buffer is required between the PIC and this unit.
Best Wishes |
|
|
Delfy_Coltech
Joined: 25 Nov 2009 Posts: 27 Location: Vietnam
|
Disscussion... |
Posted: Fri Nov 11, 2011 4:13 am |
|
|
Hi Mr. Ttelmah!
The third one, This modem can connect directly to microcontroller.
The second one, It also supports autobauding, so we don't need to setup baudrate for it. But I will try to setup a fix baudrate.
And the first one, I know that, I have written code to receive line feed and carriage return.
I think, 3 comments are very useful! I will review all
Thanks alot! _________________ -------------------------------------------------
Mechatronics Department, Coltech, VNUH
Hanoi, Vietnam.
------------------------------------------------- |
|
|
|
|
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
|