/*-----------------------------------------------------------------------+
|             DEPARTAMENTO MECANICA UNIVERSIDADE AVEIRO                  |
|                                                                        |
| Nome:                                                                  |
|       David Manuel Costa Gameiro          N:20281                      |
|       Filipe Carvalho Mostardinha         N:22085                      |
|                                                                        |
| Data:   10/Maio/2004     Nome Ficheiro: InitCan.c                      |
+-----------------------------------------------------------------------*/

#include <p18f258.h>
#include "InitCan.h"
#include "Can18xx8.h"



void InitCan(byte HostID)
{
	//Colocar o MCU em modo configuracao relativamente ao CAN
	CANSetOperationMode(CAN_OP_MODE_CONFIG);

	CANInitialize(FASE_SALTO, BRP, FASE_SEG1,\
				  FASE_SEG2, FASE_PROP, CONFIGURACAO);

	//Definicao das Mascaras e Filtros
	CANSetMask(CAN_MASK_B1, MASCARA, CAN_CONFIG_STD_MSG);
	CANSetMask(CAN_MASK_B2, MASCARA, CAN_CONFIG_STD_MSG);

	CANSetFilter(CAN_FILTER_B1_F1, HostID, CAN_CONFIG_STD_MSG);
	CANSetFilter(CAN_FILTER_B1_F2, HostID, CAN_CONFIG_STD_MSG);

	CANSetFilter(CAN_FILTER_B2_F1, HostID, CAN_CONFIG_STD_MSG);
	CANSetFilter(CAN_FILTER_B2_F2, HostID, CAN_CONFIG_STD_MSG);
	CANSetFilter(CAN_FILTER_B2_F3, HostID, CAN_CONFIG_STD_MSG);
	CANSetFilter(CAN_FILTER_B2_F4, HostID, CAN_CONFIG_STD_MSG);

	//Activar o modo Normal de Funcionamento
	CANSetOperationMode(CAN_OP_MODE_NORMAL);

	PIE3 |= 0b00000011;//activa os interrupts dos buffers recepcao CAN
}
