/*******************************************************************************
*                                                                              *
* Copyright 2010 Rheinmetall Canada Inc.                                  	   *
*                                                                              *
* No part of this document may be reproduced, stored in                        *
* a retrieval system, or transmitted, in any form or by any means,             *
* electronic, mechanical, photocopying, recording, or otherwise,               *
* without the prior written permission of Rheinmetall Canada Inc.              *
*                                                                              *
*******************************************************************************/
/* ¤Revision:
000 20100616 HCAM,
	Original version.
	
                                                                                                                          
		  ,----..                                            ,----..                                                              
		 /   /   \                                          /   /   \    ,--,                                                     
		|   :     :   __  ,-.   ,---.                      |   :     : ,--.'|         ,---,                                       
		.   |  ;. / ,' ,'/ /|  '   ,'\   .--.--.           .   |  ;. / |  |,      ,-+-. /  |                                      
		.   ; /--`  '  | |' | /   /   | /  /    '          .   ; /--`  `--'_     ,--.'|'   |                                      
		;   | ;  __ |  |   ,'.   ; ,. :|  :  /`./          ;   | ;  __ ,' ,'|   |   |  ,"' |                                      
		|   : |.' .''  :  /  '   | |: :|  :  ;_            |   : |.' .''  | |   |   | /  | |                                      
		.   | '_.' :|  | '   '   | .; : \  \    `.         .   | '_.' :|  | :   |   | |  | |                                      
		'   ; : \  |;  : |   |   :    |  `----.   \        '   ; : \  |'  : |__ |   | |  |/                                       
		'   | '/  .'|  , ;    \   \  /  /  /`--'  /        '   | '/  .'|  | '.'||   | |--'                                        
		|   :    /   ---'      `----'  '--'.     /         |   :    /  ;  :    ;|   |/                                            
		 \   \ .'                        `--'---'           \   \ .'   |  ,   / '---'                                             
		  `---`                                              `---`      ---`-'                                                    

### YYYYMMDD Initial, Bug Identification
	Change description.
 */
 
 
 
 
 /****************************** NOTES ***************************************
 -> Timers assignment <-
 
 - Timer1 used by general timer module (timer.c)
 - Timer2 used by time based Resolver data acquisition module (resolver.c)
 - timer3 used by input capture to detect PWM
 - timer4 used by hall acquisition module (HallAcquisition.c)
 - timer5 used by FPGAInterface to time-base SPI the transfer to the FPGA
 
 
 -> Interrupt priority assignment <-
  
 Priority.SubPriority - Assignment
HIGHEST	
		7.3
		7.2
		7.1 - UART1
		7.0 - UART2
		6.3 - TIMER2 (Resolver acquisition & halls computation)
		6.2 - PMP
		6.1
		6.0 - Input Capture
		5.3 - ADC
		5.2 - SPI
		5.1
		5.0
		4.3 - Drive Enable pin interrupt
		4.2 - AD2S DOS Pin
		4.1 - AD2S LOT Pin
		4.0
		3.3
		3.2
		3.1
		3.0	- TIMER5 (FPGA TX)
		2.3 - TIMER1 (General purpose timer)
		2.2 - TIMER3 (PWM Detection)
		2.1
		1.0		
		1.3
		1.2
		1.1
		1.0
LOWEST
 
 *****************************************************************************/

#ifndef DEFINE_H
#define DEFINE_H

/* ************************************************************************** */
/* Includes */
#include <plib.h>
//#include "CUHelperFcns.h"
 
/* ************************************************************************** */
/* Defines */
#define SYS_FREQ 			(77824000L)		//Clock period = 12.85 ns
#define PERIPHERAL_FREQ		(77824000L)		
#define PIN_INPUT 1
#define PIN_OUTPUT 0
#define LED_ON 0
#define LED_OFF 1
#define false 0
#define true 1
#define MSB8(x)     ((x >> 8) & 0xFF)
#define LSB8(x)     (x & 0xFF)

#define PI 3.1415926536

//#define ENABLE_DEBUG_LOG
#ifdef ENABLE_DEBUG_LOG
	#include "util.h"
#endif

//#define USE_HALL_ACQ_SIMULATOR	//Use this switch for development to test hall acquisition traces
#define USE_ENGINEERING_MODE	//Use this switch to disable speed, position and halls traces and traces buffer allocation (all traces !)
//#define USE_TRACE_SIMULATOR		//Use this switch to simulate trace data for development
//#define USE_SPI_DONGLE_SIMULATOR	//Use this switch if you use the CUMUX as a SPI dongle instead of the CS16IS74 dongle.
//#define USE_PMP_AUTOINCREMENT		//Use to speed-up AD2S data transfer
#define USE_PWM_DETECTION			//Use PWM detection to enable/disable bridge
#define USE_AUTO_BRIDGE_CONTROL  	//Execute drive bridge control
//#define FORCE_BRIDGE_ON
//#define DRIVE_BOARD_NOT_INSTALLED
#define DISABLE_PRINT_FAULT
#define SPI_FAST
//#define USE_DMA_WITH_PMP
//#define USE_RESOLVER_STATEMACHINE
//#define DISABLE_DRIVE_PARAM_MGMT 	// uncomment to avoid setting the drive at power-up

#define POLL_UART1_RX
#define POLL_UART2_RX

// Uncomment next #define for testing with ICCA board
// #define USE_ICCA_CU_PA_UART_SNOOPING


//Define the com port assignations
//----------------------------
#define DRIVE_UART_PORT 	UART_1
#ifdef USE_ICCA_CU_PA_UART_SNOOPING
	// Note: With this configuration there is no CU command going to the PA
	#define CU_UART_PORT		UART_3
	#define CONSOLE_UART_PORT 	UART_2
#else
	// Normal setting using PA SPI for UART_3 (CONSOLE_UART_PORT)
	#define CU_UART_PORT		UART_2
	#define CONSOLE_UART_PORT 	UART_3
#endif

#define ACTUATOR_WITTENSTEIN
//#define ACTUATOR_DS50

//
//----------------------------
//#define USE_BLOCKING_PRINTF
#define USE_PRINTF

#ifdef USE_PRINTF
	#define PRINTF(n, a...)  printf(n, ## a)
#else
	#define PRINTF(n, a...)
	#define NO_EXTERNAL_UART
#endif


/* ************************************************************************** */
/* Type definitions */
typedef int bool;

#endif
//EOF

