/*\r
- FreeRTOS V7.5.2 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+ FreeRTOS V7.6.0 - Copyright (C) 2013 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
*----------------------------------------------------------*/\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
\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
/*\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
\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
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
/* 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
}\r
/*-----------------------------------------------------------*/\r
\r
-portBASE_TYPE xPortStartScheduler( void )\r
+BaseType_t xPortStartScheduler( void )\r
{\r
/* Setup the hardware to generate the tick. */\r
prvSetupTimerInterrupt();\r
*/\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
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