diff -rbupN org_avr/FreeRTOSConfig.h "C:\\Users\\bill\\Documents\\Arduino\\libraries\\FreeRTOS_AVR\\utility/FreeRTOSConfig.h"
--- org_avr/FreeRTOSConfig.h	2014-04-24 07:08:07.530175100 -0700
+++ "C:\\Users\\bill\\Documents\\Arduino\\libraries\\FreeRTOS_AVR\\utility/FreeRTOSConfig.h"	2014-08-14 09:10:57.944051100 -0700
@@ -82,18 +82,25 @@
 
 #define configUSE_PREEMPTION		1
 #define configUSE_IDLE_HOOK			1
+#if 1  // WHG For Arduino
+#define configUSE_TICK_HOOK			1
+#define configCPU_CLOCK_HZ			( ( unsigned long ) F_CPU )
+#define configTICK_RATE_HZ			( ( TickType_t ) (F_CPU/16384L))
+#else  // WHG
 #define configUSE_TICK_HOOK			0
 #define configCPU_CLOCK_HZ			( ( unsigned long ) 8000000 )
 #define configTICK_RATE_HZ			( ( TickType_t ) 1000 )
+#endif  // WHG
 #define configMAX_PRIORITIES		( 4 )
-#define configMINIMAL_STACK_SIZE	( ( unsigned short ) 85 )
-#define configTOTAL_HEAP_SIZE		( (size_t ) ( 1500 ) )
+#define configMINIMAL_STACK_SIZE	( ( unsigned short ) 100 )
+#define configTOTAL_HEAP_SIZE		( (size_t ) ( 0 ) )  // WHG type 3 heap
 #define configMAX_TASK_NAME_LEN		( 8 )
 #define configUSE_TRACE_FACILITY	0
 #define configUSE_16_BIT_TICKS		1
 #define configIDLE_SHOULD_YIELD		1
 #define configQUEUE_REGISTRY_SIZE	0
 
+#define configUSE_COUNTING_SEMAPHORES 1  // WHG
 /* Co-routine definitions. */
 #define configUSE_CO_ROUTINES 		1
 #define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
@@ -101,13 +108,33 @@
 /* Set the following definitions to 1 to include the API function, or zero
 to exclude the API function. */
 
-#define INCLUDE_vTaskPrioritySet		0
-#define INCLUDE_uxTaskPriorityGet		0
+#define INCLUDE_vTaskPrioritySet		1  // WHG
+#define INCLUDE_uxTaskPriorityGet		1  // WHG
 #define INCLUDE_vTaskDelete				1
 #define INCLUDE_vTaskCleanUpResources	0
 #define INCLUDE_vTaskSuspend			0
 #define INCLUDE_vTaskDelayUntil			1
 #define INCLUDE_vTaskDelay				1
 
-
+/* WHG definitions for Arduino */
+#define configUSE_MUTEXES        1
+#define INCLUDE_uxTaskGetStackHighWaterMark 1
+#define INCLUDE_xTaskGetIdleTaskHandle 1
+#define configUSE_MALLOC_FAILED_HOOK	1
+#define configCHECK_FOR_STACK_OVERFLOW 2
+#define configENABLE_BACKWARD_COMPATIBILITY 0
+/* Normal assert() semantics without relying on the provision of an assert.h
+header file. */
+// WHG
+// to disable configASSERT comment out all versions.
+//
+// FreeRTOS default configASSERT
+//#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
+
+void assertBlink();
+#define configASSERT( x ) if( ( x ) == 0 ) assertBlink()
+
+void assertMsg(const char*, int);
+//#define configASSERT( x ) if( ( x ) == 0 ) assertMsg(__FILE__,__LINE__)
+//////////////////////WHG/////////////////////////////
 #endif /* FREERTOS_CONFIG_H */
diff -rbupN org_avr/port.c "C:\\Users\\bill\\Documents\\Arduino\\libraries\\FreeRTOS_AVR\\utility/port.c"
--- org_avr/port.c	2014-04-24 07:08:18.219385100 -0700
+++ "C:\\Users\\bill\\Documents\\Arduino\\libraries\\FreeRTOS_AVR\\utility/port.c"	2014-08-14 05:24:51.827408300 -0700
@@ -393,7 +393,43 @@ void vPortYieldFromTick( void )
 	asm volatile ( "ret" );
 }
 /*-----------------------------------------------------------*/
+#if 1 // WHG
+/*-----------------------------------------------------------*/
+/*
+ * Setup timer 0 compare match A to generate a tick interrupt.
+ */
+static void prvSetupTimerInterrupt( void )
+{
+  OCR0A = 1;
+  TIMSK0  |= (1 << OCIE0A);
+}
+#if configUSE_PREEMPTION == 1
 
+	/*
+	 * Tick ISR for preemptive scheduler.  We can use a naked attribute as
+	 * the context is saved at the start of vPortYieldFromTick().  The tick
+	 * count is incremented after the context is saved.
+	 */
+ISR(TIMER0_COMPA_vect, ISR_NAKED)
+
+{
+  vPortYieldFromTick();
+  asm volatile ( "reti" );
+}
+#else
+
+	/*
+	 * Tick ISR for the cooperative scheduler.  All this does is increment the
+	 * tick count.  We don't need to switch context, this can only be done by
+	 * manual calls to taskYIELD();
+	 */
+ISR(TIMER0_COMPA_vect)
+
+{
+	vTaskIncrementTick();
+}
+#endif // portUSE_PREEMPTION
+#else  // WHG
 /*
  * Setup timer 1 compare match A to generate a tick interrupt.
  */
@@ -431,6 +467,7 @@ uint8_t ucHighByte, ucLowByte;
 	ucLowByte |= portCOMPARE_MATCH_A_INTERRUPT_ENABLE;
 	TIMSK = ucLowByte;
 }
+
 /*-----------------------------------------------------------*/
 
 #if configUSE_PREEMPTION == 1
@@ -459,6 +496,6 @@ uint8_t ucHighByte, ucLowByte;
 		xTaskIncrementTick();
 	}
 #endif
-
+#endif // WHG
 
 	
