AUTOMOTIVE

                     AUTOMOTIVE FOR CAN

 
     CAN PROTOCAL CODE FOR LPC2129 ARM7 BOARD

#include"header.h"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
unsigned int MSG[4];
unsigned char can_test()
{
      unsigned int a,b,key;
test:
  lcdstring("turn on ignitation");
  delay(1000);
  lcdclear();
  key=IOPIN1;
  key=IOPIN1 &(1<<25);
 if(key)
  {
  lcdclear();
  lcdstring("key pass");
  delay(1000);
        TX_from_CAN2(2);
       while(!(RX_IN_CAN1()==2));
        lcdclear();
        lcdstring("ignitation start");
        delay(1000);
        lcdclear();
       lcdstring("checking status");
       delay(2000);
       a=IOPIN0;
       a=(0x0000010 & a);
       b=IOPIN0;
       b=(0x0000040 & b);
    if(a==0&&b==0)
     {
        TX_from_CAN2(2);
       while(!(RX_IN_CAN1()==2));
       lcdclear();
       lcdstring("braktest pass");
       delay(2000);
      TX_from_CAN2(2);
       while(!(RX_IN_CAN1()==2));
       lcdclear();
       lcdstring("seat pass");
       delay(2000);
       return 1;
     }  
else
    {
         lcdclear();
          delay(1000);
          lcdstring("test fail");
          delay(2000);
          return 0;
     }
}
goto test;
}
void canint()
{
    VPBDIV =0X02;//divide frequncy by 2 30frequney
 PINSEL1 |=(1<<22)|(1<<24)|(1<<26)|(1<<28)|(1<<18)|(1<<16)|(1<<14); //18,16.14 can tx & rx
 C1MOD= 1<<0;    // can data sheet reset bit because we writting something ex :electrical city repair
    C1BTR=1<<20|1<<19|1<<18|29; //bus timing register plck/btr 1100 19-16
    C1MOD=0;
    C2MOD=1<<0;
    C2BTR=1<<20|1<<19|1<<18|29;
    C2MOD=0;
}
void TX_from_CAN2(unsigned int ch)
{
     while((C2SR&0X00000004)!=0X00000004);   //sr status register check 2 bit 1 2 4
     C2TFI1=(1<<18);   //transsimission frame information like dlc,rtr ,ide
     C2TDA1=ch;   // it will contaoined 32 bit
     C2TID1=0x45;   // 11 bit are 29 bit
     C2CMR=(1<<0)|(1<<5);  //0 bit for fillter  5 tx buffer
     while((C2GSR&0x00000008)!=0x00000008);//goble data register read value s r no
}
unsigned int RX_IN_CAN1(void)
{
while((C1SR&0x01));
MSG[0]=C1RID;
MSG[1]=C1RDA;
MSG[2]=C1RDB;
MSG[3]=C1RFS;
C1CMR=(1<<2);
return MSG[1];

}
  
CODE FOR LCD FUNCTION CODE 


#include "header.h"
void delay(int count)
{
int i,j;
 for(i=0;i<count;i++)
 {
  for(j=0;j<=3000;j++)
  {
  }
 }
  
}

void lcdcmd(int cmd)
{
  IOCLR0 = (0XFF<<15);
   IOSET0 = (cmd<<15);
  IOCLR0 = RS;
  IOCLR0 = RW;
  IOSET0 = EN;
  delay(100);
  IOCLR0= EN;
  delay(100);
}
void lcddata(char data)
{
  IOCLR0 = (0XFF<<15);
   IOSET0 = (data<<15);
  IOSET0 = RS;
  IOCLR0 = RW;
  IOSET0 = EN;
  delay(100);
  IOCLR0= EN;
  delay(100);
}
void lcdint()
{
 IODIR0 |= RS|RW|EN|DATA_PINS;
 lcdcmd(0x38);// cmd for enable lcd
 lcdcmd(0x0E);// cmd for cursur blink
 lcdcmd(0x01);// cnd for clear
 lcdcmd(0x80);// cmd for print first line
}
void lcdclear()
{
lcdcmd(0x01);
}
void lcdstring(char *str)
{
while(*str)
{
lcddata(*str);
str++;
}
}

CODE FOR MAIN FUNCTION

#include "header.h"
int main()
{
unsigned char res;
lcdint();
canint();
lcdclear();
lcdstring("can test code");
     delay(1000);
     TEST:
     res=can_test();
     if(res!=1)
     {
     goto TEST;
     delay(2000);
     }
     while(1)
     {
     lcdclear();
     lcdstring("vehile on");
     delay(100);
     }
}

Comments

Popular posts from this blog

Smart Power management system in any management system

READING VALUES FROM SENSOR AND THAT WRITING TO EEPROM

project for checking status of lights very day 12 :11 am