+ All Categories
Home > Documents > SMART CAR

SMART CAR

Date post: 24-Nov-2014
Category:
Upload: prasathr
View: 68 times
Download: 4 times
Share this document with a friend
Description:
car
Popular Tags:
35
PROGRAMMING NOTES INCLUDE FILES: #include <hidef.h> #include "derivative.h" USART GLOBAL FUNCTION DECLARATIONS: void uart0_9600_init(void); unsigned char uart0_rx(void); void uart0_tx(unsigned char a); void uart0_tx_string(char *s) ; void uart0_tx_number(unsigned char a); void uart0_tx_int(unsigned int a); void uart0_tx_newline(void); FUNCTION DEFINITIONS: void uart0_9600_init(void)//INITIALISE THE BAUD RATE { SCI0BDL=13; SCI0CR1=0; SCI0CR2=12; } void uart0_tx_int(unsigned int a) //TRANSMITS AN INTEGER { unsigned int temp; temp=a/10000; uart0_tx (temp + 0x30); a=a-temp*10000; temp=a/1000; uart0_tx(temp + 0x30); a=a-temp*1000; temp=a/100; uart0_tx(temp + 0x30); a=a-temp*100; temp=a/10; uart0_tx(temp + 0x30); a=a-temp*10; uart0_tx(a + 0x30); }
Transcript
Page 1: SMART CAR

PROGRAMMING NOTES

INCLUDE FILES:

#include <hidef.h> #include "derivative.h"

USART GLOBAL FUNCTION DECLARATIONS:

void uart0_9600_init(void);unsigned char uart0_rx(void);void uart0_tx(unsigned char a);void uart0_tx_string(char *s) ;void uart0_tx_number(unsigned char a);void uart0_tx_int(unsigned int a);void uart0_tx_newline(void);

FUNCTION DEFINITIONS:void uart0_9600_init(void)//INITIALISE THE BAUD RATE{ SCI0BDL=13; SCI0CR1=0; SCI0CR2=12; }

void uart0_tx_int(unsigned int a) //TRANSMITS AN INTEGER{unsigned int temp;temp=a/10000;uart0_tx (temp + 0x30);a=a-temp*10000;temp=a/1000;uart0_tx(temp + 0x30);a=a-temp*1000;temp=a/100;uart0_tx(temp + 0x30);a=a-temp*100;temp=a/10;uart0_tx(temp + 0x30);a=a-temp*10;uart0_tx(a + 0x30);}

Page 2: SMART CAR

void uart0_tx_number(unsigned char a) //TRANSMITS AN ALPHABET{unsigned char temp;temp=a/100;uart0_tx(temp + 0x30);a=a-temp*100;temp=a/10;uart0_tx(temp + 0x30);a=a-temp*10;uart0_tx(a + 0x30);}

void uart0_tx_string (char *s) //TRANMITS A STRING{ while (*s)

{uart0_tx(*s);s++;

}}

void uart0_tx_newline(void) //NEW LINE FEEDING{ uart0_tx (0x0A);uart0_tx (0x0D);}

unsigned char uart0_rx (void) //RECEIVING INPUT FROM HYPERTERMINAL{ while(SCI0SR1_RDRF==0); return SCI0DRL;}

void uart0_tx(unsigned char a) //USED AS SUBROUTINE IN ALL TX FUNCTIONS{ SCI0DRL=a; while(SCI0SR1_TC==0);}

Page 3: SMART CAR

PARTS CONNECTED:

LED CONTROL:

o DDRT=0xF0;//DATA DIRECTION CONTROL REGISTER FOR SETTING O/P PINS-4 TO 7 AS O/P PINS

o PTT=0x0F; //0 TO TURN ON ALL LEDS CONNECTED IN 4 TO 7 PINSo PTT=0xFF; //Turning Off all LEDso PTT_PTT4=0;//TURN ON FIRST LED1o PTT_PTT4=1;//TURN OFF FIRST LED1o uart0_tx(0x0D);//USE THIS FUNCTION BEFORE CALLING ANY UART FUNCTIONS

SWITCH CONTROL:

o DDRP_DDRP5=0; //Port P Pin 5 & 7 set to input o DDRP_DDRP7=0;o PERP_PERP5=1; //Port P Pin 5 & 7 Pull-up Enableo PERP_PERP7=1;o if(PTP_PTP5==0) ; //SWITCH PRESS CHECKINGo for (cnt=0;cnt<=550000;cnt++); //MAXIMUM SWITCH DETECTION TIMEo if(PTP_PTP7==0); //SWITCH PRESS CHECKING

DC MOTOR CONTROL:

o DDRE_DDRE2=1; // Port E pin 2 & 3 set to outputo DDRE_DDRE3=1;o DDRP_DDRP0=1; //PORT P PIN 0 & 1 AS OUTPUTo DDRP_DDRP1=1;o PORTE_PE2=0; //H BRIDGE ENABLE BY SUPPLY o PORTE_PE3=1;o PWMPOL_PPOL0=1; //PWM pulse High at beginning of Periodo PWMPOL_PPOL1=1; //PWM pulse High at beginning of Periodo PWMCLK_PCLK0=1; // clock SA as clock source for PWMo PWMCLK_PCLK1=1; // clock SB as clock source for PWMo PWMPRCLK =0x00; //PWM Prescale Clock Select-NO PRESCALAR- CLOCK A=CLOCK B=2MHZo PWMSCLA =5; //PWM SCALE A REG clock SA = clock A / (2 * 5) = 200KHzo PWMSCLB =5; //PWM SCALE B REG clock SB = clock B / (2 * 5) = 200KHzo PWMPER0 = 200; // PWM Channel Period 0 Register PWM Period 1KHzo PWMPER1 = 200; // PWM Channel Period 1 Register PWM Period 1KHzo PWMDTY0 = 50; // PWM Channel Duty 0 Register H BRIDGE CONTROLo PWMDTY1 = 0; // PWM Channel Duty 0 Register H BRIDGE CONTROLo PWME_PWME0=1; //PWM channel 0 Enableo PWME_PWME1=1; //PWM channel 1 Enable, NOW MOTOR STARTSo PORTE_PE2=0; //H BRIDGE DISABLES BY SAME POLARITY SUPPLY o PORTE_PE3=0; o PWMDTY0 = 50; //H BRIDGE CONTROL FET FORWARD DIRECTIONo PWMDTY1 = 0;

Page 4: SMART CAR

o PWMDTY0 = 0; //H BRIDGE CONTROL FET REVERSE DIRECTION o o PWMDTY1 = 50;o PORTE_PE3=1;//ENABLES THE H BRIDGE SUPPLY AFTER THE DELAY WE SPECIFYo PORTE_PE3=0;//DISBALES THE H BRIDGE SUPPLY AFTER THE DELAY WE SPECIFYo PTP_PTP0=0;//PORT P OUTPUT o PTP_PTP1=0;o PWME_PWME0=0; //PWM channel disableo PWME_PWME1=0;

SERVO MOTOR CONTROL:

o PWMCTL_CON23=1;//PWM CONTROL REGISTERo PWME_PWME2=1; //PWM channel 2 Enableo PWME_PWME3=1; //PWM channel 3 Enableo PWMPOL_PPOL2=1; //PWM pulse High at begining of Periodo PWMPOL_PPOL3=1; //PWM pulse High at begining of Periodo PWMCLK_PCLK2=1; // clock SA as clock source for PWMo PWMCLK_PCLK3=1; // clock SB as clock source for PWMo PWMPRCLK =0x00; //clock A = 2MHz clockB = 2MHzo PWMSCLA =1; //clock SA = clock A / (2 * 100) = 10KHzo PWMSCLB =1; //clock SB = clock B / (2 * 100) = 10KHz o PWMPER2 = 0x4E; // PWM Period 20ms 50Hzo PWMPER3 = 0x20; // PWM Period 20ms 50Hzo PWMDTY2 = 0x05; // Pulse Width 1.5ms: Center Positiono PWMDTY3 = 0x87; //1.415mso PWMDTY2 = 0x04; //Pulse Width: Left Positiono PWMDTY3 = 0x6A; //1.1mso PWMDTY2 = 0x06; //Pulse Width 1.7 ms: Right Positiono PWMDTY3 = 0xA4;o PWMDTY2 = 0x05; // Pulse Width: Center Positiono PWMDTY3 = 0x87; //1.415mso PWME_PWME2=0; //Stoping PWMo PWME_PWME3=0;

SENSOR CONTROL:

o ATD0CTL1=0x87; // no external triggero ATD0CTL2_ADPU=1; // ATD Enableo ATD0CTL2_ETRIGE=0; // no external triggero ATD0CTL3_S8C=1; // 8 adc channels sequenceo ATD0CTL4_SRES8=1; // 8-bit Resolutiono ATD0CTL5=0x10; // multisequenceo uart0_tx_number(ATD0DR7H); //Analog value channel 7o uart0_tx_number(ATD0DR6H); //Analog value channel 6

Page 5: SMART CAR

o uart0_tx_number(ATD0DR5H); //Analog value channel 5o uart0_tx_number(ATD0DR4H); //Analog value channel 4o uart0_tx_number(ATD0DR3H); //Analog value channel 3o uart0_tx_number(ATD0DR2H); //Analog value channel 2o uart0_tx_number(ATD0DR1H); //Analog value channel 1o uart0_tx_number(ATD0DR0H); //Analog value channel 0

DELAY ROUTINE:

void Delay(unsigned char a);//PROTOTYPEvoid Delay(unsigned char a) //GENERATES DELAY{unsigned int i,j;for(j=1;j<=a;j++) //Delay for(i=0;i<=60000;i++);}

PULSE COUNT:

Page 6: SMART CAR
Page 7: SMART CAR

PWM CONTROL

Page 8: SMART CAR
Page 9: SMART CAR
Page 10: SMART CAR
Page 11: SMART CAR
Page 12: SMART CAR
Page 13: SMART CAR
Page 14: SMART CAR
Page 15: SMART CAR
Page 16: SMART CAR
Page 17: SMART CAR
Page 18: SMART CAR
Page 19: SMART CAR
Page 20: SMART CAR
Page 21: SMART CAR
Page 22: SMART CAR
Page 23: SMART CAR
Page 24: SMART CAR
Page 25: SMART CAR
Page 26: SMART CAR
Page 27: SMART CAR
Page 28: SMART CAR
Page 29: SMART CAR
Page 30: SMART CAR
Page 31: SMART CAR
Page 32: SMART CAR
Page 33: SMART CAR
Page 34: SMART CAR

Recommended