]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Source/portable/IAR/ATMega323/port.c
Update version number to 8.1.2 after moving the defaulting of configUSE_PORT_OPTIMISE...
[freertos] / FreeRTOS / Source / portable / IAR / ATMega323 / port.c
index e3ca1143dbad41516851f6dd50360f2b8d3c9e43..5d19dec13c3b149e5e606ab3f2d8e738f8e341ac 100644 (file)
@@ -1,5 +1,6 @@
 /*\r
-    FreeRTOS V7.5.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+    FreeRTOS V8.1.2 - Copyright (C) 2014 Real Time Engineers Ltd. \r
+    All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
 \r
     the terms of the GNU General Public License (version 2) as published by the\r
     Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.\r
 \r
-    >>! NOTE: The modification to the GPL is included to allow you to distribute\r
-    >>! a combined work that includes FreeRTOS without being obliged to provide\r
-    >>! the source code for proprietary components outside of the FreeRTOS\r
-    >>! kernel.\r
+    >>!   NOTE: The modification to the GPL is included to allow you to     !<<\r
+    >>!   distribute a combined work that includes FreeRTOS without being   !<<\r
+    >>!   obliged to provide the source code for proprietary components     !<<\r
+    >>!   outside of the FreeRTOS kernel.                                   !<<\r
 \r
     FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
     WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
  *----------------------------------------------------------*/\r
 \r
 /* Start tasks with interrupts enables. */\r
-#define portFLAGS_INT_ENABLED                                  ( ( portSTACK_TYPE ) 0x80 )\r
+#define portFLAGS_INT_ENABLED                                  ( ( StackType_t ) 0x80 )\r
 \r
 /* Hardware constants for timer 1. */\r
-#define portCLEAR_COUNTER_ON_MATCH                             ( ( unsigned char ) 0x08 )\r
-#define portPRESCALE_64                                                        ( ( unsigned char ) 0x03 )\r
-#define portCLOCK_PRESCALER                                            ( ( unsigned long ) 64 )\r
-#define portCOMPARE_MATCH_A_INTERRUPT_ENABLE   ( ( unsigned char ) 0x10 )\r
+#define portCLEAR_COUNTER_ON_MATCH                             ( ( uint8_t ) 0x08 )\r
+#define portPRESCALE_64                                                        ( ( uint8_t ) 0x03 )\r
+#define portCLOCK_PRESCALER                                            ( ( uint32_t ) 64 )\r
+#define portCOMPARE_MATCH_A_INTERRUPT_ENABLE   ( ( uint8_t ) 0x10 )\r
 \r
 /* The number of bytes used on the hardware stack by the task start address. */\r
 #define portBYTES_USED_BY_RETURN_ADDRESS               ( 2 )\r
@@ -86,8 +87,8 @@
 \r
 /* Stores the critical section nesting.  This must not be initialised to 0.\r
 It will be initialised when a task starts. */\r
-#define portNO_CRITICAL_NESTING                                        ( ( unsigned portBASE_TYPE ) 0 )\r
-unsigned portBASE_TYPE uxCriticalNesting = 0x50;\r
+#define portNO_CRITICAL_NESTING                                        ( ( UBaseType_t ) 0 )\r
+UBaseType_t uxCriticalNesting = 0x50;\r
 \r
 \r
 /*\r
@@ -107,10 +108,10 @@ extern void vPortStart( void );
 /*\r
  * See header file for description.\r
  */\r
-portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters )\r
+StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters )\r
 {\r
-unsigned short usAddress;\r
-portSTACK_TYPE *pxTopOfHardwareStack;\r
+uint16_t usAddress;\r
+StackType_t *pxTopOfHardwareStack;\r
 \r
        /* Place a few bytes of known values on the bottom of the stack.\r
        This is just useful for debugging. */\r
@@ -148,12 +149,12 @@ portSTACK_TYPE *pxTopOfHardwareStack;
 \r
        The first part of the stack is the hardware stack.  Place the start\r
        address of the task on the hardware stack. */\r
-       usAddress = ( unsigned short ) pxCode;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned short ) 0x00ff );\r
+       usAddress = ( uint16_t ) pxCode;\r
+       *pxTopOfStack = ( StackType_t ) ( usAddress & ( uint16_t ) 0x00ff );\r
        pxTopOfStack--;\r
 \r
        usAddress >>= 8;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned short ) 0x00ff );\r
+       *pxTopOfStack = ( StackType_t ) ( usAddress & ( uint16_t ) 0x00ff );\r
        pxTopOfStack--;\r
 \r
 \r
@@ -168,7 +169,7 @@ portSTACK_TYPE *pxTopOfHardwareStack;
        portSAVE_CONTEXT places the flags on the stack immediately after r0\r
        to ensure the interrupts get disabled as soon as possible, and so ensuring\r
        the stack use is minimal should a context switch interrupt occur. */\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x00;        /* R0 */\r
+       *pxTopOfStack = ( StackType_t ) 0x00;   /* R0 */\r
        pxTopOfStack--;\r
        *pxTopOfStack = portFLAGS_INT_ENABLED;\r
        pxTopOfStack--;\r
@@ -176,88 +177,88 @@ portSTACK_TYPE *pxTopOfHardwareStack;
        /* Next place the address of the hardware stack.  This is required so\r
        the AVR stack pointer can be restored to point to the hardware stack. */\r
        pxTopOfHardwareStack -= portBYTES_USED_BY_RETURN_ADDRESS;\r
-       usAddress = ( unsigned short ) pxTopOfHardwareStack;\r
+       usAddress = ( uint16_t ) pxTopOfHardwareStack;\r
 \r
        /* SPL */\r
-       *pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned short ) 0x00ff );\r
+       *pxTopOfStack = ( StackType_t ) ( usAddress & ( uint16_t ) 0x00ff );\r
        pxTopOfStack--;\r
 \r
        /* SPH */\r
        usAddress >>= 8;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned short ) 0x00ff );\r
+       *pxTopOfStack = ( StackType_t ) ( usAddress & ( uint16_t ) 0x00ff );\r
        pxTopOfStack--;\r
 \r
 \r
 \r
 \r
        /* Now the remaining registers. */\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x01;        /* R1 */\r
+       *pxTopOfStack = ( StackType_t ) 0x01;   /* R1 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x02;        /* R2 */\r
+       *pxTopOfStack = ( StackType_t ) 0x02;   /* R2 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x03;        /* R3 */\r
+       *pxTopOfStack = ( StackType_t ) 0x03;   /* R3 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x04;        /* R4 */\r
+       *pxTopOfStack = ( StackType_t ) 0x04;   /* R4 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x05;        /* R5 */\r
+       *pxTopOfStack = ( StackType_t ) 0x05;   /* R5 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x06;        /* R6 */\r
+       *pxTopOfStack = ( StackType_t ) 0x06;   /* R6 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x07;        /* R7 */\r
+       *pxTopOfStack = ( StackType_t ) 0x07;   /* R7 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x08;        /* R8 */\r
+       *pxTopOfStack = ( StackType_t ) 0x08;   /* R8 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x09;        /* R9 */\r
+       *pxTopOfStack = ( StackType_t ) 0x09;   /* R9 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x10;        /* R10 */\r
+       *pxTopOfStack = ( StackType_t ) 0x10;   /* R10 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x11;        /* R11 */\r
+       *pxTopOfStack = ( StackType_t ) 0x11;   /* R11 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x12;        /* R12 */\r
+       *pxTopOfStack = ( StackType_t ) 0x12;   /* R12 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x13;        /* R13 */\r
+       *pxTopOfStack = ( StackType_t ) 0x13;   /* R13 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x14;        /* R14 */\r
+       *pxTopOfStack = ( StackType_t ) 0x14;   /* R14 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x15;        /* R15 */\r
+       *pxTopOfStack = ( StackType_t ) 0x15;   /* R15 */\r
        pxTopOfStack--;\r
 \r
        /* Place the parameter on the stack in the expected location. */\r
-       usAddress = ( unsigned short ) pvParameters;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned short ) 0x00ff );\r
+       usAddress = ( uint16_t ) pvParameters;\r
+       *pxTopOfStack = ( StackType_t ) ( usAddress & ( uint16_t ) 0x00ff );\r
        pxTopOfStack--;\r
 \r
        usAddress >>= 8;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned short ) 0x00ff );\r
+       *pxTopOfStack = ( StackType_t ) ( usAddress & ( uint16_t ) 0x00ff );\r
        pxTopOfStack--;\r
 \r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x18;        /* R18 */\r
+       *pxTopOfStack = ( StackType_t ) 0x18;   /* R18 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x19;        /* R19 */\r
+       *pxTopOfStack = ( StackType_t ) 0x19;   /* R19 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x20;        /* R20 */\r
+       *pxTopOfStack = ( StackType_t ) 0x20;   /* R20 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x21;        /* R21 */\r
+       *pxTopOfStack = ( StackType_t ) 0x21;   /* R21 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x22;        /* R22 */\r
+       *pxTopOfStack = ( StackType_t ) 0x22;   /* R22 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x23;        /* R23 */\r
+       *pxTopOfStack = ( StackType_t ) 0x23;   /* R23 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x24;        /* R24 */\r
+       *pxTopOfStack = ( StackType_t ) 0x24;   /* R24 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x25;        /* R25 */\r
+       *pxTopOfStack = ( StackType_t ) 0x25;   /* R25 */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x26;        /* R26 X */\r
+       *pxTopOfStack = ( StackType_t ) 0x26;   /* R26 X */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x27;        /* R27 */\r
+       *pxTopOfStack = ( StackType_t ) 0x27;   /* R27 */\r
        pxTopOfStack--;\r
 \r
        /* The Y register is not stored as it is used as the software stack and\r
        gets saved into the task control block. */\r
 \r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x30;        /* R30 Z */\r
+       *pxTopOfStack = ( StackType_t ) 0x30;   /* R30 Z */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) 0x031;       /* R31 */\r
+       *pxTopOfStack = ( StackType_t ) 0x031;  /* R31 */\r
 \r
        pxTopOfStack--;\r
        *pxTopOfStack = portNO_CRITICAL_NESTING;        /* Critical nesting is zero when the task starts. */\r
@@ -268,7 +269,7 @@ portSTACK_TYPE *pxTopOfHardwareStack;
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-portBASE_TYPE xPortStartScheduler( void )\r
+BaseType_t xPortStartScheduler( void )\r
 {\r
        /* Setup the hardware to generate the tick. */\r
        prvSetupTimerInterrupt();\r
@@ -295,8 +296,8 @@ void vPortEndScheduler( void )
  */\r
 static void prvSetupTimerInterrupt( void )\r
 {\r
-unsigned long ulCompareMatch;\r
-unsigned char ucHighByte, ucLowByte;\r
+uint32_t ulCompareMatch;\r
+uint8_t ucHighByte, ucLowByte;\r
 \r
        /* Using 16bit timer 1 to generate the tick.  Correct fuses must be\r
        selected for the configCPU_CLOCK_HZ clock. */\r
@@ -307,13 +308,13 @@ unsigned char ucHighByte, ucLowByte;
        ulCompareMatch /= portCLOCK_PRESCALER;\r
 \r
        /* Adjust for correct value. */\r
-       ulCompareMatch -= ( unsigned long ) 1;\r
+       ulCompareMatch -= ( uint32_t ) 1;\r
 \r
        /* Setup compare match value for compare match A.  Interrupts are disabled\r
        before this is called so we need not worry here. */\r
-       ucLowByte = ( unsigned char ) ( ulCompareMatch & ( unsigned long ) 0xff );\r
+       ucLowByte = ( uint8_t ) ( ulCompareMatch & ( uint32_t ) 0xff );\r
        ulCompareMatch >>= 8;\r
-       ucHighByte = ( unsigned char ) ( ulCompareMatch & ( unsigned long ) 0xff );\r
+       ucHighByte = ( uint8_t ) ( ulCompareMatch & ( uint32_t ) 0xff );\r
        OCR1AH = ucHighByte;\r
        OCR1AL = ucLowByte;\r
 \r