text: /*
      FreeRTOS V7.0.1 - Copyright (C) 2011 Real Time Engineers Ltd.
  	
  
      ***************************************************************************
       *                                                                       *
       *    FreeRTOS tutorial books are available in pdf and paperback.        *
       *    Complete, revised, and edited pdf reference manuals are also       *
       *    available.                                                         *
       *                                                                       *
       *    Purchasing FreeRTOS documentation will not only help you, by       *
       *    ensuring you get running as quickly as possible and with an        *
       *    in-depth knowledge of how to use FreeRTOS, it will also help       *
       *    the FreeRTOS project to continue with its mission of providing     *
       *    professional grade, cross platform, de facto standard solutions    *
       *    for microcontrollers - completely free of charge!                  *
       *                                                                       *
       *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *
       *                                                                       *
       *    Thank you for using FreeRTOS, and thank you for your support!      *
       *                                                                       *
      ***************************************************************************
  
  
      This file is part of the FreeRTOS distribution.
  
      FreeRTOS is free software; you can redistribute it and/or modify it under
      the terms of the GNU General Public License (version 2) as published by the
      Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
      >>>NOTE<<< The modification to the GPL is included to allow you to
      distribute a combined work that includes FreeRTOS without being obliged to
      provide the source code for proprietary components outside of the FreeRTOS
      kernel.  FreeRTOS is distributed in the hope that it will be useful, but
      WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
      or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
      more details. You should have received a copy of the GNU General Public
      License and the FreeRTOS license exception along with FreeRTOS; if not it
      can be viewed here: http://www.freertos.org/a00114.html and also obtained
      by writing to Richard Barry, contact details for whom are available on the
      FreeRTOS WEB site.
  
      1 tab == 4 spaces!
  
      http://www.FreeRTOS.org - Documentation, latest information, license and
      contact details.
  
      http://www.SafeRTOS.com - A version that is certified for use in safety
      critical systems.
  
      http://www.OpenRTOS.com - Commercial support, development, porting,
      licensing and training services.
  */
  
  #ifndef PORTMACRO_H
  #define PORTMACRO_H
  
  /*-----------------------------------------------------------
   * Port specific definitions.  
   *
   * The settings in this file configure FreeRTOS correctly for the
   * given hardware and compiler.
   *
   * These settings should not be altered.
   *-----------------------------------------------------------
   */
  
  /* Type definitions. */
  #define portCHAR		char
  #define portFLOAT		float
  #define portDOUBLE		double
  #define portLONG		long
  #define portSHORT		int
  #define portSTACK_TYPE	unsigned char
  #define portBASE_TYPE	char
  
  #if( configUSE_16_BIT_TICKS == 1 )
  	typedef unsigned portSHORT portTickType;
  	#define portMAX_DELAY ( portTickType ) 0xffff
  #else
  	typedef unsigned portLONG portTickType;
  	#define portMAX_DELAY ( portTickType ) 0xffffffff
  #endif
  /*-----------------------------------------------------------*/
  
  /* Hardware specifics. */
  #define portBYTE_ALIGNMENT			1
  #define portGLOBAL_INT_ENABLE_BIT	0x80
  #define portSTACK_GROWTH			1
  #define portTICK_RATE_MS			( ( portTickType ) 1000 / configTICK_RATE_HZ )		
  /*-----------------------------------------------------------*/
  
  /* Critical section management. */
  #define portDISABLE_INTERRUPTS()	INTCONbits.GIEH = 0;
  #define portENABLE_INTERRUPTS()		INTCONbits.GIEH = 1;
  
  /* Push the INTCON register onto the stack, then disable interrupts. */
  #define portENTER_CRITICAL()		POSTINC1 = INTCON;				\
  									INTCONbits.GIEH = 0;
  
  /* Retrieve the INTCON register from the stack, and enable interrupts
  if they were saved as being enabled.  Don't modify any other bits
  within the INTCON register as these may have lagitimately have been
  modified within the critical region. */
  #define portEXIT_CRITICAL()			_asm									\
  										MOVF	POSTDEC1, 1, 0				\
  									_endasm									\
  									if( INDF1 & portGLOBAL_INT_ENABLE_BIT )	\
  									{										\
  										portENABLE_INTERRUPTS();			\
  									}
  /*-----------------------------------------------------------*/
  
  /* Task utilities. */
  extern void vPortYield( void );
  #define portYIELD()				vPortYield()
  /*-----------------------------------------------------------*/
  
  /* Task function macros as described on the FreeRTOS.org WEB site. */
  #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )
  #define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
  /*-----------------------------------------------------------*/
  
  /* Required by the kernel aware debugger. */
  #ifdef __DEBUG
  	#define portREMOVE_STATIC_QUALIFIER
  #endif
  
  
  #define portNOP()				_asm	\
  									NOP \
  								_endasm
  
  #endif /* PORTMACRO_H */
  
  