/*-----------------------------------------------------------------------+
|             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 "Usart.h"
#include "InitCan.h"

extern byte HostMCU;//Nome do MCU



void InitCan(void)
{

	// Para configurar o modulo CAN de comunicacoes devemos
    // estar em modo configuracao, CANCON
    CANSetOperationMode(CAN_OP_MODE_CONFIG);

	CANInitialize(FASE_SALTO, BRP, FASE_SEG1,
            FASE_SEG2, FASE_PROP, CONFIGURACAO);    


    // Definicao das MASCARAs e dos Filtros

	CANSetMask(CAN_MASK_B1, MASCARA, CAN_CONFIG_STD_MSG);
	CANSetMask(CAN_MASK_B2, MASCARA, CAN_CONFIG_STD_MSG);

	CANSetFilter(CAN_FILTER_B1_F1, HostMCU, CAN_CONFIG_STD_MSG);
	CANSetFilter(CAN_FILTER_B1_F2, HostMCU, CAN_CONFIG_STD_MSG);
	CANSetFilter(CAN_FILTER_B2_F1, HostMCU, CAN_CONFIG_STD_MSG);
	CANSetFilter(CAN_FILTER_B2_F2, HostMCU, CAN_CONFIG_STD_MSG);
	CANSetFilter(CAN_FILTER_B2_F3, HostMCU, CAN_CONFIG_STD_MSG);
	CANSetFilter(CAN_FILTER_B2_F4, HostMCU, CAN_CONFIG_STD_MSG);


	//ACTIVAR o modo Normal do CAN
	CANSetOperationMode(CAN_OP_MODE_NORMAL);

	//Activar os interrupts dos buffers de recepcao
	PIE3bits.RXB1IE = TRUE;
	PIE3bits.RXB0IE = TRUE;
}
