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

READING VALUES FROM SENSOR AND THAT WRITING TO EEPROM

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