/*-----------------------------------------------------------------------+
|             DEPARTAMENTO MECANICA UNIVERSIDADE AVEIRO                  |
|                                                                        |
| Nome:                                                                  |
|       David Manuel Costa Gameiro          N:20281                      |
|       Filipe Carvalho Mostardinha         N:22085                      |
|                                                                        |
| Data:   10/Maio/2004       Nome Fihceiro: InitPIC.c                    |
+-----------------------------------------------------------------------*/

#include <p18f258.h>
#include "InitPic.h"

void InitPic(long FREQ_OSC, int BAUD)
{

/*------------------------------------------------------------------+
|                    Definicoes dos TRIS do PIC                     |
+------------------------------------------------------------------*/
//PortoA <1:7> saˇdas exepto RA0
TRISA = 0x01;
//PortoB <2> entradas CanRx, <0:1><3:7> saidas
TRISB = 0b00000100;
//PortoC <0:6> saidas, RC7 entrada(RX USART)
TRISC = 0b10000000;

/*------------------------------------------------------------------+
|          			    Defini‡”es da USART             		    |
+------------------------------------------------------------------*/

SPBRG = (byte)((FREQ_OSC/BAUD)/16)-1; //verificar datasheet pag 185

//Usar a USART em High Speed,(BRG=0 Low Speed)
TXSTAbits.BRGH = TRUE;   
//Activa os pinos da porta serie
RCSTAbits.SPEN = TRUE;   

TXSTAbits.TXEN = TRUE;
//Modo continuo na recepcao fica activo
RCSTAbits.CREN = TRUE;

/*------------------------------------------------------------------+
|          			 Defini‡”es dos Interrupts             		    |
+------------------------------------------------------------------*/

// Global interrupt enable bit (enables all unmasked interrupts)


//Prioridades do Interrupts
IPR1bits.RCIP = TRUE;
IPR3bits.RXB0IP = TRUE;
IPR3bits.RXB1IP = TRUE;

RCONbits.IPEN = TRUE;//Activa interrupts priorit rios

INTCONbits.GIEH = TRUE;	//Interrupts prioritarios activos

//INTCONbits.GIEH = TRUE; ¤ interessa estes interrupts activos

//Activa o interrupt, para o caso que chegue algo pela porta serie
PIE1bits.RCIE = TRUE;

}
