Thursday, 30 June 2016

ARM 7 LPC2148 Training

void main()
{ lcdcmd(0x38);
   delayms(10);
   lcdcmd(0x0e);
   delayms(10);
   lcdcmd(0x01);
   delayms(10);
   lcdcmd(0x06);
   delayms(10);
   lcdcmd(0x85);
   delayms(10);

  while(1)
  {
  if (em==1)
  {
 
   /*lcddat('C');
  // delayms(10);
  // lcddat('A');
  // delayms(10);
  // lcddat('U');
  // delayms(10);
  // lcddat('T');
  // delayms(10);
  // lcddat(L);
  // delayms(10);
   lcddat('O');
   delayms(10);
   lcddat('N');
   delayms(10); */
 
 
  P0=0x00;
  g=1;
  y=0;
  r=0;
  lcdcmd(0x01);
  for (n=0;n<10;n++)
   {
   lcddat(emz[n]);
   delayms(10);
   }
  }
  else
  {
  int z;
  for(z=0;z<16;z++)
  {
  delayms(50);
   lcddat(tr[z]);
   }
  for(i=0;i<10;i++)
  {
  P0=Seg[i];
  g=1;
  y=0;
  r=0;
  delayms(100);
  }

  for(i=10;i<10;i++)
  {
  P0=Seg[i];
  g=0;
  y=1;
  r=0;
  delayms(100);
  }

  for(i=0;i<10;i++)
  {
  P0=Seg[i];
  g=0;
  y=0;
  r=1;
  delayms(100);
  }
  }

  void lcdcmd(char cmd)
 {
  data1=cmd;
  rs=0;
  rw=0;
  en=1;
  delayms(123);
  en=0;


  Advance Embedded 

 void lcddat(char dat)
 {
 data1=dat;
 rs=1;
 rw=0;
 en=1;
 delayms(10);
 en=0;
 }
  void delayms(int t)
  {
    int j,k;
for(j=0;j<200;j++)
for(k=0;k<t;k++);
}

ARM7 LPC 2148 UART Serial program

Let us see how to write program in ARM

/* ADC Prototypes */
void Adc0Init(unsigned char clkdiv);
unsigned int Adc0Read(unsigned char channel);

/* UART Prototypes */
void Uart0Init (void);
void Uart0PutCh (unsigned char ch);
void  Uart0PutS(unsigned char *str);
void  SendHexData0(unsigned char *str0, int StrLenCntr0);
void Uart1PutCh (unsigned char ch);
unsigned char Uart1GetCh (void);
void  Uart1PutS(unsigned char *str);
void  SendHexData1(unsigned char *str1, int StrLenCntr1);
void _DelayMs(unsigned int count);

/* Variables */
char  stcol, endcol, j ;
//int val1,val2;
int temp,humidity,IR;
char END[1] = {26};
char SendingText1[6] = {'I','0','0','0',0x0D,0x0A};
char SendingText2[6] = {'T','0','0','0',0x0D,0x0A};
char SendingText3[6] = {'H','0','0','0',0x0D,0x0A};

int localADC0Data = 0;
int localADC1Data = 0;
int localADC2Data = 0;
int localADC3Data = 0;
unsigned char str4[]  = {"                 "};
char InChar;
char RecWordsP1[60];
int RecWordsCntrP1 = 0;
char RecChar_Int;
char CurrReChar;
char PrevReChar;
int GGAFound = 0;
char WorkingString[50];
int WorkStrWordCnt = 0;
unsigned char CopyTheSring[40];
int flag1=0;
int flag2=0;
int flag3=0;
int flag4=0;



PINSEL1 |= ANALOG_IN_DIR;
IODIR0 &= ~(ANALOG_IN);
Adc0Init(10);  

  PINSEL1 |=  ANALOG_IN1_DIR;
IODIR0 &= ~(ANALOG_IN1);
Adc0Init(10);

PINSEL1 |= ANALOG_IN2_DIR;
IODIR0 &= ~(ANALOG_IN2);
Adc0Init(10);

 

Uart0Init();

 
while(1)
{
        num1    = Adc0Read(1); //Select channel number
        num2    = Adc0Read(2);
    num3    = Adc0Read(3);
                    //Display Analog voltage on Character L
   IR       = num1;
    temp     = num2/4;
    humidity = num3 ;

 

localADC0Data = IR %1000;
SendingText1[3] = 48+(localADC0Data%10);
localADC0Data = localADC0Data/10;
SendingText1[2] = 48+(localADC0Data%10);
localADC0Data = localADC0Data/10;
SendingText1[1] = 48+(localADC0Data%10);

localADC1Data = temp%1000;
SendingText2[3] = 48+(localADC1Data%10);
localADC1Data = localADC1Data/10;
SendingText2[2] = 48+(localADC1Data%10);
localADC1Data = localADC1Data/10;
SendingText2[1] = 48+(localADC1Data%10);

localADC2Data = humidity%1000;
SendingText3[3] = 48+(localADC2Data%10);
localADC2Data = localADC2Data/10;
SendingText3[2] = 48+(localADC2Data%10);
localADC2Data = localADC2Data/10;
SendingText3[1] = 48+(localADC2Data%10);


 

  if (flag2==0)
  {
flag2=1;
if((IR>500) && (temp>20) && (humidity>50))
   {
    Uart0PutS("AT\r\n");
_DelayMs(100);
Uart0PutS("AT+CMGF=1\r\n");              
_DelayMs(200);
Uart0PutS("AT+CMGS=\"9767034006\"\r\n");  
_DelayMs(200);
SendHexData0(SendingText1, 6);
_DelayMs(200);
Uart0PutS(" Detected\r\n");
_DelayMs(200);
Uart0PutS(CopyTheSring);
_DelayMs(200);
SendHexData0(END,1);

// GPS
for(FillChar = 0; FillChar < 24; FillChar++)
  {
    CopyTheSring[FillChar] = WorkingString[FillChar + 14];
  }
    SendHexData0(CopyTheSring, 24);
_DelayMs(50);
SendHexData0(END, 1);
_DelayMs(50);
   _DelayMs(200);

  }
}
else
{
flag2=0;

}

if (temp>20)
{
  if (flag3==0)
  {
   flag3=1;
Uart0PutS("AT\r\n");
_DelayMs(100);
Uart0PutS("AT+CMGF=1\r\n");              
_DelayMs(200);
Uart0PutS("AT+CMGS=\"9767034006\"\r\n");  
_DelayMs(200);
SendHexData0(SendingText2, 6);
_DelayMs(200);
Uart0PutS("High Temp.\r\n");
_DelayMs(200);
SendHexData0(END,1);

  }
}
else
{
  flag3=0;
}

   if (humidity>50)
{
if (flag4==0)
{ flag4=1;

  Uart0PutS("AT\r\n");
_DelayMs(100);
Uart0PutS("AT+CMGF=1\r\n");              
_DelayMs(200);
Uart0PutS("AT+CMGS=\"9767034006\"\r\n");  
_DelayMs(200);
SendHexData0(SendingText3,6);
_DelayMs(200);
Uart0PutS("High Humidity.\r\n");
_DelayMs(200);
SendHexData0(END,1);

}
}
else
{
  flag4=0;
}

 

}
}

ARM training 

/*ADC Defination*/

 void Adc0Init(unsigned char clkdiv)
{
PCONP |= 0x00001000;                        //Power on the A/D converter 0
//configure the A/D control register of A/D 0
AD0CR =((unsigned long)(clkdiv+1)<<8 ) | _PDN_BIT ;
}

unsigned int Adc0Read(unsigned char channel)
{
unsigned val;
// float AD0=2.5;
AD0CR &= ~(_ADCR_START_MASK|_ADCR_SEL_MASK);  //stop the A/D converter by masking the
   //start bits and channel selection bit    
AD0CR |=((1)<<channel);  //Select the A/D channel
AD0CR |=_ADC0_START;
while(!(AD0GDR & (0x80000000)));    //Wait for the conversion to get over
 //by monitoring the 28th bit of A/D data register
AD0CR &= ~(_ADCR_START_MASK|_ADCR_SEL_MASK);  //Stop the conversion by masking the start bits

val = AD0GDR;
val = ((val>>6 & 0x03FF));  //Extract A/D result
return(val);
}
/*UART Defination*/

void Uart0Init (void)    // Initialize Serial Interface      
{                
  // initialize the serial interface  
   PINSEL0 |= 0x00050005;           // Enable RxD0 and TxD0                    
   U0LCR = 0x83;                   //8 bits, no Parity, 1 Stop bit          
   U0DLL = _9600_15_MHZ;                     //9600 Baud Rate @ 12MHz Clock  
   U0LCR = 0x03;                   //DLAB = 0  

   //Enable Uart FIFO
   U0FCR |= 0x01;

   U1LCR = 0x83;                   // 8 bits, no Parity, 1 Stop bit          
   U1DLL = 97;                     // 9600 Baud Rate @ 12MHz Clock  
   U1LCR = 0x03;                   // DLAB = 0  

   U1FCR |= 0x01;

   // Configure the VIC for Interrupt Handling
   VICVectCntl7 |= (VIC_INT_CH_EN | UART1_CH_NUM);
   VICVectAddr7 = (unsigned int) UART1_ISR;
   VICIntSelect &= (~VIC_UART1_CH);   // optional : you can remove this line : This is to ensure the IRQ Mode
   VICIntEnable |= VIC_UART1_CH;         // Enabel the Interrupt for listening request
   // Enable UART Interrupt

   U1IER   |= 0x01; // DLAB = 0
}




Dc motor Control Serial Reception ARM7

Hello Friends
Let us have a look on Dc motor Control Serial Reception

unsigned char str1[16]={"   FORWARD     "};
unsigned char str2[16]={"   BCKWARD    "};
unsigned char str3[16]={"   RIGHT TURN  "};
unsigned char str4[16]={"   LEFT TURN   "};

void main()
{
TRISD=0;
TRISB=0;
TRISC=0X80;
lcdinit();
serialinit();
while(1)
{
serrx();
if(a=='F')
{
//delay(500);   // clockwise forward
//delay(500);
in1=1;
in2=0;
in3=1;
in4=0;
display(str1);
}
else if(a=='B')
{
//delay(500);
//delay(500);
in1=0;
in2=1;
in3=0;
in4=1;
lcdcmd(0x80);
display(str2);
//delay(500);
}

else if(a=='R')
{
//delay(500);
//delay(500);
in1=0;
in2=1;
in3=1;
in4=1;
lcdcmd(0x60);
display(str3);
//delay(500);
}
else if(a=='L')
{
//delay(500);
//delay(500);
in1=1;
in2=1;
in3=1;
in4=0;
lcdcmd(0x80);
display(str4);
//delay(500);
}
else if(a=='S')
{
//delay(500);
//delay(500);
in1=1;
in2=1;
in3=1;
in4=1;
lcdcmd(0x80);
display(str5);
//delay(500);
}

}

}


Embedded Linux Training  
void lcdinit()
{
//PORTD=0x00;
delay(10);
lcdcmd(0x38);
delay(10);
lcdcmd(0x0e);
delay(10);
lcdcmd(0x01);
delay(10);
lcdcmd(0x06);
delay(10);
lcdcmd(0x80);
delay(10);
}


void serialinit()
{
RCSTA=0X90;
SPBRG=12;
TXSTAbits.TXEN=1;
RCSTAbits.SPEN=1;
}


void serrx()
{
while (PIR1bits.RCIF==0);
a=RCREG;
}


void delay(int t)
{
int i;
for(i=0;i<=10*t;i++)
{
}
}

void display(unsigned char a[16])
{
int i,q;
for(i=0;i<=15;i++)
{
q=a[i];
lcddata(q);
}
}

void lcdcmd(unsigned char cmd)
{
ldata=cmd;
rs=0;
en=1;
delay(10);
en=0;

}

void lcddata(unsigned char dat)
{
ldata=dat;
rs=1;
en=1;
delay(10);
en=0;

}

GPIO Programing PIC18f

#define  in1 PORTCbits.RC0
#define  in2 PORTCbits.RC1
#define  in3 PORTCbits.RC2
#define  in4 PORTCbits.RC3
#define  sw1 PORTCbits.RC4
#define  sw2 PORTCbits.RC5
#define  sw3 PORTCbits.RC6
#define  rs PORTBbits.RB5
#define  en PORTBbits.RB1
void lcdinit(void);
void lcdcmd(unsigned char);
void lcddata(unsigned char);
void display(unsigned char []);
void delay(int);
unsigned char str1[16]={"   FORWARD     "};
unsigned char str2[16]={"   BACKWARD    "};
unsigned char str3[16]={"   RIGHT TURN  "};
unsigned char str4[16]={"   LEFT TURN   "};
unsigned char str5[16]={"   S T O P     "};

void main()
{
TRISB=0;
TRISD=0;
TRISC=0x70;
 lcdinit();
while(sw3==0)

Advanced Embedded Training

{

if(sw1==0&&sw2==0)
{
delay(500);   // clockwise forward
delay(500);