Você está na página 1de 11

START

Initialize variables TRISC0=1


int i
char ReadUART = 0
Main Flow Chart char StatusReceived = 0
INTCON = 0x00

GfnUsartPinConfigure() _ Configure USART


GfnBuadRateSet() - Baud Rate 9600 select
GfnUsartInit() - Initialize USART

Delay

CAN_Port_Init() - Initialise CAN Ports


InitECAN()
Send message CAN Initialised using
GfnUsartTransmitString("CAN Initialised\n\r")

No
Chk if PortC.01 is Wait
free

Yes

Transmit using ECAN_Transmit()


Message Transmitted
GfnUsartTransmitString("Message Transmitted\n\r");

END

IF EOC=1 , then Conversion from Analog


i/p to digital/p is done
Function void GfnUsartPinConfigure(void)

START

Yes
initializations are done here

RCSTA |= 0x80 Enable the Serial Port.

TRISC &= 0xBF Make Tx pin as output

TRISC |= 0x80 Make Rx pin as Input

END

Function void GfnBuadRateSet(void)

START

Baud Rate setting is done here

SPBRG = 25 - Assign SPB Reg to 25 which sets the


Baud Rate to 9.6kps

END
Function void GfnUsartInit(void)

START

Initialize USART for Transmission

TXSTA &= 0xBF -- Clear TX9


TXSTA &= 0xEF -- Clear SYNC bit
TXSTA &= 0xFB -- Clear BRGH
TXSTA |= ~0xFB -- Set BRGH
TXSTA |= 0x20 -- Set TXEN i.e. ,Transmission Enabled

Initialize USART for Reception


RCSTA &= 0xBF -- Clear
RCSTA |= 0x10 -- Then Set to Enable Continuous Receive

END

Function GfnUsartTransmitt(char byte)

START

Initialize variable i = 0
Initialize CHARACTER TXREG to be received
variable

Wait till the TXIF is cleared

Wait till PIR1 is cleared

END
START

Initialize int variable i = 0


Initialize CHARACTER TXREG to be received
variable

Function GfnUsartTransmitString(char *str)


Wait till the TXIF is cleared

Wait till PIR1 is cleared

Increment to the next character to be


transmitted

END
Function char GfnUsartReceive(void)

START

Initialize char variable i to be received

Wait till Rx buffer is cleared

Receive the character

Wait tillthe
Return Rx character
buffer is cleared

END

Function void CAN_Port_Init(void)

START

Set
Set TRISB
TRISB for
for Reception
Transmission
– Rx– Tx
pinpin
as as
i/po/p
portport
END
Function void InitECAN(void)

START

Initialize INT variable i = 0

Enter CAN module into config mode


CANCON = 0x80

Wait till CANSTAT is enabled

Initialize CAN Timing


To 25Kbps @ 4MHz
SJW = 1, Phase Seg1 = 3, Phase Seg2 = 3, Prop Seg = 1
This is done by
BRGCON1 = 0b00000001
BRGCON2 = 0b10010000
BRGCON3 = 0b00000010

Initialize CAN Timing


To 25Kbps @ 4MHz
SJW = 1, Phase Seg1 = 3, Phase Seg2 = 3, Prop Seg = 1
This is done by
BRGCON1 = 0b00000001
BRGCON2 = 0b10010000
BRGCON3 = 0b00000010
Initialize Receive Masks
The first mask is used that accepts all SIDs and no EIDs
The follo values are set
RXM0EIDH = 0x00
RXM0EIDL = 0x00
RXM0SIDH = 0xFF This is for Standard ID FILTER setting
RXM0SIDL = 0xE0
RXF1EIDH = 0x00
SetRXF1EIDL = 0x00Buffers
Receive Mode
RXF1SIDH
RXB0CON = 0x00= 0x32
Switch to Normal
RXF1SIDL ENDmode
= 0xC0CAN wait CANCON = 0x00
RXB1CON = 0x00
Function unsigned char ECAN_Receive(void)

Clear
Assign
Assign
Clear
RXFUL
the
RXFUL
the
values
bitvalues
for
bitoffor
next
RXB1
ofnext
RXB1 Clear RXFUL
Assign the values
bit forofnext
RXB0
Registers
reception
Registers
reception
to Global
to Global TempTemp
values
values START Return Registers to Global Temp values
reception
Chk if RXB1 is set Chk if RXB0 is False
set RXMsgFlag =
Ex: RXB1CON
RXB1CON
Ex:
temp_D1
temp_D1
&= =&=
0x7f
RXB0D1
=0x7f
RXB0D1 Ex: temp_D0
RXB0CON &= =0x7f
RXB0D0
Yes No =yes
No Reset
Data
Set 0x01
recvd
Flag
The
Return
Flag--
RXMsgFlag
in CAN yes
temp_EIDH
temp_EIDH= RXB1EIDH…
A= RXB1EIDH…
END
Initialize and Assign Flag - char RXMsgFlag
A 0 temp_EIDH = True
RXMsgFlag
Mode= 11 = 0
RXB0EIDH…
Function void ECAN_Transmit(void) - To
Check for Transmission

Initialize Registers for transmission


TXB0EIDH = 0x00 START
TXB0EIDH = 0x00
TXB0EIDL = 0x00
TXB0SIDH = to
Assign 0x01
Set thevalues
TXREQ bit i.e.,buffer
TXB0SIDL = 0xC0
TXB0CON - to start Transmission
TXB0DLC = 0x03 END
TXB0D0…..D7
Function ECAN_Transmit_BulbControl(unsigned char BulbONOFF)- To Check for
Transmission of this character

START

Initialize Registers for transmission


TXB0EIDH = 0x00
TXB0EIDH = 0x00
TXB0EIDL = 0x00
TXB0SIDH = 0x01
TXB0SIDL = 0xC0
TXB0DLC = 0x03

Assign value BulbONOFF to TXB0D0

Set the TXREQ bit i.e., buffer


TXB0CON - to start Transmission

END

Você também pode gostar