]> git.sur5r.net Git - freertos/commitdiff
SAM4L tickless implementation: Bug fix and update the demo project to exercise the...
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 16 Sep 2014 12:24:14 +0000 (12:24 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 16 Sep 2014 12:24:14 +0000 (12:24 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2305 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/FreeRTOS_Demo.cproj
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/SAM4L_low_power_tick_management.c
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf.h
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/eic/eic.c [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/eic/eic.h [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/config/conf_board.h
FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/main.c

index 44f28a52db7468ca3d517faad768e9a6aa6163da..ee91e87e1dc4f285c4f6205daef4771970eefc55 100644 (file)
@@ -2,7 +2,7 @@
 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <PropertyGroup>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectVersion>6.1</ProjectVersion>\r
+    <ProjectVersion>6.2</ProjectVersion>\r
     <ToolchainName>com.Atmel.ARMGCC.C</ToolchainName>\r
     <ProjectGuid>{dfc77570-bc67-4ee7-8143-c34e75167169}</ProjectGuid>\r
     <avrdevice>ATSAM4LC4C</avrdevice>\r
     <AsfVersion>3.5.1</AsfVersion>\r
     <AsfFrameworkConfig>\r
       <framework-data>\r
-        <options>\r
-          <option id="common.boards" value="Add" config="" content-id="Atmel.ASF" />\r
-          <option id="common.services.basic.clock" value="Add" config="" content-id="Atmel.ASF" />\r
-          <option id="common.services.ioport" value="Add" config="" content-id="Atmel.ASF" />\r
-          <option id="common.services.basic.sleepmgr" value="Add" config="" content-id="Atmel.ASF" />\r
-          <option id="sam.drivers.ast" value="Add" config="" content-id="Atmel.ASF" />\r
-          <option id="sam.drivers.bpm" value="Add" config="" content-id="Atmel.ASF" />\r
-        </options>\r
-        <configurations>\r
-          <configuration key="config.compiler.armgcc.create_aux" value="no" default="no" content-id="Atmel.ASF" />\r
-          <configuration key="config.compiler.iarewarm.create_aux" value="no" default="no" content-id="Atmel.ASF" />\r
-          <configuration key="config.compiler.as5_arm.create_aux" value="no" default="no" content-id="Atmel.ASF" />\r
-        </configurations>\r
-        <files>\r
-          <file path="src/asf/common/boards/board.h" framework="" version="3.5.1" source="common/boards/board.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/dfll.h" framework="" version="3.5.1" source="common/services/clock/dfll.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/genclk.h" framework="" version="3.5.1" source="common/services/clock/genclk.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/osc.h" framework="" version="3.5.1" source="common/services/clock/osc.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/pll.h" framework="" version="3.5.1" source="common/services/clock/pll.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/sam4l/dfll.c" framework="" version="3.5.1" source="common/services/clock/sam4l/dfll.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/sam4l/dfll.h" framework="" version="3.5.1" source="common/services/clock/sam4l/dfll.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/sam4l/genclk.h" framework="" version="3.5.1" source="common/services/clock/sam4l/genclk.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/sam4l/osc.c" framework="" version="3.5.1" source="common/services/clock/sam4l/osc.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/sam4l/osc.h" framework="" version="3.5.1" source="common/services/clock/sam4l/osc.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/sam4l/pll.c" framework="" version="3.5.1" source="common/services/clock/sam4l/pll.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/sam4l/pll.h" framework="" version="3.5.1" source="common/services/clock/sam4l/pll.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/sam4l/sysclk.c" framework="" version="3.5.1" source="common/services/clock/sam4l/sysclk.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/sam4l/sysclk.h" framework="" version="3.5.1" source="common/services/clock/sam4l/sysclk.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/clock/sysclk.h" framework="" version="3.5.1" source="common/services/clock/sysclk.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/ioport/ioport.h" framework="" version="3.5.1" source="common/services/ioport/ioport.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/ioport/sam/ioport_gpio.h" framework="" version="3.5.1" source="common/services/ioport/sam/ioport_gpio.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/sleepmgr/sam4l/sleepmgr.c" framework="" version="3.5.1" source="common/services/sleepmgr/sam4l/sleepmgr.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/sleepmgr/sam4l/sleepmgr.h" framework="" version="3.5.1" source="common/services/sleepmgr/sam4l/sleepmgr.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/services/sleepmgr/sleepmgr.h" framework="" version="3.5.1" source="common/services/sleepmgr/sleepmgr.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/utils/interrupt.h" framework="" version="3.5.1" source="common/utils/interrupt.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/utils/interrupt/interrupt_sam_nvic.c" framework="" version="3.5.1" source="common/utils/interrupt/interrupt_sam_nvic.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/utils/interrupt/interrupt_sam_nvic.h" framework="" version="3.5.1" source="common/utils/interrupt/interrupt_sam_nvic.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/common/utils/parts.h" framework="" version="3.5.1" source="common/utils/parts.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/boards/sam4l_ek/init.c" framework="" version="3.5.1" source="sam/boards/sam4l_ek/init.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/boards/sam4l_ek/sam4l_ek.h" framework="" version="3.5.1" source="sam/boards/sam4l_ek/sam4l_ek.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/drivers/bpm/bpm.c" framework="" version="3.5.1" source="sam/drivers/bpm/bpm.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/drivers/bpm/bpm.h" framework="" version="3.5.1" source="sam/drivers/bpm/bpm.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/drivers/bpm/sleep.h" framework="" version="3.5.1" source="sam/drivers/bpm/sleep.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/drivers/flashcalw/flashcalw.c" framework="" version="3.5.1" source="sam/drivers/flashcalw/flashcalw.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/drivers/flashcalw/flashcalw.h" framework="" version="3.5.1" source="sam/drivers/flashcalw/flashcalw.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/lcdca_example.c" framework="" version="3.5.1" source="sam/drivers/lcdca/example/lcdca_example.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/config/conf_board.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_board.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/config/conf_clock.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_clock.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/config/conf_example.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_example.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/config/conf_sleepmgr.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_sleepmgr.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/cmsis/sam4l/include/sam4l.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/include/sam4l.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/cmsis/sam4l/include/sam4l_patch_asf.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/include/sam4l_patch_asf.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.c" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/exceptions.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/exceptions.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/gcc/startup_sam4l.c" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/gcc/startup_sam4l.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/system_sam4l.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/system_sam4l.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/compiler.h" framework="" version="3.5.1" source="sam/utils/compiler.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/header_files/io.h" framework="" version="3.5.1" source="sam/utils/header_files/io.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld" framework="" version="3.5.1" source="sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/make/Makefile.in" framework="" version="3.5.1" source="sam/utils/make/Makefile.in" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/preprocessor/mrepeat.h" framework="" version="3.5.1" source="sam/utils/preprocessor/mrepeat.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/preprocessor/preprocessor.h" framework="" version="3.5.1" source="sam/utils/preprocessor/preprocessor.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/preprocessor/stringz.h" framework="" version="3.5.1" source="sam/utils/preprocessor/stringz.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/preprocessor/tpaste.h" framework="" version="3.5.1" source="sam/utils/preprocessor/tpaste.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/status_codes.h" framework="" version="3.5.1" source="sam/utils/status_codes.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/utils/syscalls/gcc/syscalls.c" framework="" version="3.5.1" source="sam/utils/syscalls/gcc/syscalls.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf" framework="" version="3.5.1" source="thirdparty/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/CMSIS/Include/arm_math.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/arm_math.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/CMSIS/Include/core_cm4.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cm4.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/CMSIS/Include/core_cm4_simd.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cm4_simd.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/CMSIS/Include/core_cmFunc.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cmFunc.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/CMSIS/Include/core_cmInstr.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cmInstr.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/CMSIS/Lib/GCC/libarm_cortexM4l_math.a" framework="" version="3.5.1" source="thirdparty/CMSIS/Lib/GCC/libarm_cortexM4l_math.a" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/CMSIS/README.txt" framework="" version="3.5.1" source="thirdparty/CMSIS/README.txt" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/CMSIS/license.txt" framework="" version="3.5.1" source="thirdparty/CMSIS/license.txt" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/timers.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\timers.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/tasks.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\tasks.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/queue.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\queue.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/list.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\list.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/FreeRTOS_CLI.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\FreeRTOS_CLI.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/portable/memmang/heap_4.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\portable\memmang\heap_4.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/portable/gcc/arm_cm3/port.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\portable\gcc\arm_cm3\port.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/readme.txt" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\readme.txt" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/ATMEL-disclaimer.txt" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\ATMEL-disclaimer.txt" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/mpu_wrappers.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\mpu_wrappers.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/semphr.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\semphr.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/FreeRTOS.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\FreeRTOS.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/portable.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\portable.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/queue.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\queue.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/list.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\list.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/timers.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\timers.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/StackMacros.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\StackMacros.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/projdefs.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\projdefs.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/task.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\task.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/portable/gcc/arm_cm3/portmacro.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\portable\gcc\arm_cm3\portmacro.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/FreeRTOS_CLI.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\FreeRTOS_CLI.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/croutine.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\croutine.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/drivers/ast/ast.c" framework="" version="" source="sam\drivers\ast\ast.c" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/asf/sam/drivers/ast/ast.h" framework="" version="" source="sam\drivers\ast\ast.h" changed="False" content-id="Atmel.ASF" />\r
-          <file path="src/config/conf_ast.h" framework="" version="" source="sam\drivers\ast\module_config\conf_ast.h" changed="False" content-id="Atmel.ASF" />\r
-        </files>\r
-        <documentation help="" />\r
-        <offline-documentation help="" />\r
-        <dependencies>\r
-          <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.5.1" />\r
-        </dependencies>\r
-      </framework-data>\r
+  <options>\r
+    <option id="common.boards" value="Add" config="" content-id="Atmel.ASF" />\r
+    <option id="common.services.basic.clock" value="Add" config="" content-id="Atmel.ASF" />\r
+    <option id="common.services.ioport" value="Add" config="" content-id="Atmel.ASF" />\r
+    <option id="common.services.basic.sleepmgr" value="Add" config="" content-id="Atmel.ASF" />\r
+    <option id="sam.drivers.ast" value="Add" config="" content-id="Atmel.ASF" />\r
+    <option id="sam.drivers.bpm" value="Add" config="" content-id="Atmel.ASF" />\r
+    <option id="sam.drivers.eic" value="Add" config="" content-id="Atmel.ASF" />\r
+  </options>\r
+  <configurations>\r
+    <configuration key="config.compiler.armgcc.create_aux" value="no" default="no" content-id="Atmel.ASF" />\r
+    <configuration key="config.compiler.iarewarm.create_aux" value="no" default="no" content-id="Atmel.ASF" />\r
+    <configuration key="config.compiler.as5_arm.create_aux" value="no" default="no" content-id="Atmel.ASF" />\r
+  </configurations>\r
+  <files>\r
+    <file path="src/asf/common/boards/board.h" framework="" version="3.5.1" source="common/boards/board.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/dfll.h" framework="" version="3.5.1" source="common/services/clock/dfll.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/genclk.h" framework="" version="3.5.1" source="common/services/clock/genclk.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/osc.h" framework="" version="3.5.1" source="common/services/clock/osc.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/pll.h" framework="" version="3.5.1" source="common/services/clock/pll.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/sam4l/dfll.c" framework="" version="3.5.1" source="common/services/clock/sam4l/dfll.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/sam4l/dfll.h" framework="" version="3.5.1" source="common/services/clock/sam4l/dfll.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/sam4l/genclk.h" framework="" version="3.5.1" source="common/services/clock/sam4l/genclk.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/sam4l/osc.c" framework="" version="3.5.1" source="common/services/clock/sam4l/osc.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/sam4l/osc.h" framework="" version="3.5.1" source="common/services/clock/sam4l/osc.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/sam4l/pll.c" framework="" version="3.5.1" source="common/services/clock/sam4l/pll.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/sam4l/pll.h" framework="" version="3.5.1" source="common/services/clock/sam4l/pll.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/sam4l/sysclk.c" framework="" version="3.5.1" source="common/services/clock/sam4l/sysclk.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/sam4l/sysclk.h" framework="" version="3.5.1" source="common/services/clock/sam4l/sysclk.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/clock/sysclk.h" framework="" version="3.5.1" source="common/services/clock/sysclk.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/ioport/ioport.h" framework="" version="3.5.1" source="common/services/ioport/ioport.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/ioport/sam/ioport_gpio.h" framework="" version="3.5.1" source="common/services/ioport/sam/ioport_gpio.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/sleepmgr/sam4l/sleepmgr.c" framework="" version="3.5.1" source="common/services/sleepmgr/sam4l/sleepmgr.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/sleepmgr/sam4l/sleepmgr.h" framework="" version="3.5.1" source="common/services/sleepmgr/sam4l/sleepmgr.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/services/sleepmgr/sleepmgr.h" framework="" version="3.5.1" source="common/services/sleepmgr/sleepmgr.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/utils/interrupt.h" framework="" version="3.5.1" source="common/utils/interrupt.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/utils/interrupt/interrupt_sam_nvic.c" framework="" version="3.5.1" source="common/utils/interrupt/interrupt_sam_nvic.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/utils/interrupt/interrupt_sam_nvic.h" framework="" version="3.5.1" source="common/utils/interrupt/interrupt_sam_nvic.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/common/utils/parts.h" framework="" version="3.5.1" source="common/utils/parts.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/boards/sam4l_ek/init.c" framework="" version="3.5.1" source="sam/boards/sam4l_ek/init.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/boards/sam4l_ek/sam4l_ek.h" framework="" version="3.5.1" source="sam/boards/sam4l_ek/sam4l_ek.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/drivers/bpm/bpm.c" framework="" version="3.5.1" source="sam/drivers/bpm/bpm.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/drivers/bpm/bpm.h" framework="" version="3.5.1" source="sam/drivers/bpm/bpm.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/drivers/bpm/sleep.h" framework="" version="3.5.1" source="sam/drivers/bpm/sleep.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/drivers/flashcalw/flashcalw.c" framework="" version="3.5.1" source="sam/drivers/flashcalw/flashcalw.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/drivers/flashcalw/flashcalw.h" framework="" version="3.5.1" source="sam/drivers/flashcalw/flashcalw.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/lcdca_example.c" framework="" version="3.5.1" source="sam/drivers/lcdca/example/lcdca_example.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/config/conf_board.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_board.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/config/conf_clock.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_clock.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/config/conf_example.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_example.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/config/conf_sleepmgr.h" framework="" version="3.5.1" source="sam/drivers/lcdca/example/sam4lc4c_sam4l_ek/conf_sleepmgr.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/cmsis/sam4l/include/sam4l.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/include/sam4l.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/cmsis/sam4l/include/sam4l_patch_asf.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/include/sam4l_patch_asf.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.c" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/exceptions.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/exceptions.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/exceptions.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/gcc/startup_sam4l.c" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/gcc/startup_sam4l.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/cmsis/sam4l/source/templates/system_sam4l.h" framework="" version="3.5.1" source="sam/utils/cmsis/sam4l/source/templates/system_sam4l.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/compiler.h" framework="" version="3.5.1" source="sam/utils/compiler.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/header_files/io.h" framework="" version="3.5.1" source="sam/utils/header_files/io.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld" framework="" version="3.5.1" source="sam/utils/linker_scripts/sam4l/sam4l4/gcc/flash.ld" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/make/Makefile.in" framework="" version="3.5.1" source="sam/utils/make/Makefile.in" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/preprocessor/mrepeat.h" framework="" version="3.5.1" source="sam/utils/preprocessor/mrepeat.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/preprocessor/preprocessor.h" framework="" version="3.5.1" source="sam/utils/preprocessor/preprocessor.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/preprocessor/stringz.h" framework="" version="3.5.1" source="sam/utils/preprocessor/stringz.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/preprocessor/tpaste.h" framework="" version="3.5.1" source="sam/utils/preprocessor/tpaste.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/status_codes.h" framework="" version="3.5.1" source="sam/utils/status_codes.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/utils/syscalls/gcc/syscalls.c" framework="" version="3.5.1" source="sam/utils/syscalls/gcc/syscalls.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf" framework="" version="3.5.1" source="thirdparty/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/CMSIS/Include/arm_math.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/arm_math.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/CMSIS/Include/core_cm4.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cm4.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/CMSIS/Include/core_cm4_simd.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cm4_simd.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/CMSIS/Include/core_cmFunc.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cmFunc.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/CMSIS/Include/core_cmInstr.h" framework="" version="3.5.1" source="thirdparty/CMSIS/Include/core_cmInstr.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/CMSIS/Lib/GCC/libarm_cortexM4l_math.a" framework="" version="3.5.1" source="thirdparty/CMSIS/Lib/GCC/libarm_cortexM4l_math.a" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/CMSIS/README.txt" framework="" version="3.5.1" source="thirdparty/CMSIS/README.txt" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/CMSIS/license.txt" framework="" version="3.5.1" source="thirdparty/CMSIS/license.txt" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/timers.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\timers.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/tasks.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\tasks.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/queue.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\queue.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/list.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\list.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/FreeRTOS_CLI.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\FreeRTOS_CLI.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/portable/memmang/heap_4.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\portable\memmang\heap_4.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/portable/gcc/arm_cm3/port.c" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\portable\gcc\arm_cm3\port.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/readme.txt" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\readme.txt" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/ATMEL-disclaimer.txt" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\ATMEL-disclaimer.txt" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/mpu_wrappers.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\mpu_wrappers.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/semphr.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\semphr.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/FreeRTOS.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\FreeRTOS.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/portable.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\portable.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/queue.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\queue.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/list.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\list.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/timers.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\timers.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/StackMacros.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\StackMacros.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/projdefs.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\projdefs.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/task.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\task.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/portable/gcc/arm_cm3/portmacro.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\portable\gcc\arm_cm3\portmacro.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/FreeRTOS_CLI.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\FreeRTOS_CLI.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/thirdparty/freertos/freertos-7.3.0/source/include/croutine.h" framework="" version="" source="thirdparty\freertos\freertos-7.3.0\source\include\croutine.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/drivers/ast/ast.c" framework="" version="" source="sam\drivers\ast\ast.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/asf/sam/drivers/ast/ast.h" framework="" version="" source="sam\drivers\ast\ast.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/config/conf_ast.h" framework="" version="" source="sam\drivers\ast\module_config\conf_ast.h" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/ASF/sam/drivers/eic/eic.c" framework="" version="3.6.0" source="sam\drivers\eic\eic.c" changed="False" content-id="Atmel.ASF" />\r
+    <file path="src/ASF/sam/drivers/eic/eic.h" framework="" version="3.6.0" source="sam\drivers\eic\eic.h" changed="False" content-id="Atmel.ASF" />\r
+  </files>\r
+  <documentation help="" />\r
+  <offline-documentation help="" />\r
+  <dependencies>\r
+    <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.6.0" />\r
+  </dependencies>\r
+</framework-data>\r
     </AsfFrameworkConfig>\r
     <avrtoolinterface>SWD</avrtoolinterface>\r
     <avrtool>com.atmel.avrdbg.tool.samice</avrtool>\r
     <com_atmel_avrdbg_tool_samice>\r
       <ToolType>com.atmel.avrdbg.tool.samice</ToolType>\r
       <ToolName>J-Link</ToolName>\r
-      <ToolNumber>000480008423</ToolNumber>\r
+      <ToolNumber>480008423</ToolNumber>\r
       <Channel>\r
         <host>127.0.0.1</host>\r
         <port>1882</port>\r
           <JtagDevicesAfter>0</JtagDevicesAfter>\r
           <JtagInstrBitsBefore>0</JtagInstrBitsBefore>\r
           <JtagInstrBitsAfter>0</JtagInstrBitsAfter>\r
-          <SwdClock>32000</SwdClock>\r
+          <SwdClock>5950000</SwdClock>\r
         </InterfaceProperties>\r
       </ToolOptions>\r
     </com_atmel_avrdbg_tool_samice>\r
       <Value>../src</Value>\r
       <Value>../src/config</Value>\r
       <Value>../src/asf/sam/drivers/ast</Value>\r
+      <Value>../src/ASF/sam/drivers/eic</Value>\r
     </ListValues>\r
   </armgcc.compiler.directories.IncludePaths>\r
   <armgcc.compiler.optimization.level>Optimize for size (-Os)</armgcc.compiler.optimization.level>\r
   <armgcc.assembler.general.AssemblerFlags>-D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__</armgcc.assembler.general.AssemblerFlags>\r
   <armgcc.assembler.general.IncludePaths>\r
     <ListValues>\r
-      <Value>../src/asf/sam/utils/preprocessor</Value>\r
-      <Value>../src/asf/sam/drivers/lcdca/example/sam4lc4c_sam4l_ek</Value>\r
-      <Value>../src/asf/sam/utils/cmsis/sam4l/include</Value>\r
-      <Value>../src/asf/common/services/sleepmgr</Value>\r
-      <Value>../src/asf/sam/utils</Value>\r
-      <Value>../src/asf/common/boards</Value>\r
-      <Value>../src/asf/sam/drivers/flashcalw</Value>\r
-      <Value>../src/asf/sam/boards</Value>\r
-      <Value>../src/asf/common/services/clock</Value>\r
-      <Value>../src/asf/sam/drivers/bpm</Value>\r
-      <Value>../src/asf/thirdparty/CMSIS/Include</Value>\r
-      <Value>../src/asf/sam/boards/sam4l_ek</Value>\r
-      <Value>../src/asf/sam/utils/header_files</Value>\r
-      <Value>../src/asf/common/services/ioport</Value>\r
-      <Value>../src/asf/sam/utils/cmsis/sam4l/source/templates</Value>\r
-      <Value>../src/asf/common/utils</Value>\r
-      <Value>../src/asf/thirdparty/CMSIS/Lib/GCC</Value>\r
-      <Value>../src</Value>\r
-      <Value>../src/config</Value>\r
-      <Value>../src/asf/sam/drivers/ast</Value>\r
-      <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel</Value>\r
-      <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include</Value>\r
-      <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL</Value>\r
-      <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4l\include</Value>\r
+      <Value>../src/ASF/sam/drivers/eic</Value>\r
     </ListValues>\r
   </armgcc.assembler.general.IncludePaths>\r
   <armgcc.preprocessingassembler.general.AssemblerFlags>-DARM_MATH_CM4=true -DBOARD=SAM4L_EK -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__</armgcc.preprocessingassembler.general.AssemblerFlags>\r
       <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include</Value>\r
       <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL</Value>\r
       <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4l\include</Value>\r
+      <Value>../src/ASF/sam/drivers/eic</Value>\r
     </ListValues>\r
   </armgcc.preprocessingassembler.general.IncludePaths>\r
 </ArmGcc>\r
       <Value>../../../Source/include</Value>\r
       <Value>../../../Source/portable/GCC/ARM_CM3</Value>\r
       <Value>../../Common/include</Value>\r
+      <Value>../src/ASF/sam/drivers/eic</Value>\r
     </ListValues>\r
   </armgcc.compiler.directories.IncludePaths>\r
   <armgcc.compiler.optimization.OtherFlags>-fdata-sections</armgcc.compiler.optimization.OtherFlags>\r
   <armgcc.assembler.general.AssemblerFlags>-D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__ -D__ATSAM4LC4C__</armgcc.assembler.general.AssemblerFlags>\r
   <armgcc.assembler.general.IncludePaths>\r
     <ListValues>\r
-      <Value>../src/asf/sam/utils/preprocessor</Value>\r
-      <Value>../src/asf/sam/drivers/lcdca/example/sam4lc4c_sam4l_ek</Value>\r
-      <Value>../src/asf/sam/utils/cmsis/sam4l/include</Value>\r
-      <Value>../src/asf/common/services/sleepmgr</Value>\r
-      <Value>../src/asf/sam/utils</Value>\r
-      <Value>../src/asf/common/boards</Value>\r
-      <Value>../src/asf/sam/drivers/flashcalw</Value>\r
-      <Value>../src/asf/sam/boards</Value>\r
-      <Value>../src/asf/common/services/clock</Value>\r
-      <Value>../src/asf/sam/drivers/bpm</Value>\r
-      <Value>../src/asf/thirdparty/CMSIS/Include</Value>\r
-      <Value>../src/asf/sam/boards/sam4l_ek</Value>\r
-      <Value>../src/asf/sam/utils/header_files</Value>\r
-      <Value>../src/asf/common/services/ioport</Value>\r
-      <Value>../src/asf/sam/utils/cmsis/sam4l/source/templates</Value>\r
-      <Value>../src/asf/common/utils</Value>\r
-      <Value>../src/asf/thirdparty/CMSIS/Lib/GCC</Value>\r
-      <Value>../src</Value>\r
-      <Value>../src/config</Value>\r
-      <Value>../src/asf/sam/drivers/ast</Value>\r
-      <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel</Value>\r
-      <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include</Value>\r
-      <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL</Value>\r
-      <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4l\include</Value>\r
+      <Value>../src/ASF/sam/drivers/eic</Value>\r
     </ListValues>\r
   </armgcc.assembler.general.IncludePaths>\r
   <armgcc.assembler.debugging.DebugLevel>Default (-g)</armgcc.assembler.debugging.DebugLevel>\r
       <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\CMSIS\Include</Value>\r
       <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL</Value>\r
       <Value>%24(ToolchainDir)\..\..\CMSIS_Atmel\Device\ATMEL\sam4l\include</Value>\r
+      <Value>../src/ASF/sam/drivers/eic</Value>\r
     </ListValues>\r
   </armgcc.preprocessingassembler.general.IncludePaths>\r
   <armgcc.preprocessingassembler.debugging.DebugLevel>Default (-Wa,-g)</armgcc.preprocessingassembler.debugging.DebugLevel>\r
     <Folder Include="src\asf\sam\drivers\" />\r
     <Folder Include="src\asf\sam\drivers\ast\" />\r
     <Folder Include="src\asf\sam\drivers\bpm\" />\r
+    <Folder Include="src\asf\sam\drivers\eic\" />\r
     <Folder Include="src\asf\sam\drivers\flashcalw\" />\r
     <Folder Include="src\asf\sam\utils\" />\r
     <Folder Include="src\asf\sam\utils\cmsis\" />\r
       <SubType>compile</SubType>\r
       <Link>src\Common-Demo-Source\semtest.c</Link>\r
     </Compile>\r
+    <Compile Include="src\asf\sam\drivers\eic\eic.c">\r
+      <SubType>compile</SubType>\r
+    </Compile>\r
+    <None Include="src\asf\sam\drivers\eic\eic.h">\r
+      <SubType>compile</SubType>\r
+    </None>\r
     <Compile Include="src\config\FreeRTOSConfig.h">\r
       <SubType>compile</SubType>\r
     </Compile>\r
index 90521d5c3155cf095b36813c1976269802e9a286..42a921282dbb0ec18501ea9e5c9010781c18dd9b 100644 (file)
@@ -377,6 +377,7 @@ enum sleepmgr_mode xSleepMode;
                                ulAlarmValue = ulAlarmValueForOneTick;\r
                                ulCompleteTickPeriods++;\r
                        }\r
+                       ast_write_counter_value( AST, 0 );\r
                        ast_write_alarm0_value( AST, ulAlarmValue );\r
                }\r
 \r
index 5af6233541f988c7b123e04eb4b209353ad0e4da..7ad1867d207551461abefb838d026e285a5149d3 100644 (file)
@@ -59,6 +59,9 @@
 #include <compiler.h>\r
 #include <status_codes.h>\r
 \r
+// From module: EIC - External Interrupt Controller\r
+#include <eic.h>\r
+\r
 // From module: FLASHCALW Controller Software Driver\r
 #include <flashcalw.h>\r
 \r
@@ -68,7 +71,7 @@
 // From module: IOPORT - General purpose I/O service\r
 #include <ioport.h>\r
 \r
-// From module: Interrupt management - SAM3 implementation\r
+// From module: Interrupt management - SAM implementation\r
 #include <interrupt.h>\r
 \r
 // From module: Part identification macros\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/eic/eic.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/eic/eic.c
new file mode 100644 (file)
index 0000000..409e8ae
--- /dev/null
@@ -0,0 +1,244 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief EIC driver for SAM\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#include "eic.h"\r
+#include "sysclk.h"\r
+#include "sleepmgr.h"\r
+\r
+/// @cond 0\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+/**INDENT-ON**/\r
+/// @endcond\r
+\r
+/**\r
+ * \defgroup sam_drivers_eic_group External Interrupt Controller(EIC)\r
+ *\r
+ * See \ref sam_eic_quickstart.\r
+ *\r
+ * EIC allows pins to be configured as external interrupts.\r
+ *\r
+ * @{\r
+ */\r
+\r
+\r
+/**\r
+ * \internal\r
+ * \brief EIC callback function pointer array\r
+ */\r
+eic_callback_t eic_callback_pointer[EIC_NUMBER_OF_LINES];\r
+\r
+/**\r
+ * \brief Write the EIC hardware with specified configuration value.\r
+ *\r
+ * \param eic Base address of the EIC module\r
+ * \param eic_line_conf Configuration parameters of the EIC module\r
+ * (see \ref eic_line_config)\r
+ * \param line_number Number of line to config\r
+ */\r
+void eic_line_set_config(Eic *eic, uint8_t line_number,\r
+       struct eic_line_config *eic_line_conf)\r
+{\r
+               /* Set up mode level */\r
+               eic->EIC_MODE = (eic_line_conf->eic_mode == EIC_MODE_LEVEL_TRIGGERED)\r
+                               ? (eic->EIC_MODE | (1 << line_number))\r
+                               : (eic->EIC_MODE & ~(1 << line_number));\r
+               /* Set up edge type */\r
+               eic->EIC_EDGE = (eic_line_conf->eic_edge == EIC_EDGE_RISING_EDGE)\r
+                               ? (eic->EIC_EDGE | (1 << line_number))\r
+                               : (eic->EIC_EDGE & ~(1 << line_number));\r
+               /* Set up level */\r
+               eic->EIC_LEVEL = (eic_line_conf->eic_level == EIC_LEVEL_HIGH_LEVEL)\r
+                               ? (eic->EIC_LEVEL | (1 << line_number))\r
+                               : (eic->EIC_LEVEL & ~(1 << line_number));\r
+               /* Set up if filter is used */\r
+               eic->EIC_FILTER = (eic_line_conf->eic_filter == EIC_FILTER_ENABLED)\r
+                               ? (eic->EIC_FILTER | (1 << line_number))\r
+                               : (eic->EIC_FILTER & ~(1 << line_number));\r
+               /* Set up which mode is used : asynchronous mode/ synchronous mode */\r
+               eic->EIC_ASYNC = (eic_line_conf->eic_async == EIC_ASYNCH_MODE)\r
+                               ? (eic->EIC_ASYNC | (1 << line_number))\r
+                               : (eic->EIC_ASYNC & ~(1 << line_number));\r
+\r
+}\r
+\r
+/**\r
+ * \brief Disable the EIC module\r
+ *\r
+ * \param eic Base address of the EIC module\r
+ */\r
+void eic_disable(Eic *eic)\r
+{\r
+       sysclk_disable_peripheral_clock(eic);\r
+       sleepmgr_unlock_mode(SLEEPMGR_BACKUP);\r
+}\r
+\r
+/**\r
+ * \brief Enable the EIC module\r
+ *\r
+ * \param eic Base address of the EIC module\r
+ */\r
+void eic_enable(Eic *eic)\r
+{\r
+       sysclk_enable_peripheral_clock(eic);\r
+       sleepmgr_lock_mode(SLEEPMGR_BACKUP);\r
+}\r
+\r
+/**\r
+ * \brief Set callback for given EIC line\r
+ *\r
+ * \param eic Base address of the EIC module\r
+ * \param line_number Number of line.\r
+ * \param callback callback function pointer.\r
+ * \param irq_line  interrupt line.\r
+ * \param irq_level interrupt level.\r
+ */\r
+void eic_line_set_callback(Eic *eic, uint8_t line_number,\r
+       eic_callback_t callback, uint8_t irq_line, uint8_t irq_level)\r
+{\r
+       eic_callback_pointer[line_number] = callback;\r
+       irq_register_handler((IRQn_Type)irq_line, irq_level);\r
+       eic_line_enable_interrupt(eic, line_number);\r
+}\r
+\r
+/**\r
+ * \internal\r
+ * \brief Common EIC line interrupt handler\r
+ *\r
+ * The optional callback used by the interrupt handler is set by the\r
+ * eic_line_set_callback() function.\r
+ *\r
+ * \param line_number EIC linel number to handle interrupt for\r
+ */\r
+static void eic_line_interrupt(uint8_t line_number)\r
+{\r
+       if (eic_callback_pointer[line_number]) {\r
+               eic_callback_pointer[line_number]();\r
+       } else {\r
+               Assert(false); /* Catch unexpected interrupt */\r
+       }\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for EIC NMI.\r
+ */\r
+void NMI_Handler(void)\r
+{\r
+       eic_line_interrupt(0);\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for EIC line 1.\r
+ */\r
+void EIC_1_Handler(void)\r
+{\r
+       eic_line_interrupt(1);\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for EIC line 2.\r
+ */\r
+void EIC_2_Handler(void)\r
+{\r
+       eic_line_interrupt(2);\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for EIC line 3.\r
+ */\r
+void EIC_3_Handler(void)\r
+{\r
+       eic_line_interrupt(3);\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for EIC line 4.\r
+ */\r
+void EIC_4_Handler(void)\r
+{\r
+       eic_line_interrupt(4);\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for EIC line 5.\r
+ */\r
+void EIC_5_Handler(void)\r
+{\r
+       eic_line_interrupt(5);\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for EIC line 6.\r
+ */\r
+void EIC_6_Handler(void)\r
+{\r
+       eic_line_interrupt(6);\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for EIC line 7.\r
+ */\r
+void EIC_7_Handler(void)\r
+{\r
+       eic_line_interrupt(7);\r
+}\r
+\r
+/**\r
+ * \brief Interrupt handler for EIC line 8.\r
+ */\r
+void EIC_8_Handler(void)\r
+{\r
+       eic_line_interrupt(8);\r
+}\r
+\r
+//@}\r
+\r
+/// @cond 0\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+/**INDENT-ON**/\r
+/// @endcond\r
diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/eic/eic.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4L_Atmel_Studio/src/asf/sam/drivers/eic/eic.h
new file mode 100644 (file)
index 0000000..09923f2
--- /dev/null
@@ -0,0 +1,310 @@
+/**\r
+ * \file\r
+ *\r
+ * \brief EIC driver for SAM\r
+ *\r
+ * Copyright (c) 2012 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+\r
+#ifndef EIC_H_INCLUDED\r
+#define EIC_H_INCLUDED\r
+\r
+#include "compiler.h"\r
+\r
+/// @cond 0\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+/**INDENT-ON**/\r
+/// @endcond\r
+\r
+/** Number of available EIC lines, device dependent. */\r
+#if SAM4L\r
+#define EIC_NUMBER_OF_LINES                 9\r
+#else\r
+#error  'This device does not support EIC driver'\r
+#endif\r
+\r
+/** \name External Interrupt lines */\r
+/* @{ */\r
+#define EXT_NMI     0\r
+#define EXT_INT1    1\r
+#define EXT_INT2    2\r
+#define EXT_INT3    3\r
+#define EXT_INT4    4\r
+#define EXT_INT5    5\r
+#define EXT_INT6    6\r
+#define EXT_INT7    7\r
+#define EXT_INT8    8\r
+/* @} */\r
+\r
+/** \name Mode Trigger Options */\r
+/* @{ */\r
+#define EIC_MODE_EDGE_TRIGGERED   0\r
+#define EIC_MODE_LEVEL_TRIGGERED  1\r
+/* @{ */\r
+\r
+/** \name Edge level Options */\r
+/* @{ */\r
+#define EIC_EDGE_FALLING_EDGE     0\r
+#define EIC_EDGE_RISING_EDGE      1\r
+/* @{ */\r
+\r
+/** \name Level Options */\r
+/* @{ */\r
+#define EIC_LEVEL_LOW_LEVEL       0\r
+#define EIC_LEVEL_HIGH_LEVEL      1\r
+/* @{ */\r
+\r
+/** \name Filter Options */\r
+/* @{ */\r
+#define EIC_FILTER_ENABLED        1\r
+#define EIC_FILTER_DISABLED       0\r
+/* @{ */\r
+\r
+/** \name Synch Mode Options */\r
+/* @{ */\r
+#define EIC_SYNCH_MODE            0\r
+#define EIC_ASYNCH_MODE           1\r
+/* @{ */\r
+\r
+/** Configuration parameters of the EIC module. */\r
+struct eic_line_config {\r
+       /** Mode : \ref EIC_MODE_EDGE_TRIGGERED or \ref EIC_MODE_LEVEL_TRIGGERED */\r
+       uint8_t eic_mode;\r
+       /** Edge : \ref EIC_EDGE_FALLING_EDGE or \ref EIC_EDGE_RISING_EDGE */\r
+       uint8_t eic_edge;\r
+       /** Level : \ref EIC_LEVEL_LOW_LEVEL or \ref EIC_LEVEL_HIGH_LEVEL */\r
+       uint8_t eic_level;\r
+       /** Filter: \ref EIC_FILTER_DISABLED or \ref EIC_FILTER_ENABLED */\r
+       uint8_t eic_filter;\r
+       /** Async: \ref EIC_ASYNCH_MODEmode or \ref EIC_SYNCH_MODE */\r
+       uint8_t eic_async;\r
+};\r
+\r
+typedef void (*eic_callback_t)(void);\r
+\r
+void eic_disable(Eic *eic);\r
+void eic_enable(Eic *eic);\r
+\r
+void eic_line_set_config(Eic *eic, uint8_t line_number,\r
+       struct eic_line_config *eic_line_conf);\r
+\r
+void eic_line_set_callback(Eic *eic, uint8_t line_number,\r
+       eic_callback_t callback, uint8_t irq_line, uint8_t irq_level);\r
+\r
+/**\r
+ * \brief Enable the external interrupt on specified line.\r
+ *\r
+ * \param eic Base address of the EIC module\r
+ * \param line_number The number of enabled line\r
+ */\r
+static inline void eic_line_enable(Eic *eic, uint8_t line_number)\r
+{\r
+       eic->EIC_EN = 1 << line_number;\r
+}\r
+\r
+/**\r
+ * \brief Disable the external interrupt on specified line.\r
+ *\r
+ * \param eic Base address of the EIC module\r
+ * \param line_number The number of disabled line\r
+ */\r
+static inline void eic_line_disable(Eic *eic, uint8_t line_number)\r
+{\r
+       eic->EIC_DIS = 1 << line_number;\r
+}\r
+\r
+/**\r
+ * \brief Tells whether an EIC line is enabled.\r
+ *\r
+ * \param eic Base address of the EIC module\r
+ * \param line_number Line number to test\r
+ *\r
+ * \return Whether an EIC line is enabled.\r
+ */\r
+static inline bool eic_line_is_enabled(Eic *eic, uint8_t line_number)\r
+{\r
+       return (eic->EIC_CTRL & (1 << line_number)) != 0;\r
+}\r
+\r
+/**\r
+ * \brief Enables the external interrupt from specified pin propagate from\r
+ * EIC to interrupt controller.\r
+ *\r
+ * \param eic Base address of the EIC (i.e. EIC).\r
+ * \param line_number Line number to test\r
+ */\r
+static inline void eic_line_enable_interrupt(Eic *eic,\r
+               uint8_t line_number)\r
+{\r
+       eic->EIC_IER = 1 << line_number;\r
+}\r
+\r
+/**\r
+ * \brief Disables the external interrupt from specified pin propagate from\r
+ * EIC to interrupt controller.\r
+ *\r
+ * \param eic Base address of the EIC (i.e. EIC).\r
+ * \param line_number Line number to test\r
+ */\r
+static inline void eic_line_disable_interrupt(Eic *eic,\r
+               uint8_t line_number)\r
+{\r
+       eic->EIC_IDR = 1 << line_number;\r
+       eic->EIC_IMR;\r
+}\r
+\r
+/**\r
+ * \brief Tells whether an EIC interrupt line is enabled.\r
+ *\r
+ * \param eic Base address of the EIC module\r
+ * \param line_number Line number to test\r
+ *\r
+ * \return Whether an EIC interrupt line is enabled.\r
+ */\r
+static inline bool eic_line_interrupt_is_enabled(Eic *eic,\r
+               uint8_t line_number)\r
+{\r
+       return (eic->EIC_IMR & (1 << line_number)) != 0;\r
+}\r
+\r
+/**\r
+ * \brief Clear the interrupt flag of specified pin.\r
+ *          Call this function once you've handled the interrupt.\r
+ *\r
+ * \param eic Base address of the EIC (i.e. EIC).\r
+ * \param line_number Line number to test\r
+ */\r
+static inline void eic_line_clear_interrupt(Eic *eic,\r
+               uint8_t line_number)\r
+{\r
+       eic->EIC_ICR = 1 << line_number;\r
+       eic->EIC_ISR;\r
+}\r
+\r
+/**\r
+ * \brief Tells whether an EIC interrupt line is pending.\r
+ *\r
+ * \param eic Base address of the EIC module\r
+ * \param line_number Line number to test\r
+ *\r
+ * \return Whether an EIC interrupt line is pending.\r
+ */\r
+static inline bool eic_line_interrupt_is_pending(Eic *eic,\r
+               uint8_t line_number)\r
+{\r
+       return (eic->EIC_ISR & (1 << line_number)) != 0;\r
+}\r
+\r
+/// @cond 0\r
+/**INDENT-OFF**/\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+/**INDENT-ON**/\r
+/// @endcond\r
+\r
+/**\r
+ * \page sam_eic_quickstart Quickstart guide for SAM EIC driver\r
+ *\r
+ * This is the quickstart guide for the \ref eic_group "SAM EIC driver",\r
+ * with step-by-step instructions on how to configure and use the driver in a\r
+ * selection of use cases.\r
+ *\r
+ * The use cases contain several code fragments. The code fragments in the\r
+ * steps for setup can be copied into a custom initialization function, while\r
+ * the steps for usage can be copied into, e.g., the main application function.\r
+ *\r
+ * \section eic_basic_use_case Basic use case\r
+ * In this basic use case, the EIC module and single line are configured for:\r
+ * - Falling edge trigger and async mode\r
+ * - Interrupt-based handling\r
+ * - EIC_LINE_5 as input\r
+ *\r
+ * \subsection sam_eic_quickstart_prereq Prerequisites\r
+ * -# \ref sysclk_group "System Clock Management (Sysclock)"\r
+ *\r
+ * \section eic_basic_use_case_setup Setup steps\r
+ * \subsection eic_basic_use_case_setup_code Example code\r
+ * Add to application C-file:\r
+ * \code\r
+ *   void eic_callback(void)\r
+ *   {\r
+ *       // Check if EIC push button line interrupt line is pending\r
+ *       if (eic_line_interrupt_is_pending(EIC, GPIO_PUSH_BUTTON_EIC_LINE)) {\r
+ *           eic_line_clear_interrupt(EIC, GPIO_PUSH_BUTTON_EIC_LINE);\r
+ *           bToggle = 1;\r
+ *       }\r
+ *   }\r
+ *   void eic_setup(void)\r
+ *   {\r
+ *       eic_enable(EIC);\r
+ *\r
+ *       eic_line_set_config(EIC, GPIO_PUSH_BUTTON_EIC_LINE, &eic_line_conf);\r
+ *\r
+ *       eic_line_set_callback(EIC, GPIO_PUSH_BUTTON_EIC_LINE, set_toggle_flag, EIC_5_IRQn, 1);\r
+ *\r
+ *       eic_line_enable(EIC, GPIO_PUSH_BUTTON_EIC_LINE);\r
+ *   }\r
+ * \endcode\r
+ *\r
+ * \subsection eic_basic_use_case_setup_flow Workflow\r
+ * -# Define the interrupt callback function in the application:\r
+ *   - \code\r
+*   void eic_callback(void)\r
+ *   {\r
+ *       // Check if EIC push button line interrupt line is pending\r
+ *       if (eic_line_interrupt_is_pending(EIC, GPIO_PUSH_BUTTON_EIC_LINE)) {\r
+ *           eic_line_clear_interrupt(EIC, GPIO_PUSH_BUTTON_EIC_LINE);\r
+ *           bToggle = 1;\r
+ *       }\r
+ *   }\r
+ * \endcode\r
+ * -# Enable EIC module:\r
+ *   - \code eic_enable(EIC); \endcode\r
+ *   - \note Including enable module clock and lock sleep mode.\r
+ * -# Configure EIC line with specified mode:\r
+ *   - \code aeic_line_set_config(EIC, GPIO_PUSH_BUTTON_EIC_LINE, &eic_line_conf); \endcode\r
+ * -# Set the EIC callback function and enable EIC interrupt.\r
+ *   - \code eic_line_set_callback(EIC, GPIO_PUSH_BUTTON_EIC_LINE, set_toggle_flag, EIC_5_IRQn, 1); \endcode\r
+ * -# Enable EIC line:\r
+ *   - \code eic_line_enable(EIC, GPIO_PUSH_BUTTON_EIC_LINE); \endcode\r
+ */\r
+#endif // EIC_H_INCLUDED\r
index 96e099f05db7f6b33251b3f0192b393bab3afe5d..fe0a502ea0a8d9ea11761b53baeb0f34a1e26bf2 100644 (file)
@@ -50,4 +50,6 @@
 /** Enable LCD backlight */\r
 #define CONF_BOARD_BL\r
 \r
+#define CONF_BOARD_EIC\r
+\r
 #endif  /* CONF_BOARD_H_INCLUDED */\r
index 8ca936e5189ef5f18b110d4c1d864ab6e2e0265e..3445ceff5c33337dd319f45f7854496020a7de8b 100644 (file)
@@ -112,6 +112,10 @@ void vApplicationIdleHook( void );
 void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName );\r
 void vApplicationTickHook( void );\r
 \r
+/* A handler for a button interrupt.  The button's only purpose is to bring the\r
+CPU out of sleep mode early. */\r
+static void prvButtonISR( void );\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 /* See the documentation page for this demo on the FreeRTOS.org web site for\r
@@ -137,9 +141,33 @@ int main( void )
 }\r
 /*-----------------------------------------------------------*/\r
 \r
+static void prvButtonISR( void )\r
+{\r
+       /* The button doesn't do anything other than providing a means for brining\r
+       the MCU out of sleep mode early. */\r
+       if( eic_line_interrupt_is_pending( EIC, GPIO_PUSH_BUTTON_EIC_LINE ) ) \r
+       {\r
+               eic_line_clear_interrupt( EIC, GPIO_PUSH_BUTTON_EIC_LINE );\r
+       }               \r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
 static void prvSetupHardware( void )\r
 {\r
 extern void SystemCoreClockUpdate( void );\r
+struct eic_line_config xEICLineConfiguration;\r
+\r
+       /* Configure the external interrupt controller so button pushes can\r
+       generate interrupts. */\r
+       xEICLineConfiguration.eic_mode = EIC_MODE_EDGE_TRIGGERED;\r
+       xEICLineConfiguration.eic_edge = EIC_EDGE_FALLING_EDGE;\r
+       xEICLineConfiguration.eic_level = EIC_LEVEL_LOW_LEVEL;\r
+       xEICLineConfiguration.eic_filter = EIC_FILTER_DISABLED;\r
+       xEICLineConfiguration.eic_async = EIC_ASYNCH_MODE;\r
+       eic_enable( EIC );\r
+       eic_line_set_config( EIC, GPIO_PUSH_BUTTON_EIC_LINE, &xEICLineConfiguration );\r
+       eic_line_set_callback( EIC, GPIO_PUSH_BUTTON_EIC_LINE, prvButtonISR, EIC_5_IRQn, 0 );\r
+       eic_line_enable( EIC, GPIO_PUSH_BUTTON_EIC_LINE );\r
 \r
        /* ASF function to setup clocking. */\r
        sysclk_init();\r