Twisted_transistor
Member level 1
- Joined
- Sep 13, 2012
- Messages
- 32
- Helped
- 2
- Reputation
- 4
- Reaction score
- 1
- Trophy points
- 1,288
- Activity points
- 1,478
Hi.. I've written the following code for sending an SMS via the GSM module..
The code runs fine i.e. the entire code executes when the GSM is not connected to the LPC2148 board. This I can tell because I've inserted statements in the code to light LEDs so that I know till where the code has executed.
But, however, when I connect the GSM module to the board, code execution stops at the point indicated in the following code. It does not proceed further.
I've tried and tried but really cannot figure out why this is happening. Someone pls shed some light on this mystery. This is an important part of my college project.
The code runs fine i.e. the entire code executes when the GSM is not connected to the LPC2148 board. This I can tell because I've inserted statements in the code to light LEDs so that I know till where the code has executed.
But, however, when I connect the GSM module to the board, code execution stops at the point indicated in the following code. It does not proceed further.
I've tried and tried but really cannot figure out why this is happening. Someone pls shed some light on this mystery. This is an important part of my college project.
Code:
#include "LPC214x.h"
void init(void);
extern unsigned char at[]="AT";
extern unsigned char cmgf[]="AT+CMGF=1"; //Text format in GSM modem
extern unsigned char cmgs[]="AT+CMGS=\"+91##########\""; //Mobile number to which the msg is sent
extern unsigned char msg[]="dips";
void senduart1(unsigned char a) //sends a byte through U1
{
U1THR=a;
while(U1LSR!=0x60);
}
void sendstring(unsigned char *p) //Sends a string of data through UART1
{
while(1)
{
if(*p=='\0') break;
senduart1(*p++);
}
}
void delaygsm() //delay function
{
int i,c=0;
for(i=0;i<4000000;i++)
{
c++;
}
}
int main()
{
PINSEL0=0x00050005; //initialized U0 and U1 as UART and not GPIO
PINSEL1 = 0x00000000;
PINSEL2 = 0x00000000;
IO1DIR = 0xFFFFFFFF;
IO1SET = 0x000F0000;
delaygsm();
delaygsm();
delaygsm();
delaygsm();
IO1CLR = 0x000F0000;
init();
sendstring(at);
senduart1(0x0D); // equivalent of
senduart1(0x0A); // enter key
delaygsm();
delaygsm();
delaygsm();
delaygsm();
IO1SET = 0x00010000; //Code execution stops here wen GSM is connected- does not proceed further
sendstring(cmgf);
senduart1(0x0D);
senduart1(0x0A);
delaygsm();
delaygsm();
delaygsm();
delaygsm();
IO1SET = 0x00040000;
sendstring(cmgs);
senduart1(0x0D);
senduart1(0x0A);
delaygsm();
delaygsm();
delaygsm();
delaygsm();
IO1CLR = 0x000F0000;
sendstring(msg);
senduart1(0x1A);
delaygsm();
delaygsm();
delaygsm();
delaygsm();
IO1SET = 0x00080000;
senduart1(0x1A);
IO1CLR= 0x000F0000;
}
void init()
{
U1LCR=0x83; //8-N-1, enable divisors
U1DLL=0x62; //9600 baud (9615)
U1DLM=0x00;
U1LCR=0x03; //8-N-1, disable divisors
U1FCR=0x07;
}