/*===================================================================================+
|                                                                                    |
|     Universidade de Aveiro - Departamento de Engenharia Mecanica                   |
|                      (Projecto Humanoide - MODULROB)                               |
|                                                                                    |
|     Data: Quinta - 24/Marco/2004                                                   |
|                                                                                    |
|     Programadores: David Manuel Costa Gameiro  N: 20281                            |
|                    Filipe Carvalho Mostardinha N: 22085                            |
|                                                                                    |
|     Nome Ficheiro: adc.h                                                           |
|                                                                                    |
+===================================================================================*/

#include <p18f258.h>

#ifndef ADC_H //evitar redeclaracao de informacao

#define ADC_H 

//Definicao de tipos de dados
typedef enum BOOL {FALSE=0, TRUE = 1};
typedef unsigned char byte;

enum CANAIS_ADC
{
	ADC_CH_ALL = 0b0010, //todos os pinos s„o entradas AN com Vref+=Vdd e Vref-=Vss
	ADC_CH0 = 0b1110, // apenas o existe AN0 com Vref+=Vdd e Vref-=Vss
	ADC_CH0_1 = 0b0110 //ainda ¤ definido
};


////////////////////////////////////
//     Velocidade de convers„o    //
////////////////////////////////////
enum VelConversao
{
	ADC_FOSC_2  = 0b00000000,
	ADC_FOSC_8  = 0b01000000,
	ADC_FOSC_32 = 0b10000000,
	ADC_FOSC_FRC= 0b11000000
};

///////////////////////////////////
//       Canais existentes       //
///////////////////////////////////
enum CANAIS
{
	CANAL_0 = 0,
	CANAL_1 = 1,
	CANAL_2 = 2,
	CANAL_3 = 3,
	CANAL_4 = 4
};

// Pr‚ declaracao das funcoes

/*-------------------------------------------------------------------------+
|                     BYTE LerADC(BYTE canal)                              |
|                                                                          |
| Input: Canal - numero do canal que pretendemos converter                 |
|                                                                          |
| Output: valor lido para aquele canal                                     |
|                                                                          |
| Objectivo: Activa o canal 0 a 4 do PIC e le o seu valor                  |
+-------------------------------------------------------------------------*/

byte LerADC(byte canal);

/*-------------------------------------------------------------------------+
|                  void SetChanel(BYTE Canal)                              |
|                                                                          |
| Input: Canal - numero do canal que pretendemos activar                   |
|                                                                          |
| Sem outputs                                                              |
|                                                                          |
| Objectivo: Activa o canal 0 a 4 do PIC                                   |
+-------------------------------------------------------------------------*/

void SetChanel(byte Canal);

/*-------------------------------------------------------------------------+
|              void SetADC(BYTE config1, BYTE config2)                     |
| Input: config1 - 	configura‡„o da ADC velocidade, jun‡„o do enumerador   |
|                    ADC_CONFIG_FLAGS                                      |
|        config2 - quais os pinos que vao entradas analogicas              |
|                                                                          |
| Sem outputs                                                              |
|                                                                          |
| Objectivo: Configura os diversos registos do modulo ADC                  |
+-------------------------------------------------------------------------*/

void SetADC(byte config1, byte config2);


#endif
