ceedling 0.13.0.rc1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (426) hide show
  1. data/Gemfile.lock +32 -0
  2. data/README.md +8 -8
  3. data/assets/example_file.c +5 -0
  4. data/assets/example_file.h +6 -0
  5. data/assets/project_as_gem.yml +71 -0
  6. data/assets/{project.yml → project_with_guts.yml} +2 -0
  7. data/assets/rakefile_as_gem.rb +1 -0
  8. data/assets/{rakefile.rb → rakefile_with_guts.rb} +0 -0
  9. data/assets/test_example_file.c +13 -0
  10. data/bin/ceedling +55 -31
  11. data/ceedling-0.13.0.rc4.gem +0 -0
  12. data/ceedling.gemspec +13 -12
  13. data/ceedling.sublime-project +8 -0
  14. data/ceedling.sublime-workspace +365 -0
  15. data/examples/temp_sensor/project.yml +3 -4
  16. data/lib/ceedling.rb +13 -4
  17. data/lib/ceedling/version.rb +3 -3
  18. data/lib/project_file_loader.rb +1 -1
  19. data/lib/rakefile.rb +14 -1
  20. data/lib/target_loader.rb +38 -0
  21. data/plugins/bullseye/{template.erb → assets/template.erb} +0 -0
  22. data/plugins/bullseye/{defaults.yml → config/defaults.yml} +0 -0
  23. data/plugins/bullseye/{bullseye.rb → lib/bullseye.rb} +9 -10
  24. data/spec/spec_system_helper.rb +192 -0
  25. data/spec/system/deployment_spec.rb +116 -0
  26. data/tags +977 -0
  27. data/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  28. data/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  29. data/vendor/c_exception/docs/license.txt +30 -0
  30. data/vendor/c_exception/docs/readme.txt +242 -0
  31. data/vendor/c_exception/makefile +24 -0
  32. data/vendor/c_exception/rakefile.rb +41 -0
  33. data/vendor/c_exception/test/CExceptionConfig.h +44 -0
  34. data/vendor/c_exception/test/TestException.c +328 -0
  35. data/vendor/c_exception/test/TestException_Runner.c +57 -0
  36. data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +94 -0
  37. data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +39 -0
  38. data/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -0
  39. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -0
  40. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +313 -0
  41. data/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +23 -0
  42. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +139 -0
  43. data/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
  44. data/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
  45. data/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +217 -0
  46. data/vendor/c_exception/vendor/unity/docs/license.txt +31 -0
  47. data/vendor/c_exception/vendor/unity/examples/helper/UnityHelper.c +10 -0
  48. data/vendor/c_exception/vendor/unity/examples/helper/UnityHelper.h +12 -0
  49. data/vendor/c_exception/vendor/unity/examples/makefile +40 -0
  50. data/vendor/c_exception/vendor/unity/examples/rakefile.rb +32 -0
  51. data/vendor/c_exception/vendor/unity/examples/rakefile_helper.rb +256 -0
  52. data/vendor/c_exception/vendor/unity/examples/readme.txt +18 -0
  53. data/vendor/c_exception/vendor/unity/examples/src/ProductionCode.c +24 -0
  54. data/vendor/c_exception/vendor/unity/examples/src/ProductionCode.h +3 -0
  55. data/vendor/c_exception/vendor/unity/examples/src/ProductionCode2.c +9 -0
  56. data/vendor/c_exception/vendor/unity/examples/src/ProductionCode2.h +2 -0
  57. data/vendor/c_exception/vendor/unity/examples/test/TestProductionCode.c +62 -0
  58. data/vendor/c_exception/vendor/unity/examples/test/TestProductionCode2.c +31 -0
  59. data/vendor/c_exception/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  60. data/vendor/c_exception/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +50 -0
  61. data/vendor/c_exception/vendor/unity/extras/fixture/build/MakefileWorker.mk +331 -0
  62. data/vendor/c_exception/vendor/unity/extras/fixture/build/filterGcov.sh +61 -0
  63. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +37 -0
  64. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
  65. data/vendor/c_exception/vendor/unity/extras/fixture/readme.txt +9 -0
  66. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +381 -0
  67. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +81 -0
  68. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  69. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  70. data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  71. data/vendor/c_exception/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  72. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +321 -0
  73. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +40 -0
  74. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  75. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  76. data/vendor/c_exception/vendor/unity/makefile +35 -0
  77. data/vendor/c_exception/vendor/unity/rakefile.rb +59 -0
  78. data/vendor/c_exception/vendor/unity/rakefile_helper.rb +240 -0
  79. data/vendor/c_exception/vendor/unity/release/build.info +2 -0
  80. data/vendor/c_exception/vendor/unity/release/version.info +2 -0
  81. data/vendor/c_exception/vendor/unity/src/unity.c +979 -0
  82. data/vendor/c_exception/vendor/unity/src/unity.h +232 -0
  83. data/vendor/c_exception/vendor/unity/src/unity_internals.h +424 -0
  84. data/vendor/c_exception/vendor/unity/targets/gcc.yml +43 -0
  85. data/vendor/c_exception/vendor/unity/targets/gcc_64.yml +44 -0
  86. data/vendor/c_exception/vendor/unity/targets/hitech_picc18.yml +101 -0
  87. data/vendor/c_exception/vendor/unity/targets/iar_arm_v4.yml +89 -0
  88. data/vendor/c_exception/vendor/unity/targets/iar_arm_v5.yml +79 -0
  89. data/vendor/c_exception/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  90. data/vendor/c_exception/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  91. data/vendor/c_exception/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  92. data/vendor/c_exception/vendor/unity/targets/iar_msp430.yml +94 -0
  93. data/vendor/c_exception/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  94. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +54 -0
  95. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +50 -0
  96. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +76 -0
  97. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +72 -0
  98. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +85 -0
  99. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +85 -0
  100. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +73 -0
  101. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +85 -0
  102. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +85 -0
  103. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +86 -0
  104. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +60 -0
  105. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +63 -0
  106. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +51 -0
  107. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +60 -0
  108. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +63 -0
  109. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +64 -0
  110. data/vendor/c_exception/vendor/unity/test/test_generate_test_runner.rb +94 -0
  111. data/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +51 -0
  112. data/vendor/c_exception/vendor/unity/test/testdata/sample.yml +9 -0
  113. data/vendor/c_exception/vendor/unity/test/testdata/testsample.c +51 -0
  114. data/vendor/c_exception/vendor/unity/test/testparameterized.c +101 -0
  115. data/vendor/c_exception/vendor/unity/test/testunity.c +2024 -0
  116. data/vendor/cmock/docs/CMock Summary.odt +0 -0
  117. data/vendor/cmock/docs/CMock Summary.pdf +0 -0
  118. data/vendor/cmock/docs/CMock_Summary.md +356 -0
  119. data/vendor/cmock/docs/license.txt +31 -0
  120. data/vendor/cmock/examples/gcc.yml +43 -0
  121. data/vendor/cmock/examples/iar_v4.yml +91 -0
  122. data/vendor/cmock/examples/iar_v5.yml +80 -0
  123. data/vendor/cmock/examples/rakefile.rb +32 -0
  124. data/vendor/cmock/examples/rakefile_helper.rb +270 -0
  125. data/vendor/cmock/examples/src/AT91SAM7X256.h +2556 -0
  126. data/vendor/cmock/examples/src/AdcConductor.c +42 -0
  127. data/vendor/cmock/examples/src/AdcConductor.h +11 -0
  128. data/vendor/cmock/examples/src/AdcHardware.c +27 -0
  129. data/vendor/cmock/examples/src/AdcHardware.h +9 -0
  130. data/vendor/cmock/examples/src/AdcHardwareConfigurator.c +18 -0
  131. data/vendor/cmock/examples/src/AdcHardwareConfigurator.h +10 -0
  132. data/vendor/cmock/examples/src/AdcModel.c +33 -0
  133. data/vendor/cmock/examples/src/AdcModel.h +13 -0
  134. data/vendor/cmock/examples/src/AdcTemperatureSensor.c +51 -0
  135. data/vendor/cmock/examples/src/AdcTemperatureSensor.h +10 -0
  136. data/vendor/cmock/examples/src/Executor.c +25 -0
  137. data/vendor/cmock/examples/src/Executor.h +9 -0
  138. data/vendor/cmock/examples/src/IntrinsicsWrapper.c +18 -0
  139. data/vendor/cmock/examples/src/IntrinsicsWrapper.h +7 -0
  140. data/vendor/cmock/examples/src/Main.c +46 -0
  141. data/vendor/cmock/examples/src/Main.h +7 -0
  142. data/vendor/cmock/examples/src/Model.c +10 -0
  143. data/vendor/cmock/examples/src/Model.h +8 -0
  144. data/vendor/cmock/examples/src/ModelConfig.h +7 -0
  145. data/vendor/cmock/examples/src/TaskScheduler.c +72 -0
  146. data/vendor/cmock/examples/src/TaskScheduler.h +11 -0
  147. data/vendor/cmock/examples/src/TemperatureCalculator.c +27 -0
  148. data/vendor/cmock/examples/src/TemperatureCalculator.h +6 -0
  149. data/vendor/cmock/examples/src/TemperatureFilter.c +39 -0
  150. data/vendor/cmock/examples/src/TemperatureFilter.h +10 -0
  151. data/vendor/cmock/examples/src/TimerConductor.c +15 -0
  152. data/vendor/cmock/examples/src/TimerConductor.h +9 -0
  153. data/vendor/cmock/examples/src/TimerConfigurator.c +51 -0
  154. data/vendor/cmock/examples/src/TimerConfigurator.h +15 -0
  155. data/vendor/cmock/examples/src/TimerHardware.c +15 -0
  156. data/vendor/cmock/examples/src/TimerHardware.h +8 -0
  157. data/vendor/cmock/examples/src/TimerInterruptConfigurator.c +55 -0
  158. data/vendor/cmock/examples/src/TimerInterruptConfigurator.h +13 -0
  159. data/vendor/cmock/examples/src/TimerInterruptHandler.c +25 -0
  160. data/vendor/cmock/examples/src/TimerInterruptHandler.h +10 -0
  161. data/vendor/cmock/examples/src/TimerModel.c +9 -0
  162. data/vendor/cmock/examples/src/TimerModel.h +8 -0
  163. data/vendor/cmock/examples/src/Types.h +103 -0
  164. data/vendor/cmock/examples/src/UsartBaudRateRegisterCalculator.c +18 -0
  165. data/vendor/cmock/examples/src/UsartBaudRateRegisterCalculator.h +6 -0
  166. data/vendor/cmock/examples/src/UsartConductor.c +21 -0
  167. data/vendor/cmock/examples/src/UsartConductor.h +7 -0
  168. data/vendor/cmock/examples/src/UsartConfigurator.c +39 -0
  169. data/vendor/cmock/examples/src/UsartConfigurator.h +13 -0
  170. data/vendor/cmock/examples/src/UsartHardware.c +22 -0
  171. data/vendor/cmock/examples/src/UsartHardware.h +9 -0
  172. data/vendor/cmock/examples/src/UsartModel.c +34 -0
  173. data/vendor/cmock/examples/src/UsartModel.h +10 -0
  174. data/vendor/cmock/examples/src/UsartPutChar.c +16 -0
  175. data/vendor/cmock/examples/src/UsartPutChar.h +8 -0
  176. data/vendor/cmock/examples/src/UsartTransmitBufferStatus.c +7 -0
  177. data/vendor/cmock/examples/src/UsartTransmitBufferStatus.h +8 -0
  178. data/vendor/cmock/examples/test/TestAdcConductor.c +121 -0
  179. data/vendor/cmock/examples/test/TestAdcHardware.c +44 -0
  180. data/vendor/cmock/examples/test/TestAdcHardwareConfigurator.c +43 -0
  181. data/vendor/cmock/examples/test/TestAdcModel.c +33 -0
  182. data/vendor/cmock/examples/test/TestAdcTemperatureSensor.c +47 -0
  183. data/vendor/cmock/examples/test/TestExecutor.c +36 -0
  184. data/vendor/cmock/examples/test/TestMain.c +24 -0
  185. data/vendor/cmock/examples/test/TestModel.c +20 -0
  186. data/vendor/cmock/examples/test/TestTaskScheduler.c +104 -0
  187. data/vendor/cmock/examples/test/TestTemperatureCalculator.c +33 -0
  188. data/vendor/cmock/examples/test/TestTemperatureFilter.c +69 -0
  189. data/vendor/cmock/examples/test/TestTimerConductor.c +32 -0
  190. data/vendor/cmock/examples/test/TestTimerConfigurator.c +112 -0
  191. data/vendor/cmock/examples/test/TestTimerHardware.c +26 -0
  192. data/vendor/cmock/examples/test/TestTimerInterruptConfigurator.c +78 -0
  193. data/vendor/cmock/examples/test/TestTimerInterruptHandler.c +66 -0
  194. data/vendor/cmock/examples/test/TestTimerModel.c +18 -0
  195. data/vendor/cmock/examples/test/TestUsartBaudRateRegisterCalculator.c +21 -0
  196. data/vendor/cmock/examples/test/TestUsartConductor.c +40 -0
  197. data/vendor/cmock/examples/test/TestUsartConfigurator.c +77 -0
  198. data/vendor/cmock/examples/test/TestUsartHardware.c +37 -0
  199. data/vendor/cmock/examples/test/TestUsartModel.c +40 -0
  200. data/vendor/cmock/examples/test/TestUsartPutChar.c +43 -0
  201. data/vendor/cmock/examples/test/TestUsartTransmitBufferStatus.c +22 -0
  202. data/vendor/cmock/iar/iar_v4/Resource/SAM7_FLASH.mac +71 -0
  203. data/vendor/cmock/iar/iar_v4/Resource/SAM7_RAM.mac +94 -0
  204. data/vendor/cmock/iar/iar_v4/Resource/SAM7_SIM.mac +67 -0
  205. data/vendor/cmock/iar/iar_v4/Resource/at91SAM7X256_FLASH.xcl +185 -0
  206. data/vendor/cmock/iar/iar_v4/Resource/at91SAM7X256_RAM.xcl +185 -0
  207. data/vendor/cmock/iar/iar_v4/Resource/ioat91sam7x256.ddf +2259 -0
  208. data/vendor/cmock/iar/iar_v4/cmock_demo.dep +3691 -0
  209. data/vendor/cmock/iar/iar_v4/cmock_demo.ewd +1696 -0
  210. data/vendor/cmock/iar/iar_v4/cmock_demo.ewp +2581 -0
  211. data/vendor/cmock/iar/iar_v4/cmock_demo.eww +10 -0
  212. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X-EK.h +61 -0
  213. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.inc +2314 -0
  214. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.rdf +4704 -0
  215. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.tcl +3407 -0
  216. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256_inc.h +2268 -0
  217. data/vendor/cmock/iar/iar_v4/incIAR/ioat91sam7x256.h +4380 -0
  218. data/vendor/cmock/iar/iar_v4/incIAR/lib_AT91SAM7X256.h +4211 -0
  219. data/vendor/cmock/iar/iar_v4/settings/cmock_demo.cspy.bat +32 -0
  220. data/vendor/cmock/iar/iar_v4/settings/cmock_demo.dbgdt +86 -0
  221. data/vendor/cmock/iar/iar_v4/settings/cmock_demo.dni +42 -0
  222. data/vendor/cmock/iar/iar_v4/settings/cmock_demo.wsdt +76 -0
  223. data/vendor/cmock/iar/iar_v4/srcIAR/Cstartup.s79 +266 -0
  224. data/vendor/cmock/iar/iar_v4/srcIAR/Cstartup_SAM7.c +98 -0
  225. data/vendor/cmock/iar/iar_v5/Resource/SAM7_FLASH.mac +71 -0
  226. data/vendor/cmock/iar/iar_v5/Resource/SAM7_RAM.mac +94 -0
  227. data/vendor/cmock/iar/iar_v5/Resource/SAM7_SIM.mac +67 -0
  228. data/vendor/cmock/iar/iar_v5/Resource/at91SAM7X256_FLASH.icf +43 -0
  229. data/vendor/cmock/iar/iar_v5/Resource/at91SAM7X256_RAM.icf +42 -0
  230. data/vendor/cmock/iar/iar_v5/cmock_demo.dep +4204 -0
  231. data/vendor/cmock/iar/iar_v5/cmock_demo.ewd +1906 -0
  232. data/vendor/cmock/iar/iar_v5/cmock_demo.ewp +2426 -0
  233. data/vendor/cmock/iar/iar_v5/cmock_demo.eww +26 -0
  234. data/vendor/cmock/iar/iar_v5/incIAR/AT91SAM7X-EK.h +61 -0
  235. data/vendor/cmock/iar/iar_v5/incIAR/AT91SAM7X256_inc.h +2268 -0
  236. data/vendor/cmock/iar/iar_v5/incIAR/lib_AT91SAM7X256.h +4211 -0
  237. data/vendor/cmock/iar/iar_v5/incIAR/project.h +30 -0
  238. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X.cspy.bat +33 -0
  239. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X.dbgdt +5 -0
  240. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X.dni +18 -0
  241. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X.wsdt +74 -0
  242. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X_FLASH_Debug.jlink +12 -0
  243. data/vendor/cmock/iar/iar_v5/settings/cmock_demo.cspy.bat +33 -0
  244. data/vendor/cmock/iar/iar_v5/settings/cmock_demo.dbgdt +85 -0
  245. data/vendor/cmock/iar/iar_v5/settings/cmock_demo.dni +44 -0
  246. data/vendor/cmock/iar/iar_v5/settings/cmock_demo.wsdt +73 -0
  247. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_Binary.jlink +12 -0
  248. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_FLASH_Debug.jlink +12 -0
  249. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_RAM_Debug.jlink +12 -0
  250. data/vendor/cmock/iar/iar_v5/srcIAR/Cstartup.s +299 -0
  251. data/vendor/cmock/iar/iar_v5/srcIAR/Cstartup_SAM7.c +98 -0
  252. data/vendor/cmock/rakefile.rb +111 -0
  253. data/vendor/cmock/rakefile_helper.rb +381 -0
  254. data/vendor/cmock/targets/gcc.yml +53 -0
  255. data/vendor/cmock/targets/iar_arm_v4.yml +108 -0
  256. data/vendor/cmock/targets/iar_arm_v5.yml +93 -0
  257. data/vendor/cmock/test/c/TestCMockC.c +280 -0
  258. data/vendor/cmock/test/c/TestCMockC.yml +12 -0
  259. data/vendor/cmock/test/c/TestCMockCDynamic.c +186 -0
  260. data/vendor/cmock/test/c/TestCMockCDynamic.yml +12 -0
  261. data/vendor/cmock/test/c/TestCMockCDynamic_Runner.c +35 -0
  262. data/vendor/cmock/test/c/TestCMockC_Runner.c +37 -0
  263. data/vendor/cmock/test/spec/cmock_file_writer_spec.rb +25 -0
  264. data/vendor/cmock/test/spec/spec_helper.rb +12 -0
  265. data/vendor/cmock/test/system/systest_generator.rb +178 -0
  266. data/vendor/cmock/test/system/test_compilation/callingconv.h +11 -0
  267. data/vendor/cmock/test/system/test_compilation/config.yml +9 -0
  268. data/vendor/cmock/test/system/test_compilation/const.h +15 -0
  269. data/vendor/cmock/test/system/test_compilation/osek.h +275 -0
  270. data/vendor/cmock/test/system/test_compilation/parsing.h +47 -0
  271. data/vendor/cmock/test/system/test_interactions/all_plugins_but_other_limits.yml +341 -0
  272. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +382 -0
  273. data/vendor/cmock/test/system/test_interactions/array_and_pointer_handling.yml +382 -0
  274. data/vendor/cmock/test/system/test_interactions/basic_expect_and_return.yml +123 -0
  275. data/vendor/cmock/test/system/test_interactions/const_primitives_handling.yml +87 -0
  276. data/vendor/cmock/test/system/test_interactions/enforce_strict_ordering.yml +247 -0
  277. data/vendor/cmock/test/system/test_interactions/expect_and_return_custom_types.yml +108 -0
  278. data/vendor/cmock/test/system/test_interactions/expect_and_return_treat_as.yml +173 -0
  279. data/vendor/cmock/test/system/test_interactions/expect_and_throw.yml +170 -0
  280. data/vendor/cmock/test/system/test_interactions/fancy_pointer_handling.yml +208 -0
  281. data/vendor/cmock/test/system/test_interactions/function_pointer_handling.yml +82 -0
  282. data/vendor/cmock/test/system/test_interactions/ignore_and_return.yml +153 -0
  283. data/vendor/cmock/test/system/test_interactions/newer_standards_stuff1.yml +52 -0
  284. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_1.yml +91 -0
  285. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_2.yml +59 -0
  286. data/vendor/cmock/test/system/test_interactions/parsing_challenges.yml +222 -0
  287. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return.yml +277 -0
  288. data/vendor/cmock/test/system/test_interactions/stubs_with_callbacks.yml +221 -0
  289. data/vendor/cmock/test/system/test_interactions/unity_64bit_support.yml +77 -0
  290. data/vendor/cmock/test/system/test_interactions/unity_ignores.yml +139 -0
  291. data/vendor/cmock/test/test_helper.rb +44 -0
  292. data/vendor/cmock/test/unit/cmock_config_test.rb +121 -0
  293. data/vendor/cmock/test/unit/cmock_config_test.yml +5 -0
  294. data/vendor/cmock/test/unit/cmock_file_writer_test.rb +30 -0
  295. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +413 -0
  296. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +114 -0
  297. data/vendor/cmock/test/unit/cmock_generator_plugin_callback_test.rb +190 -0
  298. data/vendor/cmock/test/unit/cmock_generator_plugin_cexception_test.rb +94 -0
  299. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_test.rb +206 -0
  300. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +168 -0
  301. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +291 -0
  302. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +1247 -0
  303. data/vendor/cmock/test/unit/cmock_plugin_manager_test.rb +85 -0
  304. data/vendor/cmock/test/unit/cmock_unityhelper_parser_test.rb +223 -0
  305. data/vendor/cmock/vendor/behaviors/Manifest.txt +9 -0
  306. data/vendor/cmock/vendor/behaviors/Rakefile +19 -0
  307. data/vendor/cmock/vendor/behaviors/lib/behaviors.rb +76 -0
  308. data/vendor/cmock/vendor/behaviors/lib/behaviors/reporttask.rb +158 -0
  309. data/vendor/cmock/vendor/behaviors/test/behaviors_tasks_test.rb +73 -0
  310. data/vendor/cmock/vendor/behaviors/test/behaviors_test.rb +50 -0
  311. data/vendor/cmock/vendor/behaviors/test/tasks_test/Rakefile +19 -0
  312. data/vendor/cmock/vendor/behaviors/test/tasks_test/lib/user.rb +2 -0
  313. data/vendor/cmock/vendor/behaviors/test/tasks_test/test/user_test.rb +17 -0
  314. data/vendor/cmock/vendor/hardmock/CHANGES +78 -0
  315. data/vendor/cmock/vendor/hardmock/LICENSE +7 -0
  316. data/vendor/cmock/vendor/hardmock/README +70 -0
  317. data/vendor/cmock/vendor/hardmock/Rakefile +8 -0
  318. data/vendor/cmock/vendor/hardmock/config/environment.rb +12 -0
  319. data/vendor/cmock/vendor/hardmock/lib/assert_error.rb +23 -0
  320. data/vendor/cmock/vendor/hardmock/lib/extend_test_unit.rb +14 -0
  321. data/vendor/cmock/vendor/hardmock/lib/hardmock.rb +86 -0
  322. data/vendor/cmock/vendor/hardmock/lib/hardmock/errors.rb +22 -0
  323. data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation.rb +229 -0
  324. data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation_builder.rb +9 -0
  325. data/vendor/cmock/vendor/hardmock/lib/hardmock/expector.rb +26 -0
  326. data/vendor/cmock/vendor/hardmock/lib/hardmock/method_cleanout.rb +33 -0
  327. data/vendor/cmock/vendor/hardmock/lib/hardmock/mock.rb +180 -0
  328. data/vendor/cmock/vendor/hardmock/lib/hardmock/mock_control.rb +53 -0
  329. data/vendor/cmock/vendor/hardmock/lib/hardmock/stubbing.rb +210 -0
  330. data/vendor/cmock/vendor/hardmock/lib/hardmock/trapper.rb +31 -0
  331. data/vendor/cmock/vendor/hardmock/lib/hardmock/utils.rb +9 -0
  332. data/vendor/cmock/vendor/hardmock/lib/test_unit_before_after.rb +169 -0
  333. data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc.rake +19 -0
  334. data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc_options.rb +4 -0
  335. data/vendor/cmock/vendor/hardmock/rake_tasks/test.rake +22 -0
  336. data/vendor/cmock/vendor/hardmock/test/functional/assert_error_test.rb +52 -0
  337. data/vendor/cmock/vendor/hardmock/test/functional/auto_verify_test.rb +178 -0
  338. data/vendor/cmock/vendor/hardmock/test/functional/direct_mock_usage_test.rb +396 -0
  339. data/vendor/cmock/vendor/hardmock/test/functional/hardmock_test.rb +434 -0
  340. data/vendor/cmock/vendor/hardmock/test/functional/stubbing_test.rb +479 -0
  341. data/vendor/cmock/vendor/hardmock/test/test_helper.rb +43 -0
  342. data/vendor/cmock/vendor/hardmock/test/unit/expectation_builder_test.rb +19 -0
  343. data/vendor/cmock/vendor/hardmock/test/unit/expectation_test.rb +372 -0
  344. data/vendor/cmock/vendor/hardmock/test/unit/expector_test.rb +57 -0
  345. data/vendor/cmock/vendor/hardmock/test/unit/method_cleanout_test.rb +36 -0
  346. data/vendor/cmock/vendor/hardmock/test/unit/mock_control_test.rb +175 -0
  347. data/vendor/cmock/vendor/hardmock/test/unit/mock_test.rb +279 -0
  348. data/vendor/cmock/vendor/hardmock/test/unit/test_unit_before_after_test.rb +452 -0
  349. data/vendor/cmock/vendor/hardmock/test/unit/trapper_test.rb +62 -0
  350. data/vendor/cmock/vendor/hardmock/test/unit/verify_error_test.rb +40 -0
  351. data/vendor/unity/auto/generate_config.yml +36 -0
  352. data/vendor/unity/auto/unity_test_summary.rb +2 -2
  353. data/vendor/unity/docs/Unity Summary.odt +0 -0
  354. data/vendor/unity/docs/Unity Summary.pdf +0 -0
  355. data/vendor/unity/docs/Unity Summary.txt +216 -0
  356. data/vendor/unity/docs/license.txt +31 -0
  357. data/vendor/unity/examples/helper/UnityHelper.c +10 -0
  358. data/vendor/unity/examples/helper/UnityHelper.h +12 -0
  359. data/vendor/unity/examples/makefile +40 -0
  360. data/vendor/unity/examples/rakefile.rb +32 -0
  361. data/vendor/unity/examples/rakefile_helper.rb +256 -0
  362. data/vendor/unity/examples/readme.txt +18 -0
  363. data/vendor/unity/examples/src/ProductionCode.c +24 -0
  364. data/vendor/unity/examples/src/ProductionCode.h +3 -0
  365. data/vendor/unity/examples/src/ProductionCode2.c +9 -0
  366. data/vendor/unity/examples/src/ProductionCode2.h +2 -0
  367. data/vendor/unity/examples/test/TestProductionCode.c +62 -0
  368. data/vendor/unity/examples/test/TestProductionCode2.c +31 -0
  369. data/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  370. data/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +50 -0
  371. data/vendor/unity/extras/fixture/build/MakefileWorker.mk +331 -0
  372. data/vendor/unity/extras/fixture/build/filterGcov.sh +61 -0
  373. data/vendor/unity/extras/fixture/rakefile.rb +37 -0
  374. data/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
  375. data/vendor/unity/extras/fixture/readme.txt +9 -0
  376. data/vendor/unity/extras/fixture/src/unity_fixture.c +381 -0
  377. data/vendor/unity/extras/fixture/src/unity_fixture.h +81 -0
  378. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  379. data/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  380. data/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  381. data/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  382. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +321 -0
  383. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +40 -0
  384. data/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  385. data/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  386. data/vendor/unity/makefile +35 -0
  387. data/vendor/unity/rakefile.rb +59 -0
  388. data/vendor/unity/rakefile_helper.rb +240 -0
  389. data/vendor/unity/release/version.info +1 -1
  390. data/vendor/unity/src/unity.c +1 -1
  391. data/vendor/unity/src/unity_internals.h +5 -5
  392. data/vendor/unity/targets/gcc_32.yml +44 -0
  393. data/vendor/unity/targets/hitech_picc18.yml +101 -0
  394. data/vendor/unity/targets/iar_arm_v4.yml +89 -0
  395. data/vendor/unity/targets/iar_arm_v5.yml +79 -0
  396. data/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  397. data/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  398. data/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  399. data/vendor/unity/targets/iar_msp430.yml +94 -0
  400. data/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  401. data/vendor/unity/test/expectdata/testsample_cmd.c +54 -0
  402. data/vendor/unity/test/expectdata/testsample_def.c +50 -0
  403. data/vendor/unity/test/expectdata/testsample_mock_cmd.c +76 -0
  404. data/vendor/unity/test/expectdata/testsample_mock_def.c +72 -0
  405. data/vendor/unity/test/expectdata/testsample_mock_new1.c +85 -0
  406. data/vendor/unity/test/expectdata/testsample_mock_new2.c +85 -0
  407. data/vendor/unity/test/expectdata/testsample_mock_param.c +73 -0
  408. data/vendor/unity/test/expectdata/testsample_mock_run1.c +85 -0
  409. data/vendor/unity/test/expectdata/testsample_mock_run2.c +85 -0
  410. data/vendor/unity/test/expectdata/testsample_mock_yaml.c +86 -0
  411. data/vendor/unity/test/expectdata/testsample_new1.c +60 -0
  412. data/vendor/unity/test/expectdata/testsample_new2.c +63 -0
  413. data/vendor/unity/test/expectdata/testsample_param.c +51 -0
  414. data/vendor/unity/test/expectdata/testsample_run1.c +60 -0
  415. data/vendor/unity/test/expectdata/testsample_run2.c +63 -0
  416. data/vendor/unity/test/expectdata/testsample_yaml.c +64 -0
  417. data/vendor/unity/test/test_generate_test_runner.rb +94 -0
  418. data/vendor/unity/test/testdata/mocksample.c +51 -0
  419. data/vendor/unity/test/testdata/sample.yml +9 -0
  420. data/vendor/unity/test/testdata/testsample.c +51 -0
  421. data/vendor/unity/test/testparameterized.c +101 -0
  422. data/vendor/unity/test/testunity.c +2559 -0
  423. metadata +464 -53
  424. data/.gitignore +0 -6
  425. data/.gitmodules +0 -9
  426. data/.rspec +0 -1
@@ -0,0 +1,4211 @@
1
+ //* ----------------------------------------------------------------------------
2
+ //* ATMEL Microcontroller Software Support - ROUSSET -
3
+ //* ----------------------------------------------------------------------------
4
+ //* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
5
+ //* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
6
+ //* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
7
+ //* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
8
+ //* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9
+ //* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
10
+ //* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
11
+ //* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
12
+ //* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
13
+ //* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
+ //* ----------------------------------------------------------------------------
15
+ //* File Name : lib_AT91SAM7X256.h
16
+ //* Object : AT91SAM7X256 inlined functions
17
+ //* Generated : AT91 SW Application Group 11/02/2005 (15:17:24)
18
+ //*
19
+ //* CVS Reference : /lib_dbgu.h/1.1/Thu Aug 25 12:56:22 2005//
20
+ //* CVS Reference : /lib_pmc_SAM7X.h/1.4/Tue Aug 30 13:00:36 2005//
21
+ //* CVS Reference : /lib_VREG_6085B.h/1.1/Tue Feb 1 16:20:47 2005//
22
+ //* CVS Reference : /lib_rstc_6098A.h/1.1/Wed Oct 6 10:39:20 2004//
23
+ //* CVS Reference : /lib_ssc.h/1.4/Fri Jan 31 12:19:20 2003//
24
+ //* CVS Reference : /lib_wdtc_6080A.h/1.1/Wed Oct 6 10:38:30 2004//
25
+ //* CVS Reference : /lib_usart.h/1.5/Thu Nov 21 16:01:54 2002//
26
+ //* CVS Reference : /lib_spi2.h/1.2/Tue Aug 23 15:37:28 2005//
27
+ //* CVS Reference : /lib_pitc_6079A.h/1.2/Tue Nov 9 14:43:56 2004//
28
+ //* CVS Reference : /lib_aic_6075b.h/1.2/Thu Jul 7 07:48:22 2005//
29
+ //* CVS Reference : /lib_twi.h/1.3/Mon Jul 19 14:27:58 2004//
30
+ //* CVS Reference : /lib_adc.h/1.6/Fri Oct 17 09:12:38 2003//
31
+ //* CVS Reference : /lib_rttc_6081A.h/1.1/Wed Oct 6 10:39:38 2004//
32
+ //* CVS Reference : /lib_udp.h/1.5/Tue Aug 30 12:13:47 2005//
33
+ //* CVS Reference : /lib_tc_1753b.h/1.1/Fri Jan 31 12:20:02 2003//
34
+ //* CVS Reference : /lib_MC_SAM7X.h/1.1/Thu Mar 25 15:19:14 2004//
35
+ //* CVS Reference : /lib_pio.h/1.3/Fri Jan 31 12:18:56 2003//
36
+ //* CVS Reference : /lib_can_AT91.h/1.5/Tue Aug 23 15:37:07 2005//
37
+ //* CVS Reference : /lib_PWM_SAM.h/1.3/Thu Jan 22 10:10:50 2004//
38
+ //* CVS Reference : /lib_pdc.h/1.2/Tue Jul 2 13:29:40 2002//
39
+ //* ----------------------------------------------------------------------------
40
+
41
+ #ifndef lib_AT91SAM7X256_H
42
+ #define lib_AT91SAM7X256_H
43
+
44
+ /* *****************************************************************************
45
+ SOFTWARE API FOR AIC
46
+ ***************************************************************************** */
47
+ #define AT91C_AIC_BRANCH_OPCODE ((void (*) ()) 0xE51FFF20) // ldr, pc, [pc, #-&F20]
48
+
49
+ //*----------------------------------------------------------------------------
50
+ //* \fn AT91F_AIC_ConfigureIt
51
+ //* \brief Interrupt Handler Initialization
52
+ //*----------------------------------------------------------------------------
53
+ __inline unsigned int AT91F_AIC_ConfigureIt (
54
+ AT91PS_AIC pAic, // \arg pointer to the AIC registers
55
+ unsigned int irq_id, // \arg interrupt number to initialize
56
+ unsigned int priority, // \arg priority to give to the interrupt
57
+ unsigned int src_type, // \arg activation and sense of activation
58
+ void (*newHandler) () ) // \arg address of the interrupt handler
59
+ {
60
+ unsigned int oldHandler;
61
+ unsigned int mask ;
62
+
63
+ oldHandler = pAic->AIC_SVR[irq_id];
64
+
65
+ mask = 0x1 << irq_id ;
66
+ //* Disable the interrupt on the interrupt controller
67
+ pAic->AIC_IDCR = mask ;
68
+ //* Save the interrupt handler routine pointer and the interrupt priority
69
+ pAic->AIC_SVR[irq_id] = (unsigned int) newHandler ;
70
+ //* Store the Source Mode Register
71
+ pAic->AIC_SMR[irq_id] = src_type | priority ;
72
+ //* Clear the interrupt on the interrupt controller
73
+ pAic->AIC_ICCR = mask ;
74
+
75
+ return oldHandler;
76
+ }
77
+
78
+ //*----------------------------------------------------------------------------
79
+ //* \fn AT91F_AIC_EnableIt
80
+ //* \brief Enable corresponding IT number
81
+ //*----------------------------------------------------------------------------
82
+ __inline void AT91F_AIC_EnableIt (
83
+ AT91PS_AIC pAic, // \arg pointer to the AIC registers
84
+ unsigned int irq_id ) // \arg interrupt number to initialize
85
+ {
86
+ //* Enable the interrupt on the interrupt controller
87
+ pAic->AIC_IECR = 0x1 << irq_id ;
88
+ }
89
+
90
+ //*----------------------------------------------------------------------------
91
+ //* \fn AT91F_AIC_DisableIt
92
+ //* \brief Disable corresponding IT number
93
+ //*----------------------------------------------------------------------------
94
+ __inline void AT91F_AIC_DisableIt (
95
+ AT91PS_AIC pAic, // \arg pointer to the AIC registers
96
+ unsigned int irq_id ) // \arg interrupt number to initialize
97
+ {
98
+ unsigned int mask = 0x1 << irq_id;
99
+ //* Disable the interrupt on the interrupt controller
100
+ pAic->AIC_IDCR = mask ;
101
+ //* Clear the interrupt on the Interrupt Controller ( if one is pending )
102
+ pAic->AIC_ICCR = mask ;
103
+ }
104
+
105
+ //*----------------------------------------------------------------------------
106
+ //* \fn AT91F_AIC_ClearIt
107
+ //* \brief Clear corresponding IT number
108
+ //*----------------------------------------------------------------------------
109
+ __inline void AT91F_AIC_ClearIt (
110
+ AT91PS_AIC pAic, // \arg pointer to the AIC registers
111
+ unsigned int irq_id) // \arg interrupt number to initialize
112
+ {
113
+ //* Clear the interrupt on the Interrupt Controller ( if one is pending )
114
+ pAic->AIC_ICCR = (0x1 << irq_id);
115
+ }
116
+
117
+ //*----------------------------------------------------------------------------
118
+ //* \fn AT91F_AIC_AcknowledgeIt
119
+ //* \brief Acknowledge corresponding IT number
120
+ //*----------------------------------------------------------------------------
121
+ __inline void AT91F_AIC_AcknowledgeIt (
122
+ AT91PS_AIC pAic) // \arg pointer to the AIC registers
123
+ {
124
+ pAic->AIC_EOICR = pAic->AIC_EOICR;
125
+ }
126
+
127
+ //*----------------------------------------------------------------------------
128
+ //* \fn AT91F_AIC_SetExceptionVector
129
+ //* \brief Configure vector handler
130
+ //*----------------------------------------------------------------------------
131
+ __inline unsigned int AT91F_AIC_SetExceptionVector (
132
+ unsigned int *pVector, // \arg pointer to the AIC registers
133
+ void (*Handler) () ) // \arg Interrupt Handler
134
+ {
135
+ unsigned int oldVector = *pVector;
136
+
137
+ if ((unsigned int) Handler == (unsigned int) AT91C_AIC_BRANCH_OPCODE)
138
+ *pVector = (unsigned int) AT91C_AIC_BRANCH_OPCODE;
139
+ else
140
+ *pVector = (((((unsigned int) Handler) - ((unsigned int) pVector) - 0x8) >> 2) & 0x00FFFFFF) | 0xEA000000;
141
+
142
+ return oldVector;
143
+ }
144
+
145
+ //*----------------------------------------------------------------------------
146
+ //* \fn AT91F_AIC_Trig
147
+ //* \brief Trig an IT
148
+ //*----------------------------------------------------------------------------
149
+ __inline void AT91F_AIC_Trig (
150
+ AT91PS_AIC pAic, // \arg pointer to the AIC registers
151
+ unsigned int irq_id) // \arg interrupt number
152
+ {
153
+ pAic->AIC_ISCR = (0x1 << irq_id) ;
154
+ }
155
+
156
+ //*----------------------------------------------------------------------------
157
+ //* \fn AT91F_AIC_IsActive
158
+ //* \brief Test if an IT is active
159
+ //*----------------------------------------------------------------------------
160
+ __inline unsigned int AT91F_AIC_IsActive (
161
+ AT91PS_AIC pAic, // \arg pointer to the AIC registers
162
+ unsigned int irq_id) // \arg Interrupt Number
163
+ {
164
+ return (pAic->AIC_ISR & (0x1 << irq_id));
165
+ }
166
+
167
+ //*----------------------------------------------------------------------------
168
+ //* \fn AT91F_AIC_IsPending
169
+ //* \brief Test if an IT is pending
170
+ //*----------------------------------------------------------------------------
171
+ __inline unsigned int AT91F_AIC_IsPending (
172
+ AT91PS_AIC pAic, // \arg pointer to the AIC registers
173
+ unsigned int irq_id) // \arg Interrupt Number
174
+ {
175
+ return (pAic->AIC_IPR & (0x1 << irq_id));
176
+ }
177
+
178
+ //*----------------------------------------------------------------------------
179
+ //* \fn AT91F_AIC_Open
180
+ //* \brief Set exception vectors and AIC registers to default values
181
+ //*----------------------------------------------------------------------------
182
+ __inline void AT91F_AIC_Open(
183
+ AT91PS_AIC pAic, // \arg pointer to the AIC registers
184
+ void (*IrqHandler) (), // \arg Default IRQ vector exception
185
+ void (*FiqHandler) (), // \arg Default FIQ vector exception
186
+ void (*DefaultHandler) (), // \arg Default Handler set in ISR
187
+ void (*SpuriousHandler) (), // \arg Default Spurious Handler
188
+ unsigned int protectMode) // \arg Debug Control Register
189
+ {
190
+ int i;
191
+
192
+ // Disable all interrupts and set IVR to the default handler
193
+ for (i = 0; i < 32; ++i) {
194
+ AT91F_AIC_DisableIt(pAic, i);
195
+ AT91F_AIC_ConfigureIt(pAic, i, AT91C_AIC_PRIOR_LOWEST, AT91C_AIC_SRCTYPE_HIGH_LEVEL, DefaultHandler);
196
+ }
197
+
198
+ // Set the IRQ exception vector
199
+ AT91F_AIC_SetExceptionVector((unsigned int *) 0x18, IrqHandler);
200
+ // Set the Fast Interrupt exception vector
201
+ AT91F_AIC_SetExceptionVector((unsigned int *) 0x1C, FiqHandler);
202
+
203
+ pAic->AIC_SPU = (unsigned int) SpuriousHandler;
204
+ pAic->AIC_DCR = protectMode;
205
+ }
206
+ /* *****************************************************************************
207
+ SOFTWARE API FOR PDC
208
+ ***************************************************************************** */
209
+ //*----------------------------------------------------------------------------
210
+ //* \fn AT91F_PDC_SetNextRx
211
+ //* \brief Set the next receive transfer descriptor
212
+ //*----------------------------------------------------------------------------
213
+ __inline void AT91F_PDC_SetNextRx (
214
+ AT91PS_PDC pPDC, // \arg pointer to a PDC controller
215
+ char *address, // \arg address to the next bloc to be received
216
+ unsigned int bytes) // \arg number of bytes to be received
217
+ {
218
+ pPDC->PDC_RNPR = (unsigned int) address;
219
+ pPDC->PDC_RNCR = bytes;
220
+ }
221
+
222
+ //*----------------------------------------------------------------------------
223
+ //* \fn AT91F_PDC_SetNextTx
224
+ //* \brief Set the next transmit transfer descriptor
225
+ //*----------------------------------------------------------------------------
226
+ __inline void AT91F_PDC_SetNextTx (
227
+ AT91PS_PDC pPDC, // \arg pointer to a PDC controller
228
+ char *address, // \arg address to the next bloc to be transmitted
229
+ unsigned int bytes) // \arg number of bytes to be transmitted
230
+ {
231
+ pPDC->PDC_TNPR = (unsigned int) address;
232
+ pPDC->PDC_TNCR = bytes;
233
+ }
234
+
235
+ //*----------------------------------------------------------------------------
236
+ //* \fn AT91F_PDC_SetRx
237
+ //* \brief Set the receive transfer descriptor
238
+ //*----------------------------------------------------------------------------
239
+ __inline void AT91F_PDC_SetRx (
240
+ AT91PS_PDC pPDC, // \arg pointer to a PDC controller
241
+ char *address, // \arg address to the next bloc to be received
242
+ unsigned int bytes) // \arg number of bytes to be received
243
+ {
244
+ pPDC->PDC_RPR = (unsigned int) address;
245
+ pPDC->PDC_RCR = bytes;
246
+ }
247
+
248
+ //*----------------------------------------------------------------------------
249
+ //* \fn AT91F_PDC_SetTx
250
+ //* \brief Set the transmit transfer descriptor
251
+ //*----------------------------------------------------------------------------
252
+ __inline void AT91F_PDC_SetTx (
253
+ AT91PS_PDC pPDC, // \arg pointer to a PDC controller
254
+ char *address, // \arg address to the next bloc to be transmitted
255
+ unsigned int bytes) // \arg number of bytes to be transmitted
256
+ {
257
+ pPDC->PDC_TPR = (unsigned int) address;
258
+ pPDC->PDC_TCR = bytes;
259
+ }
260
+
261
+ //*----------------------------------------------------------------------------
262
+ //* \fn AT91F_PDC_EnableTx
263
+ //* \brief Enable transmit
264
+ //*----------------------------------------------------------------------------
265
+ __inline void AT91F_PDC_EnableTx (
266
+ AT91PS_PDC pPDC ) // \arg pointer to a PDC controller
267
+ {
268
+ pPDC->PDC_PTCR = AT91C_PDC_TXTEN;
269
+ }
270
+
271
+ //*----------------------------------------------------------------------------
272
+ //* \fn AT91F_PDC_EnableRx
273
+ //* \brief Enable receive
274
+ //*----------------------------------------------------------------------------
275
+ __inline void AT91F_PDC_EnableRx (
276
+ AT91PS_PDC pPDC ) // \arg pointer to a PDC controller
277
+ {
278
+ pPDC->PDC_PTCR = AT91C_PDC_RXTEN;
279
+ }
280
+
281
+ //*----------------------------------------------------------------------------
282
+ //* \fn AT91F_PDC_DisableTx
283
+ //* \brief Disable transmit
284
+ //*----------------------------------------------------------------------------
285
+ __inline void AT91F_PDC_DisableTx (
286
+ AT91PS_PDC pPDC ) // \arg pointer to a PDC controller
287
+ {
288
+ pPDC->PDC_PTCR = AT91C_PDC_TXTDIS;
289
+ }
290
+
291
+ //*----------------------------------------------------------------------------
292
+ //* \fn AT91F_PDC_DisableRx
293
+ //* \brief Disable receive
294
+ //*----------------------------------------------------------------------------
295
+ __inline void AT91F_PDC_DisableRx (
296
+ AT91PS_PDC pPDC ) // \arg pointer to a PDC controller
297
+ {
298
+ pPDC->PDC_PTCR = AT91C_PDC_RXTDIS;
299
+ }
300
+
301
+ //*----------------------------------------------------------------------------
302
+ //* \fn AT91F_PDC_IsTxEmpty
303
+ //* \brief Test if the current transfer descriptor has been sent
304
+ //*----------------------------------------------------------------------------
305
+ __inline int AT91F_PDC_IsTxEmpty ( // \return return 1 if transfer is complete
306
+ AT91PS_PDC pPDC ) // \arg pointer to a PDC controller
307
+ {
308
+ return !(pPDC->PDC_TCR);
309
+ }
310
+
311
+ //*----------------------------------------------------------------------------
312
+ //* \fn AT91F_PDC_IsNextTxEmpty
313
+ //* \brief Test if the next transfer descriptor has been moved to the current td
314
+ //*----------------------------------------------------------------------------
315
+ __inline int AT91F_PDC_IsNextTxEmpty ( // \return return 1 if transfer is complete
316
+ AT91PS_PDC pPDC ) // \arg pointer to a PDC controller
317
+ {
318
+ return !(pPDC->PDC_TNCR);
319
+ }
320
+
321
+ //*----------------------------------------------------------------------------
322
+ //* \fn AT91F_PDC_IsRxEmpty
323
+ //* \brief Test if the current transfer descriptor has been filled
324
+ //*----------------------------------------------------------------------------
325
+ __inline int AT91F_PDC_IsRxEmpty ( // \return return 1 if transfer is complete
326
+ AT91PS_PDC pPDC ) // \arg pointer to a PDC controller
327
+ {
328
+ return !(pPDC->PDC_RCR);
329
+ }
330
+
331
+ //*----------------------------------------------------------------------------
332
+ //* \fn AT91F_PDC_IsNextRxEmpty
333
+ //* \brief Test if the next transfer descriptor has been moved to the current td
334
+ //*----------------------------------------------------------------------------
335
+ __inline int AT91F_PDC_IsNextRxEmpty ( // \return return 1 if transfer is complete
336
+ AT91PS_PDC pPDC ) // \arg pointer to a PDC controller
337
+ {
338
+ return !(pPDC->PDC_RNCR);
339
+ }
340
+
341
+ //*----------------------------------------------------------------------------
342
+ //* \fn AT91F_PDC_Open
343
+ //* \brief Open PDC: disable TX and RX reset transfer descriptors, re-enable RX and TX
344
+ //*----------------------------------------------------------------------------
345
+ __inline void AT91F_PDC_Open (
346
+ AT91PS_PDC pPDC) // \arg pointer to a PDC controller
347
+ {
348
+ //* Disable the RX and TX PDC transfer requests
349
+ AT91F_PDC_DisableRx(pPDC);
350
+ AT91F_PDC_DisableTx(pPDC);
351
+
352
+ //* Reset all Counter register Next buffer first
353
+ AT91F_PDC_SetNextTx(pPDC, (char *) 0, 0);
354
+ AT91F_PDC_SetNextRx(pPDC, (char *) 0, 0);
355
+ AT91F_PDC_SetTx(pPDC, (char *) 0, 0);
356
+ AT91F_PDC_SetRx(pPDC, (char *) 0, 0);
357
+
358
+ //* Enable the RX and TX PDC transfer requests
359
+ AT91F_PDC_EnableRx(pPDC);
360
+ AT91F_PDC_EnableTx(pPDC);
361
+ }
362
+
363
+ //*----------------------------------------------------------------------------
364
+ //* \fn AT91F_PDC_Close
365
+ //* \brief Close PDC: disable TX and RX reset transfer descriptors
366
+ //*----------------------------------------------------------------------------
367
+ __inline void AT91F_PDC_Close (
368
+ AT91PS_PDC pPDC) // \arg pointer to a PDC controller
369
+ {
370
+ //* Disable the RX and TX PDC transfer requests
371
+ AT91F_PDC_DisableRx(pPDC);
372
+ AT91F_PDC_DisableTx(pPDC);
373
+
374
+ //* Reset all Counter register Next buffer first
375
+ AT91F_PDC_SetNextTx(pPDC, (char *) 0, 0);
376
+ AT91F_PDC_SetNextRx(pPDC, (char *) 0, 0);
377
+ AT91F_PDC_SetTx(pPDC, (char *) 0, 0);
378
+ AT91F_PDC_SetRx(pPDC, (char *) 0, 0);
379
+
380
+ }
381
+
382
+ //*----------------------------------------------------------------------------
383
+ //* \fn AT91F_PDC_SendFrame
384
+ //* \brief Close PDC: disable TX and RX reset transfer descriptors
385
+ //*----------------------------------------------------------------------------
386
+ __inline unsigned int AT91F_PDC_SendFrame(
387
+ AT91PS_PDC pPDC,
388
+ char *pBuffer,
389
+ unsigned int szBuffer,
390
+ char *pNextBuffer,
391
+ unsigned int szNextBuffer )
392
+ {
393
+ if (AT91F_PDC_IsTxEmpty(pPDC)) {
394
+ //* Buffer and next buffer can be initialized
395
+ AT91F_PDC_SetTx(pPDC, pBuffer, szBuffer);
396
+ AT91F_PDC_SetNextTx(pPDC, pNextBuffer, szNextBuffer);
397
+ return 2;
398
+ }
399
+ else if (AT91F_PDC_IsNextTxEmpty(pPDC)) {
400
+ //* Only one buffer can be initialized
401
+ AT91F_PDC_SetNextTx(pPDC, pBuffer, szBuffer);
402
+ return 1;
403
+ }
404
+ else {
405
+ //* All buffer are in use...
406
+ return 0;
407
+ }
408
+ }
409
+
410
+ //*----------------------------------------------------------------------------
411
+ //* \fn AT91F_PDC_ReceiveFrame
412
+ //* \brief Close PDC: disable TX and RX reset transfer descriptors
413
+ //*----------------------------------------------------------------------------
414
+ __inline unsigned int AT91F_PDC_ReceiveFrame (
415
+ AT91PS_PDC pPDC,
416
+ char *pBuffer,
417
+ unsigned int szBuffer,
418
+ char *pNextBuffer,
419
+ unsigned int szNextBuffer )
420
+ {
421
+ if (AT91F_PDC_IsRxEmpty(pPDC)) {
422
+ //* Buffer and next buffer can be initialized
423
+ AT91F_PDC_SetRx(pPDC, pBuffer, szBuffer);
424
+ AT91F_PDC_SetNextRx(pPDC, pNextBuffer, szNextBuffer);
425
+ return 2;
426
+ }
427
+ else if (AT91F_PDC_IsNextRxEmpty(pPDC)) {
428
+ //* Only one buffer can be initialized
429
+ AT91F_PDC_SetNextRx(pPDC, pBuffer, szBuffer);
430
+ return 1;
431
+ }
432
+ else {
433
+ //* All buffer are in use...
434
+ return 0;
435
+ }
436
+ }
437
+ /* *****************************************************************************
438
+ SOFTWARE API FOR DBGU
439
+ ***************************************************************************** */
440
+ //*----------------------------------------------------------------------------
441
+ //* \fn AT91F_DBGU_InterruptEnable
442
+ //* \brief Enable DBGU Interrupt
443
+ //*----------------------------------------------------------------------------
444
+ __inline void AT91F_DBGU_InterruptEnable(
445
+ AT91PS_DBGU pDbgu, // \arg pointer to a DBGU controller
446
+ unsigned int flag) // \arg dbgu interrupt to be enabled
447
+ {
448
+ pDbgu->DBGU_IER = flag;
449
+ }
450
+
451
+ //*----------------------------------------------------------------------------
452
+ //* \fn AT91F_DBGU_InterruptDisable
453
+ //* \brief Disable DBGU Interrupt
454
+ //*----------------------------------------------------------------------------
455
+ __inline void AT91F_DBGU_InterruptDisable(
456
+ AT91PS_DBGU pDbgu, // \arg pointer to a DBGU controller
457
+ unsigned int flag) // \arg dbgu interrupt to be disabled
458
+ {
459
+ pDbgu->DBGU_IDR = flag;
460
+ }
461
+
462
+ //*----------------------------------------------------------------------------
463
+ //* \fn AT91F_DBGU_GetInterruptMaskStatus
464
+ //* \brief Return DBGU Interrupt Mask Status
465
+ //*----------------------------------------------------------------------------
466
+ __inline unsigned int AT91F_DBGU_GetInterruptMaskStatus( // \return DBGU Interrupt Mask Status
467
+ AT91PS_DBGU pDbgu) // \arg pointer to a DBGU controller
468
+ {
469
+ return pDbgu->DBGU_IMR;
470
+ }
471
+
472
+ //*----------------------------------------------------------------------------
473
+ //* \fn AT91F_DBGU_IsInterruptMasked
474
+ //* \brief Test if DBGU Interrupt is Masked
475
+ //*----------------------------------------------------------------------------
476
+ __inline int AT91F_DBGU_IsInterruptMasked(
477
+ AT91PS_DBGU pDbgu, // \arg pointer to a DBGU controller
478
+ unsigned int flag) // \arg flag to be tested
479
+ {
480
+ return (AT91F_DBGU_GetInterruptMaskStatus(pDbgu) & flag);
481
+ }
482
+
483
+ /* *****************************************************************************
484
+ SOFTWARE API FOR PIO
485
+ ***************************************************************************** */
486
+ //*----------------------------------------------------------------------------
487
+ //* \fn AT91F_PIO_CfgPeriph
488
+ //* \brief Enable pins to be drived by peripheral
489
+ //*----------------------------------------------------------------------------
490
+ __inline void AT91F_PIO_CfgPeriph(
491
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
492
+ unsigned int periphAEnable, // \arg PERIPH A to enable
493
+ unsigned int periphBEnable) // \arg PERIPH B to enable
494
+
495
+ {
496
+ pPio->PIO_ASR = periphAEnable;
497
+ pPio->PIO_BSR = periphBEnable;
498
+ pPio->PIO_PDR = (periphAEnable | periphBEnable); // Set in Periph mode
499
+ }
500
+
501
+ //*----------------------------------------------------------------------------
502
+ //* \fn AT91F_PIO_CfgOutput
503
+ //* \brief Enable PIO in output mode
504
+ //*----------------------------------------------------------------------------
505
+ __inline void AT91F_PIO_CfgOutput(
506
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
507
+ unsigned int pioEnable) // \arg PIO to be enabled
508
+ {
509
+ pPio->PIO_PER = pioEnable; // Set in PIO mode
510
+ pPio->PIO_OER = pioEnable; // Configure in Output
511
+ }
512
+
513
+ //*----------------------------------------------------------------------------
514
+ //* \fn AT91F_PIO_CfgInput
515
+ //* \brief Enable PIO in input mode
516
+ //*----------------------------------------------------------------------------
517
+ __inline void AT91F_PIO_CfgInput(
518
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
519
+ unsigned int inputEnable) // \arg PIO to be enabled
520
+ {
521
+ // Disable output
522
+ pPio->PIO_ODR = inputEnable;
523
+ pPio->PIO_PER = inputEnable;
524
+ }
525
+
526
+ //*----------------------------------------------------------------------------
527
+ //* \fn AT91F_PIO_CfgOpendrain
528
+ //* \brief Configure PIO in open drain
529
+ //*----------------------------------------------------------------------------
530
+ __inline void AT91F_PIO_CfgOpendrain(
531
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
532
+ unsigned int multiDrvEnable) // \arg pio to be configured in open drain
533
+ {
534
+ // Configure the multi-drive option
535
+ pPio->PIO_MDDR = ~multiDrvEnable;
536
+ pPio->PIO_MDER = multiDrvEnable;
537
+ }
538
+
539
+ //*----------------------------------------------------------------------------
540
+ //* \fn AT91F_PIO_CfgPullup
541
+ //* \brief Enable pullup on PIO
542
+ //*----------------------------------------------------------------------------
543
+ __inline void AT91F_PIO_CfgPullup(
544
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
545
+ unsigned int pullupEnable) // \arg enable pullup on PIO
546
+ {
547
+ // Connect or not Pullup
548
+ pPio->PIO_PPUDR = ~pullupEnable;
549
+ pPio->PIO_PPUER = pullupEnable;
550
+ }
551
+
552
+ //*----------------------------------------------------------------------------
553
+ //* \fn AT91F_PIO_CfgDirectDrive
554
+ //* \brief Enable direct drive on PIO
555
+ //*----------------------------------------------------------------------------
556
+ __inline void AT91F_PIO_CfgDirectDrive(
557
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
558
+ unsigned int directDrive) // \arg PIO to be configured with direct drive
559
+
560
+ {
561
+ // Configure the Direct Drive
562
+ pPio->PIO_OWDR = ~directDrive;
563
+ pPio->PIO_OWER = directDrive;
564
+ }
565
+
566
+ //*----------------------------------------------------------------------------
567
+ //* \fn AT91F_PIO_CfgInputFilter
568
+ //* \brief Enable input filter on input PIO
569
+ //*----------------------------------------------------------------------------
570
+ __inline void AT91F_PIO_CfgInputFilter(
571
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
572
+ unsigned int inputFilter) // \arg PIO to be configured with input filter
573
+
574
+ {
575
+ // Configure the Direct Drive
576
+ pPio->PIO_IFDR = ~inputFilter;
577
+ pPio->PIO_IFER = inputFilter;
578
+ }
579
+
580
+ //*----------------------------------------------------------------------------
581
+ //* \fn AT91F_PIO_GetInput
582
+ //* \brief Return PIO input value
583
+ //*----------------------------------------------------------------------------
584
+ __inline unsigned int AT91F_PIO_GetInput( // \return PIO input
585
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
586
+ {
587
+ return pPio->PIO_PDSR;
588
+ }
589
+
590
+ //*----------------------------------------------------------------------------
591
+ //* \fn AT91F_PIO_IsInputSet
592
+ //* \brief Test if PIO is input flag is active
593
+ //*----------------------------------------------------------------------------
594
+ __inline int AT91F_PIO_IsInputSet(
595
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
596
+ unsigned int flag) // \arg flag to be tested
597
+ {
598
+ return (AT91F_PIO_GetInput(pPio) & flag);
599
+ }
600
+
601
+
602
+ //*----------------------------------------------------------------------------
603
+ //* \fn AT91F_PIO_SetOutput
604
+ //* \brief Set to 1 output PIO
605
+ //*----------------------------------------------------------------------------
606
+ __inline void AT91F_PIO_SetOutput(
607
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
608
+ unsigned int flag) // \arg output to be set
609
+ {
610
+ pPio->PIO_SODR = flag;
611
+ }
612
+
613
+ //*----------------------------------------------------------------------------
614
+ //* \fn AT91F_PIO_ClearOutput
615
+ //* \brief Set to 0 output PIO
616
+ //*----------------------------------------------------------------------------
617
+ __inline void AT91F_PIO_ClearOutput(
618
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
619
+ unsigned int flag) // \arg output to be cleared
620
+ {
621
+ pPio->PIO_CODR = flag;
622
+ }
623
+
624
+ //*----------------------------------------------------------------------------
625
+ //* \fn AT91F_PIO_ForceOutput
626
+ //* \brief Force output when Direct drive option is enabled
627
+ //*----------------------------------------------------------------------------
628
+ __inline void AT91F_PIO_ForceOutput(
629
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
630
+ unsigned int flag) // \arg output to be forced
631
+ {
632
+ pPio->PIO_ODSR = flag;
633
+ }
634
+
635
+ //*----------------------------------------------------------------------------
636
+ //* \fn AT91F_PIO_Enable
637
+ //* \brief Enable PIO
638
+ //*----------------------------------------------------------------------------
639
+ __inline void AT91F_PIO_Enable(
640
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
641
+ unsigned int flag) // \arg pio to be enabled
642
+ {
643
+ pPio->PIO_PER = flag;
644
+ }
645
+
646
+ //*----------------------------------------------------------------------------
647
+ //* \fn AT91F_PIO_Disable
648
+ //* \brief Disable PIO
649
+ //*----------------------------------------------------------------------------
650
+ __inline void AT91F_PIO_Disable(
651
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
652
+ unsigned int flag) // \arg pio to be disabled
653
+ {
654
+ pPio->PIO_PDR = flag;
655
+ }
656
+
657
+ //*----------------------------------------------------------------------------
658
+ //* \fn AT91F_PIO_GetStatus
659
+ //* \brief Return PIO Status
660
+ //*----------------------------------------------------------------------------
661
+ __inline unsigned int AT91F_PIO_GetStatus( // \return PIO Status
662
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
663
+ {
664
+ return pPio->PIO_PSR;
665
+ }
666
+
667
+ //*----------------------------------------------------------------------------
668
+ //* \fn AT91F_PIO_IsSet
669
+ //* \brief Test if PIO is Set
670
+ //*----------------------------------------------------------------------------
671
+ __inline int AT91F_PIO_IsSet(
672
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
673
+ unsigned int flag) // \arg flag to be tested
674
+ {
675
+ return (AT91F_PIO_GetStatus(pPio) & flag);
676
+ }
677
+
678
+ //*----------------------------------------------------------------------------
679
+ //* \fn AT91F_PIO_OutputEnable
680
+ //* \brief Output Enable PIO
681
+ //*----------------------------------------------------------------------------
682
+ __inline void AT91F_PIO_OutputEnable(
683
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
684
+ unsigned int flag) // \arg pio output to be enabled
685
+ {
686
+ pPio->PIO_OER = flag;
687
+ }
688
+
689
+ //*----------------------------------------------------------------------------
690
+ //* \fn AT91F_PIO_OutputDisable
691
+ //* \brief Output Enable PIO
692
+ //*----------------------------------------------------------------------------
693
+ __inline void AT91F_PIO_OutputDisable(
694
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
695
+ unsigned int flag) // \arg pio output to be disabled
696
+ {
697
+ pPio->PIO_ODR = flag;
698
+ }
699
+
700
+ //*----------------------------------------------------------------------------
701
+ //* \fn AT91F_PIO_GetOutputStatus
702
+ //* \brief Return PIO Output Status
703
+ //*----------------------------------------------------------------------------
704
+ __inline unsigned int AT91F_PIO_GetOutputStatus( // \return PIO Output Status
705
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
706
+ {
707
+ return pPio->PIO_OSR;
708
+ }
709
+
710
+ //*----------------------------------------------------------------------------
711
+ //* \fn AT91F_PIO_IsOuputSet
712
+ //* \brief Test if PIO Output is Set
713
+ //*----------------------------------------------------------------------------
714
+ __inline int AT91F_PIO_IsOutputSet(
715
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
716
+ unsigned int flag) // \arg flag to be tested
717
+ {
718
+ return (AT91F_PIO_GetOutputStatus(pPio) & flag);
719
+ }
720
+
721
+ //*----------------------------------------------------------------------------
722
+ //* \fn AT91F_PIO_InputFilterEnable
723
+ //* \brief Input Filter Enable PIO
724
+ //*----------------------------------------------------------------------------
725
+ __inline void AT91F_PIO_InputFilterEnable(
726
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
727
+ unsigned int flag) // \arg pio input filter to be enabled
728
+ {
729
+ pPio->PIO_IFER = flag;
730
+ }
731
+
732
+ //*----------------------------------------------------------------------------
733
+ //* \fn AT91F_PIO_InputFilterDisable
734
+ //* \brief Input Filter Disable PIO
735
+ //*----------------------------------------------------------------------------
736
+ __inline void AT91F_PIO_InputFilterDisable(
737
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
738
+ unsigned int flag) // \arg pio input filter to be disabled
739
+ {
740
+ pPio->PIO_IFDR = flag;
741
+ }
742
+
743
+ //*----------------------------------------------------------------------------
744
+ //* \fn AT91F_PIO_GetInputFilterStatus
745
+ //* \brief Return PIO Input Filter Status
746
+ //*----------------------------------------------------------------------------
747
+ __inline unsigned int AT91F_PIO_GetInputFilterStatus( // \return PIO Input Filter Status
748
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
749
+ {
750
+ return pPio->PIO_IFSR;
751
+ }
752
+
753
+ //*----------------------------------------------------------------------------
754
+ //* \fn AT91F_PIO_IsInputFilterSet
755
+ //* \brief Test if PIO Input filter is Set
756
+ //*----------------------------------------------------------------------------
757
+ __inline int AT91F_PIO_IsInputFilterSet(
758
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
759
+ unsigned int flag) // \arg flag to be tested
760
+ {
761
+ return (AT91F_PIO_GetInputFilterStatus(pPio) & flag);
762
+ }
763
+
764
+ //*----------------------------------------------------------------------------
765
+ //* \fn AT91F_PIO_GetOutputDataStatus
766
+ //* \brief Return PIO Output Data Status
767
+ //*----------------------------------------------------------------------------
768
+ __inline unsigned int AT91F_PIO_GetOutputDataStatus( // \return PIO Output Data Status
769
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
770
+ {
771
+ return pPio->PIO_ODSR;
772
+ }
773
+
774
+ //*----------------------------------------------------------------------------
775
+ //* \fn AT91F_PIO_InterruptEnable
776
+ //* \brief Enable PIO Interrupt
777
+ //*----------------------------------------------------------------------------
778
+ __inline void AT91F_PIO_InterruptEnable(
779
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
780
+ unsigned int flag) // \arg pio interrupt to be enabled
781
+ {
782
+ pPio->PIO_IER = flag;
783
+ }
784
+
785
+ //*----------------------------------------------------------------------------
786
+ //* \fn AT91F_PIO_InterruptDisable
787
+ //* \brief Disable PIO Interrupt
788
+ //*----------------------------------------------------------------------------
789
+ __inline void AT91F_PIO_InterruptDisable(
790
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
791
+ unsigned int flag) // \arg pio interrupt to be disabled
792
+ {
793
+ pPio->PIO_IDR = flag;
794
+ }
795
+
796
+ //*----------------------------------------------------------------------------
797
+ //* \fn AT91F_PIO_GetInterruptMaskStatus
798
+ //* \brief Return PIO Interrupt Mask Status
799
+ //*----------------------------------------------------------------------------
800
+ __inline unsigned int AT91F_PIO_GetInterruptMaskStatus( // \return PIO Interrupt Mask Status
801
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
802
+ {
803
+ return pPio->PIO_IMR;
804
+ }
805
+
806
+ //*----------------------------------------------------------------------------
807
+ //* \fn AT91F_PIO_GetInterruptStatus
808
+ //* \brief Return PIO Interrupt Status
809
+ //*----------------------------------------------------------------------------
810
+ __inline unsigned int AT91F_PIO_GetInterruptStatus( // \return PIO Interrupt Status
811
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
812
+ {
813
+ return pPio->PIO_ISR;
814
+ }
815
+
816
+ //*----------------------------------------------------------------------------
817
+ //* \fn AT91F_PIO_IsInterruptMasked
818
+ //* \brief Test if PIO Interrupt is Masked
819
+ //*----------------------------------------------------------------------------
820
+ __inline int AT91F_PIO_IsInterruptMasked(
821
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
822
+ unsigned int flag) // \arg flag to be tested
823
+ {
824
+ return (AT91F_PIO_GetInterruptMaskStatus(pPio) & flag);
825
+ }
826
+
827
+ //*----------------------------------------------------------------------------
828
+ //* \fn AT91F_PIO_IsInterruptSet
829
+ //* \brief Test if PIO Interrupt is Set
830
+ //*----------------------------------------------------------------------------
831
+ __inline int AT91F_PIO_IsInterruptSet(
832
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
833
+ unsigned int flag) // \arg flag to be tested
834
+ {
835
+ return (AT91F_PIO_GetInterruptStatus(pPio) & flag);
836
+ }
837
+
838
+ //*----------------------------------------------------------------------------
839
+ //* \fn AT91F_PIO_MultiDriverEnable
840
+ //* \brief Multi Driver Enable PIO
841
+ //*----------------------------------------------------------------------------
842
+ __inline void AT91F_PIO_MultiDriverEnable(
843
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
844
+ unsigned int flag) // \arg pio to be enabled
845
+ {
846
+ pPio->PIO_MDER = flag;
847
+ }
848
+
849
+ //*----------------------------------------------------------------------------
850
+ //* \fn AT91F_PIO_MultiDriverDisable
851
+ //* \brief Multi Driver Disable PIO
852
+ //*----------------------------------------------------------------------------
853
+ __inline void AT91F_PIO_MultiDriverDisable(
854
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
855
+ unsigned int flag) // \arg pio to be disabled
856
+ {
857
+ pPio->PIO_MDDR = flag;
858
+ }
859
+
860
+ //*----------------------------------------------------------------------------
861
+ //* \fn AT91F_PIO_GetMultiDriverStatus
862
+ //* \brief Return PIO Multi Driver Status
863
+ //*----------------------------------------------------------------------------
864
+ __inline unsigned int AT91F_PIO_GetMultiDriverStatus( // \return PIO Multi Driver Status
865
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
866
+ {
867
+ return pPio->PIO_MDSR;
868
+ }
869
+
870
+ //*----------------------------------------------------------------------------
871
+ //* \fn AT91F_PIO_IsMultiDriverSet
872
+ //* \brief Test if PIO MultiDriver is Set
873
+ //*----------------------------------------------------------------------------
874
+ __inline int AT91F_PIO_IsMultiDriverSet(
875
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
876
+ unsigned int flag) // \arg flag to be tested
877
+ {
878
+ return (AT91F_PIO_GetMultiDriverStatus(pPio) & flag);
879
+ }
880
+
881
+ //*----------------------------------------------------------------------------
882
+ //* \fn AT91F_PIO_A_RegisterSelection
883
+ //* \brief PIO A Register Selection
884
+ //*----------------------------------------------------------------------------
885
+ __inline void AT91F_PIO_A_RegisterSelection(
886
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
887
+ unsigned int flag) // \arg pio A register selection
888
+ {
889
+ pPio->PIO_ASR = flag;
890
+ }
891
+
892
+ //*----------------------------------------------------------------------------
893
+ //* \fn AT91F_PIO_B_RegisterSelection
894
+ //* \brief PIO B Register Selection
895
+ //*----------------------------------------------------------------------------
896
+ __inline void AT91F_PIO_B_RegisterSelection(
897
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
898
+ unsigned int flag) // \arg pio B register selection
899
+ {
900
+ pPio->PIO_BSR = flag;
901
+ }
902
+
903
+ //*----------------------------------------------------------------------------
904
+ //* \fn AT91F_PIO_Get_AB_RegisterStatus
905
+ //* \brief Return PIO Interrupt Status
906
+ //*----------------------------------------------------------------------------
907
+ __inline unsigned int AT91F_PIO_Get_AB_RegisterStatus( // \return PIO AB Register Status
908
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
909
+ {
910
+ return pPio->PIO_ABSR;
911
+ }
912
+
913
+ //*----------------------------------------------------------------------------
914
+ //* \fn AT91F_PIO_IsAB_RegisterSet
915
+ //* \brief Test if PIO AB Register is Set
916
+ //*----------------------------------------------------------------------------
917
+ __inline int AT91F_PIO_IsAB_RegisterSet(
918
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
919
+ unsigned int flag) // \arg flag to be tested
920
+ {
921
+ return (AT91F_PIO_Get_AB_RegisterStatus(pPio) & flag);
922
+ }
923
+
924
+ //*----------------------------------------------------------------------------
925
+ //* \fn AT91F_PIO_OutputWriteEnable
926
+ //* \brief Output Write Enable PIO
927
+ //*----------------------------------------------------------------------------
928
+ __inline void AT91F_PIO_OutputWriteEnable(
929
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
930
+ unsigned int flag) // \arg pio output write to be enabled
931
+ {
932
+ pPio->PIO_OWER = flag;
933
+ }
934
+
935
+ //*----------------------------------------------------------------------------
936
+ //* \fn AT91F_PIO_OutputWriteDisable
937
+ //* \brief Output Write Disable PIO
938
+ //*----------------------------------------------------------------------------
939
+ __inline void AT91F_PIO_OutputWriteDisable(
940
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
941
+ unsigned int flag) // \arg pio output write to be disabled
942
+ {
943
+ pPio->PIO_OWDR = flag;
944
+ }
945
+
946
+ //*----------------------------------------------------------------------------
947
+ //* \fn AT91F_PIO_GetOutputWriteStatus
948
+ //* \brief Return PIO Output Write Status
949
+ //*----------------------------------------------------------------------------
950
+ __inline unsigned int AT91F_PIO_GetOutputWriteStatus( // \return PIO Output Write Status
951
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
952
+ {
953
+ return pPio->PIO_OWSR;
954
+ }
955
+
956
+ //*----------------------------------------------------------------------------
957
+ //* \fn AT91F_PIO_IsOutputWriteSet
958
+ //* \brief Test if PIO OutputWrite is Set
959
+ //*----------------------------------------------------------------------------
960
+ __inline int AT91F_PIO_IsOutputWriteSet(
961
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
962
+ unsigned int flag) // \arg flag to be tested
963
+ {
964
+ return (AT91F_PIO_GetOutputWriteStatus(pPio) & flag);
965
+ }
966
+
967
+ //*----------------------------------------------------------------------------
968
+ //* \fn AT91F_PIO_GetCfgPullup
969
+ //* \brief Return PIO Configuration Pullup
970
+ //*----------------------------------------------------------------------------
971
+ __inline unsigned int AT91F_PIO_GetCfgPullup( // \return PIO Configuration Pullup
972
+ AT91PS_PIO pPio) // \arg pointer to a PIO controller
973
+ {
974
+ return pPio->PIO_PPUSR;
975
+ }
976
+
977
+ //*----------------------------------------------------------------------------
978
+ //* \fn AT91F_PIO_IsOutputDataStatusSet
979
+ //* \brief Test if PIO Output Data Status is Set
980
+ //*----------------------------------------------------------------------------
981
+ __inline int AT91F_PIO_IsOutputDataStatusSet(
982
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
983
+ unsigned int flag) // \arg flag to be tested
984
+ {
985
+ return (AT91F_PIO_GetOutputDataStatus(pPio) & flag);
986
+ }
987
+
988
+ //*----------------------------------------------------------------------------
989
+ //* \fn AT91F_PIO_IsCfgPullupStatusSet
990
+ //* \brief Test if PIO Configuration Pullup Status is Set
991
+ //*----------------------------------------------------------------------------
992
+ __inline int AT91F_PIO_IsCfgPullupStatusSet(
993
+ AT91PS_PIO pPio, // \arg pointer to a PIO controller
994
+ unsigned int flag) // \arg flag to be tested
995
+ {
996
+ return (~AT91F_PIO_GetCfgPullup(pPio) & flag);
997
+ }
998
+
999
+ /* *****************************************************************************
1000
+ SOFTWARE API FOR PMC
1001
+ ***************************************************************************** */
1002
+ //*----------------------------------------------------------------------------
1003
+ //* \fn AT91F_PMC_CfgSysClkEnableReg
1004
+ //* \brief Configure the System Clock Enable Register of the PMC controller
1005
+ //*----------------------------------------------------------------------------
1006
+ __inline void AT91F_PMC_CfgSysClkEnableReg (
1007
+ AT91PS_PMC pPMC, // \arg pointer to PMC controller
1008
+ unsigned int mode)
1009
+ {
1010
+ //* Write to the SCER register
1011
+ pPMC->PMC_SCER = mode;
1012
+ }
1013
+
1014
+ //*----------------------------------------------------------------------------
1015
+ //* \fn AT91F_PMC_CfgSysClkDisableReg
1016
+ //* \brief Configure the System Clock Disable Register of the PMC controller
1017
+ //*----------------------------------------------------------------------------
1018
+ __inline void AT91F_PMC_CfgSysClkDisableReg (
1019
+ AT91PS_PMC pPMC, // \arg pointer to PMC controller
1020
+ unsigned int mode)
1021
+ {
1022
+ //* Write to the SCDR register
1023
+ pPMC->PMC_SCDR = mode;
1024
+ }
1025
+
1026
+ //*----------------------------------------------------------------------------
1027
+ //* \fn AT91F_PMC_GetSysClkStatusReg
1028
+ //* \brief Return the System Clock Status Register of the PMC controller
1029
+ //*----------------------------------------------------------------------------
1030
+ __inline unsigned int AT91F_PMC_GetSysClkStatusReg (
1031
+ AT91PS_PMC pPMC // pointer to a CAN controller
1032
+ )
1033
+ {
1034
+ return pPMC->PMC_SCSR;
1035
+ }
1036
+
1037
+ //*----------------------------------------------------------------------------
1038
+ //* \fn AT91F_PMC_EnablePeriphClock
1039
+ //* \brief Enable peripheral clock
1040
+ //*----------------------------------------------------------------------------
1041
+ __inline void AT91F_PMC_EnablePeriphClock (
1042
+ AT91PS_PMC pPMC, // \arg pointer to PMC controller
1043
+ unsigned int periphIds) // \arg IDs of peripherals to enable
1044
+ {
1045
+ pPMC->PMC_PCER = periphIds;
1046
+ }
1047
+
1048
+ //*----------------------------------------------------------------------------
1049
+ //* \fn AT91F_PMC_DisablePeriphClock
1050
+ //* \brief Disable peripheral clock
1051
+ //*----------------------------------------------------------------------------
1052
+ __inline void AT91F_PMC_DisablePeriphClock (
1053
+ AT91PS_PMC pPMC, // \arg pointer to PMC controller
1054
+ unsigned int periphIds) // \arg IDs of peripherals to enable
1055
+ {
1056
+ pPMC->PMC_PCDR = periphIds;
1057
+ }
1058
+
1059
+ //*----------------------------------------------------------------------------
1060
+ //* \fn AT91F_PMC_GetPeriphClock
1061
+ //* \brief Get peripheral clock status
1062
+ //*----------------------------------------------------------------------------
1063
+ __inline unsigned int AT91F_PMC_GetPeriphClock (
1064
+ AT91PS_PMC pPMC) // \arg pointer to PMC controller
1065
+ {
1066
+ return pPMC->PMC_PCSR;
1067
+ }
1068
+
1069
+ //*----------------------------------------------------------------------------
1070
+ //* \fn AT91F_CKGR_CfgMainOscillatorReg
1071
+ //* \brief Cfg the main oscillator
1072
+ //*----------------------------------------------------------------------------
1073
+ __inline void AT91F_CKGR_CfgMainOscillatorReg (
1074
+ AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller
1075
+ unsigned int mode)
1076
+ {
1077
+ pCKGR->CKGR_MOR = mode;
1078
+ }
1079
+
1080
+ //*----------------------------------------------------------------------------
1081
+ //* \fn AT91F_CKGR_GetMainOscillatorReg
1082
+ //* \brief Cfg the main oscillator
1083
+ //*----------------------------------------------------------------------------
1084
+ __inline unsigned int AT91F_CKGR_GetMainOscillatorReg (
1085
+ AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller
1086
+ {
1087
+ return pCKGR->CKGR_MOR;
1088
+ }
1089
+
1090
+ //*----------------------------------------------------------------------------
1091
+ //* \fn AT91F_CKGR_EnableMainOscillator
1092
+ //* \brief Enable the main oscillator
1093
+ //*----------------------------------------------------------------------------
1094
+ __inline void AT91F_CKGR_EnableMainOscillator(
1095
+ AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller
1096
+ {
1097
+ pCKGR->CKGR_MOR |= AT91C_CKGR_MOSCEN;
1098
+ }
1099
+
1100
+ //*----------------------------------------------------------------------------
1101
+ //* \fn AT91F_CKGR_DisableMainOscillator
1102
+ //* \brief Disable the main oscillator
1103
+ //*----------------------------------------------------------------------------
1104
+ __inline void AT91F_CKGR_DisableMainOscillator (
1105
+ AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller
1106
+ {
1107
+ pCKGR->CKGR_MOR &= ~AT91C_CKGR_MOSCEN;
1108
+ }
1109
+
1110
+ //*----------------------------------------------------------------------------
1111
+ //* \fn AT91F_CKGR_CfgMainOscStartUpTime
1112
+ //* \brief Cfg MOR Register according to the main osc startup time
1113
+ //*----------------------------------------------------------------------------
1114
+ __inline void AT91F_CKGR_CfgMainOscStartUpTime (
1115
+ AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller
1116
+ unsigned int startup_time, // \arg main osc startup time in microsecond (us)
1117
+ unsigned int slowClock) // \arg slowClock in Hz
1118
+ {
1119
+ pCKGR->CKGR_MOR &= ~AT91C_CKGR_OSCOUNT;
1120
+ pCKGR->CKGR_MOR |= ((slowClock * startup_time)/(8*1000000)) << 8;
1121
+ }
1122
+
1123
+ //*----------------------------------------------------------------------------
1124
+ //* \fn AT91F_CKGR_GetMainClockFreqReg
1125
+ //* \brief Cfg the main oscillator
1126
+ //*----------------------------------------------------------------------------
1127
+ __inline unsigned int AT91F_CKGR_GetMainClockFreqReg (
1128
+ AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller
1129
+ {
1130
+ return pCKGR->CKGR_MCFR;
1131
+ }
1132
+
1133
+ //*----------------------------------------------------------------------------
1134
+ //* \fn AT91F_CKGR_GetMainClock
1135
+ //* \brief Return Main clock in Hz
1136
+ //*----------------------------------------------------------------------------
1137
+ __inline unsigned int AT91F_CKGR_GetMainClock (
1138
+ AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller
1139
+ unsigned int slowClock) // \arg slowClock in Hz
1140
+ {
1141
+ return ((pCKGR->CKGR_MCFR & AT91C_CKGR_MAINF) * slowClock) >> 4;
1142
+ }
1143
+
1144
+ //*----------------------------------------------------------------------------
1145
+ //* \fn AT91F_PMC_CfgMCKReg
1146
+ //* \brief Cfg Master Clock Register
1147
+ //*----------------------------------------------------------------------------
1148
+ __inline void AT91F_PMC_CfgMCKReg (
1149
+ AT91PS_PMC pPMC, // \arg pointer to PMC controller
1150
+ unsigned int mode)
1151
+ {
1152
+ pPMC->PMC_MCKR = mode;
1153
+ }
1154
+
1155
+ //*----------------------------------------------------------------------------
1156
+ //* \fn AT91F_PMC_GetMCKReg
1157
+ //* \brief Return Master Clock Register
1158
+ //*----------------------------------------------------------------------------
1159
+ __inline unsigned int AT91F_PMC_GetMCKReg(
1160
+ AT91PS_PMC pPMC) // \arg pointer to PMC controller
1161
+ {
1162
+ return pPMC->PMC_MCKR;
1163
+ }
1164
+
1165
+ //*------------------------------------------------------------------------------
1166
+ //* \fn AT91F_PMC_GetMasterClock
1167
+ //* \brief Return master clock in Hz which correponds to processor clock for ARM7
1168
+ //*------------------------------------------------------------------------------
1169
+ __inline unsigned int AT91F_PMC_GetMasterClock (
1170
+ AT91PS_PMC pPMC, // \arg pointer to PMC controller
1171
+ AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller
1172
+ unsigned int slowClock) // \arg slowClock in Hz
1173
+ {
1174
+ unsigned int reg = pPMC->PMC_MCKR;
1175
+ unsigned int prescaler = (1 << ((reg & AT91C_PMC_PRES) >> 2));
1176
+ unsigned int pllDivider, pllMultiplier;
1177
+
1178
+ switch (reg & AT91C_PMC_CSS) {
1179
+ case AT91C_PMC_CSS_SLOW_CLK: // Slow clock selected
1180
+ return slowClock / prescaler;
1181
+ case AT91C_PMC_CSS_MAIN_CLK: // Main clock is selected
1182
+ return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / prescaler;
1183
+ case AT91C_PMC_CSS_PLL_CLK: // PLLB clock is selected
1184
+ reg = pCKGR->CKGR_PLLR;
1185
+ pllDivider = (reg & AT91C_CKGR_DIV);
1186
+ pllMultiplier = ((reg & AT91C_CKGR_MUL) >> 16) + 1;
1187
+ return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / pllDivider * pllMultiplier / prescaler;
1188
+ }
1189
+ return 0;
1190
+ }
1191
+
1192
+ //*----------------------------------------------------------------------------
1193
+ //* \fn AT91F_PMC_EnablePCK
1194
+ //* \brief Enable peripheral clock
1195
+ //*----------------------------------------------------------------------------
1196
+ __inline void AT91F_PMC_EnablePCK (
1197
+ AT91PS_PMC pPMC, // \arg pointer to PMC controller
1198
+ unsigned int pck, // \arg Peripheral clock identifier 0 .. 7
1199
+ unsigned int mode)
1200
+ {
1201
+ pPMC->PMC_PCKR[pck] = mode;
1202
+ pPMC->PMC_SCER = (1 << pck) << 8;
1203
+ }
1204
+
1205
+ //*----------------------------------------------------------------------------
1206
+ //* \fn AT91F_PMC_DisablePCK
1207
+ //* \brief Enable peripheral clock
1208
+ //*----------------------------------------------------------------------------
1209
+ __inline void AT91F_PMC_DisablePCK (
1210
+ AT91PS_PMC pPMC, // \arg pointer to PMC controller
1211
+ unsigned int pck) // \arg Peripheral clock identifier 0 .. 7
1212
+ {
1213
+ pPMC->PMC_SCDR = (1 << pck) << 8;
1214
+ }
1215
+
1216
+ //*----------------------------------------------------------------------------
1217
+ //* \fn AT91F_PMC_EnableIt
1218
+ //* \brief Enable PMC interrupt
1219
+ //*----------------------------------------------------------------------------
1220
+ __inline void AT91F_PMC_EnableIt (
1221
+ AT91PS_PMC pPMC, // pointer to a PMC controller
1222
+ unsigned int flag) // IT to be enabled
1223
+ {
1224
+ //* Write to the IER register
1225
+ pPMC->PMC_IER = flag;
1226
+ }
1227
+
1228
+ //*----------------------------------------------------------------------------
1229
+ //* \fn AT91F_PMC_DisableIt
1230
+ //* \brief Disable PMC interrupt
1231
+ //*----------------------------------------------------------------------------
1232
+ __inline void AT91F_PMC_DisableIt (
1233
+ AT91PS_PMC pPMC, // pointer to a PMC controller
1234
+ unsigned int flag) // IT to be disabled
1235
+ {
1236
+ //* Write to the IDR register
1237
+ pPMC->PMC_IDR = flag;
1238
+ }
1239
+
1240
+ //*----------------------------------------------------------------------------
1241
+ //* \fn AT91F_PMC_GetStatus
1242
+ //* \brief Return PMC Interrupt Status
1243
+ //*----------------------------------------------------------------------------
1244
+ __inline unsigned int AT91F_PMC_GetStatus( // \return PMC Interrupt Status
1245
+ AT91PS_PMC pPMC) // pointer to a PMC controller
1246
+ {
1247
+ return pPMC->PMC_SR;
1248
+ }
1249
+
1250
+ //*----------------------------------------------------------------------------
1251
+ //* \fn AT91F_PMC_GetInterruptMaskStatus
1252
+ //* \brief Return PMC Interrupt Mask Status
1253
+ //*----------------------------------------------------------------------------
1254
+ __inline unsigned int AT91F_PMC_GetInterruptMaskStatus( // \return PMC Interrupt Mask Status
1255
+ AT91PS_PMC pPMC) // pointer to a PMC controller
1256
+ {
1257
+ return pPMC->PMC_IMR;
1258
+ }
1259
+
1260
+ //*----------------------------------------------------------------------------
1261
+ //* \fn AT91F_PMC_IsInterruptMasked
1262
+ //* \brief Test if PMC Interrupt is Masked
1263
+ //*----------------------------------------------------------------------------
1264
+ __inline unsigned int AT91F_PMC_IsInterruptMasked(
1265
+ AT91PS_PMC pPMC, // \arg pointer to a PMC controller
1266
+ unsigned int flag) // \arg flag to be tested
1267
+ {
1268
+ return (AT91F_PMC_GetInterruptMaskStatus(pPMC) & flag);
1269
+ }
1270
+
1271
+ //*----------------------------------------------------------------------------
1272
+ //* \fn AT91F_PMC_IsStatusSet
1273
+ //* \brief Test if PMC Status is Set
1274
+ //*----------------------------------------------------------------------------
1275
+ __inline unsigned int AT91F_PMC_IsStatusSet(
1276
+ AT91PS_PMC pPMC, // \arg pointer to a PMC controller
1277
+ unsigned int flag) // \arg flag to be tested
1278
+ {
1279
+ return (AT91F_PMC_GetStatus(pPMC) & flag);
1280
+ }
1281
+
1282
+ // ----------------------------------------------------------------------------
1283
+ // \fn AT91F_CKGR_CfgPLLReg
1284
+ // \brief Cfg the PLL Register
1285
+ // ----------------------------------------------------------------------------
1286
+ __inline void AT91F_CKGR_CfgPLLReg (
1287
+ AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller
1288
+ unsigned int mode)
1289
+ {
1290
+ pCKGR->CKGR_PLLR = mode;
1291
+ }
1292
+
1293
+ // ----------------------------------------------------------------------------
1294
+ // \fn AT91F_CKGR_GetPLLReg
1295
+ // \brief Get the PLL Register
1296
+ // ----------------------------------------------------------------------------
1297
+ __inline unsigned int AT91F_CKGR_GetPLLReg (
1298
+ AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller
1299
+ {
1300
+ return pCKGR->CKGR_PLLR;
1301
+ }
1302
+
1303
+
1304
+ /* *****************************************************************************
1305
+ SOFTWARE API FOR RSTC
1306
+ ***************************************************************************** */
1307
+ //*----------------------------------------------------------------------------
1308
+ //* \fn AT91F_RSTSoftReset
1309
+ //* \brief Start Software Reset
1310
+ //*----------------------------------------------------------------------------
1311
+ __inline void AT91F_RSTSoftReset(
1312
+ AT91PS_RSTC pRSTC,
1313
+ unsigned int reset)
1314
+ {
1315
+ pRSTC->RSTC_RCR = (0xA5000000 | reset);
1316
+ }
1317
+
1318
+ //*----------------------------------------------------------------------------
1319
+ //* \fn AT91F_RSTSetMode
1320
+ //* \brief Set Reset Mode
1321
+ //*----------------------------------------------------------------------------
1322
+ __inline void AT91F_RSTSetMode(
1323
+ AT91PS_RSTC pRSTC,
1324
+ unsigned int mode)
1325
+ {
1326
+ pRSTC->RSTC_RMR = (0xA5000000 | mode);
1327
+ }
1328
+
1329
+ //*----------------------------------------------------------------------------
1330
+ //* \fn AT91F_RSTGetMode
1331
+ //* \brief Get Reset Mode
1332
+ //*----------------------------------------------------------------------------
1333
+ __inline unsigned int AT91F_RSTGetMode(
1334
+ AT91PS_RSTC pRSTC)
1335
+ {
1336
+ return (pRSTC->RSTC_RMR);
1337
+ }
1338
+
1339
+ //*----------------------------------------------------------------------------
1340
+ //* \fn AT91F_RSTGetStatus
1341
+ //* \brief Get Reset Status
1342
+ //*----------------------------------------------------------------------------
1343
+ __inline unsigned int AT91F_RSTGetStatus(
1344
+ AT91PS_RSTC pRSTC)
1345
+ {
1346
+ return (pRSTC->RSTC_RSR);
1347
+ }
1348
+
1349
+ //*----------------------------------------------------------------------------
1350
+ //* \fn AT91F_RSTIsSoftRstActive
1351
+ //* \brief Return !=0 if software reset is still not completed
1352
+ //*----------------------------------------------------------------------------
1353
+ __inline unsigned int AT91F_RSTIsSoftRstActive(
1354
+ AT91PS_RSTC pRSTC)
1355
+ {
1356
+ return ((pRSTC->RSTC_RSR) & AT91C_RSTC_SRCMP);
1357
+ }
1358
+ /* *****************************************************************************
1359
+ SOFTWARE API FOR RTTC
1360
+ ***************************************************************************** */
1361
+ //*--------------------------------------------------------------------------------------
1362
+ //* \fn AT91F_SetRTT_TimeBase()
1363
+ //* \brief Set the RTT prescaler according to the TimeBase in ms
1364
+ //*--------------------------------------------------------------------------------------
1365
+ __inline unsigned int AT91F_RTTSetTimeBase(
1366
+ AT91PS_RTTC pRTTC,
1367
+ unsigned int ms)
1368
+ {
1369
+ if (ms > 2000)
1370
+ return 1; // AT91C_TIME_OUT_OF_RANGE
1371
+ pRTTC->RTTC_RTMR &= ~0xFFFF;
1372
+ pRTTC->RTTC_RTMR |= (((ms << 15) /1000) & 0xFFFF);
1373
+ return 0;
1374
+ }
1375
+
1376
+ //*--------------------------------------------------------------------------------------
1377
+ //* \fn AT91F_RTTSetPrescaler()
1378
+ //* \brief Set the new prescaler value
1379
+ //*--------------------------------------------------------------------------------------
1380
+ __inline unsigned int AT91F_RTTSetPrescaler(
1381
+ AT91PS_RTTC pRTTC,
1382
+ unsigned int rtpres)
1383
+ {
1384
+ pRTTC->RTTC_RTMR &= ~0xFFFF;
1385
+ pRTTC->RTTC_RTMR |= (rtpres & 0xFFFF);
1386
+ return (pRTTC->RTTC_RTMR);
1387
+ }
1388
+
1389
+ //*--------------------------------------------------------------------------------------
1390
+ //* \fn AT91F_RTTRestart()
1391
+ //* \brief Restart the RTT prescaler
1392
+ //*--------------------------------------------------------------------------------------
1393
+ __inline void AT91F_RTTRestart(
1394
+ AT91PS_RTTC pRTTC)
1395
+ {
1396
+ pRTTC->RTTC_RTMR |= AT91C_RTTC_RTTRST;
1397
+ }
1398
+
1399
+
1400
+ //*--------------------------------------------------------------------------------------
1401
+ //* \fn AT91F_RTT_SetAlarmINT()
1402
+ //* \brief Enable RTT Alarm Interrupt
1403
+ //*--------------------------------------------------------------------------------------
1404
+ __inline void AT91F_RTTSetAlarmINT(
1405
+ AT91PS_RTTC pRTTC)
1406
+ {
1407
+ pRTTC->RTTC_RTMR |= AT91C_RTTC_ALMIEN;
1408
+ }
1409
+
1410
+ //*--------------------------------------------------------------------------------------
1411
+ //* \fn AT91F_RTT_ClearAlarmINT()
1412
+ //* \brief Disable RTT Alarm Interrupt
1413
+ //*--------------------------------------------------------------------------------------
1414
+ __inline void AT91F_RTTClearAlarmINT(
1415
+ AT91PS_RTTC pRTTC)
1416
+ {
1417
+ pRTTC->RTTC_RTMR &= ~AT91C_RTTC_ALMIEN;
1418
+ }
1419
+
1420
+ //*--------------------------------------------------------------------------------------
1421
+ //* \fn AT91F_RTT_SetRttIncINT()
1422
+ //* \brief Enable RTT INC Interrupt
1423
+ //*--------------------------------------------------------------------------------------
1424
+ __inline void AT91F_RTTSetRttIncINT(
1425
+ AT91PS_RTTC pRTTC)
1426
+ {
1427
+ pRTTC->RTTC_RTMR |= AT91C_RTTC_RTTINCIEN;
1428
+ }
1429
+
1430
+ //*--------------------------------------------------------------------------------------
1431
+ //* \fn AT91F_RTT_ClearRttIncINT()
1432
+ //* \brief Disable RTT INC Interrupt
1433
+ //*--------------------------------------------------------------------------------------
1434
+ __inline void AT91F_RTTClearRttIncINT(
1435
+ AT91PS_RTTC pRTTC)
1436
+ {
1437
+ pRTTC->RTTC_RTMR &= ~AT91C_RTTC_RTTINCIEN;
1438
+ }
1439
+
1440
+ //*--------------------------------------------------------------------------------------
1441
+ //* \fn AT91F_RTT_SetAlarmValue()
1442
+ //* \brief Set RTT Alarm Value
1443
+ //*--------------------------------------------------------------------------------------
1444
+ __inline void AT91F_RTTSetAlarmValue(
1445
+ AT91PS_RTTC pRTTC, unsigned int alarm)
1446
+ {
1447
+ pRTTC->RTTC_RTAR = alarm;
1448
+ }
1449
+
1450
+ //*--------------------------------------------------------------------------------------
1451
+ //* \fn AT91F_RTT_GetAlarmValue()
1452
+ //* \brief Get RTT Alarm Value
1453
+ //*--------------------------------------------------------------------------------------
1454
+ __inline unsigned int AT91F_RTTGetAlarmValue(
1455
+ AT91PS_RTTC pRTTC)
1456
+ {
1457
+ return(pRTTC->RTTC_RTAR);
1458
+ }
1459
+
1460
+ //*--------------------------------------------------------------------------------------
1461
+ //* \fn AT91F_RTTGetStatus()
1462
+ //* \brief Read the RTT status
1463
+ //*--------------------------------------------------------------------------------------
1464
+ __inline unsigned int AT91F_RTTGetStatus(
1465
+ AT91PS_RTTC pRTTC)
1466
+ {
1467
+ return(pRTTC->RTTC_RTSR);
1468
+ }
1469
+
1470
+ //*--------------------------------------------------------------------------------------
1471
+ //* \fn AT91F_RTT_ReadValue()
1472
+ //* \brief Read the RTT value
1473
+ //*--------------------------------------------------------------------------------------
1474
+ __inline unsigned int AT91F_RTTReadValue(
1475
+ AT91PS_RTTC pRTTC)
1476
+ {
1477
+ register volatile unsigned int val1,val2;
1478
+ do
1479
+ {
1480
+ val1 = pRTTC->RTTC_RTVR;
1481
+ val2 = pRTTC->RTTC_RTVR;
1482
+ }
1483
+ while(val1 != val2);
1484
+ return(val1);
1485
+ }
1486
+ /* *****************************************************************************
1487
+ SOFTWARE API FOR PITC
1488
+ ***************************************************************************** */
1489
+ //*----------------------------------------------------------------------------
1490
+ //* \fn AT91F_PITInit
1491
+ //* \brief System timer init : period in �second, system clock freq in MHz
1492
+ //*----------------------------------------------------------------------------
1493
+ __inline void AT91F_PITInit(
1494
+ AT91PS_PITC pPITC,
1495
+ unsigned int period,
1496
+ unsigned int pit_frequency)
1497
+ {
1498
+ pPITC->PITC_PIMR = period? (period * pit_frequency + 8) >> 4 : 0; // +8 to avoid %10 and /10
1499
+ pPITC->PITC_PIMR |= AT91C_PITC_PITEN;
1500
+ }
1501
+
1502
+ //*----------------------------------------------------------------------------
1503
+ //* \fn AT91F_PITSetPIV
1504
+ //* \brief Set the PIT Periodic Interval Value
1505
+ //*----------------------------------------------------------------------------
1506
+ __inline void AT91F_PITSetPIV(
1507
+ AT91PS_PITC pPITC,
1508
+ unsigned int piv)
1509
+ {
1510
+ pPITC->PITC_PIMR = piv | (pPITC->PITC_PIMR & (AT91C_PITC_PITEN | AT91C_PITC_PITIEN));
1511
+ }
1512
+
1513
+ //*----------------------------------------------------------------------------
1514
+ //* \fn AT91F_PITEnableInt
1515
+ //* \brief Enable PIT periodic interrupt
1516
+ //*----------------------------------------------------------------------------
1517
+ __inline void AT91F_PITEnableInt(
1518
+ AT91PS_PITC pPITC)
1519
+ {
1520
+ pPITC->PITC_PIMR |= AT91C_PITC_PITIEN;
1521
+ }
1522
+
1523
+ //*----------------------------------------------------------------------------
1524
+ //* \fn AT91F_PITDisableInt
1525
+ //* \brief Disable PIT periodic interrupt
1526
+ //*----------------------------------------------------------------------------
1527
+ __inline void AT91F_PITDisableInt(
1528
+ AT91PS_PITC pPITC)
1529
+ {
1530
+ pPITC->PITC_PIMR &= ~AT91C_PITC_PITIEN;
1531
+ }
1532
+
1533
+ //*----------------------------------------------------------------------------
1534
+ //* \fn AT91F_PITGetMode
1535
+ //* \brief Read PIT mode register
1536
+ //*----------------------------------------------------------------------------
1537
+ __inline unsigned int AT91F_PITGetMode(
1538
+ AT91PS_PITC pPITC)
1539
+ {
1540
+ return(pPITC->PITC_PIMR);
1541
+ }
1542
+
1543
+ //*----------------------------------------------------------------------------
1544
+ //* \fn AT91F_PITGetStatus
1545
+ //* \brief Read PIT status register
1546
+ //*----------------------------------------------------------------------------
1547
+ __inline unsigned int AT91F_PITGetStatus(
1548
+ AT91PS_PITC pPITC)
1549
+ {
1550
+ return(pPITC->PITC_PISR);
1551
+ }
1552
+
1553
+ //*----------------------------------------------------------------------------
1554
+ //* \fn AT91F_PITGetPIIR
1555
+ //* \brief Read PIT CPIV and PICNT without ressetting the counters
1556
+ //*----------------------------------------------------------------------------
1557
+ __inline unsigned int AT91F_PITGetPIIR(
1558
+ AT91PS_PITC pPITC)
1559
+ {
1560
+ return(pPITC->PITC_PIIR);
1561
+ }
1562
+
1563
+ //*----------------------------------------------------------------------------
1564
+ //* \fn AT91F_PITGetPIVR
1565
+ //* \brief Read System timer CPIV and PICNT without ressetting the counters
1566
+ //*----------------------------------------------------------------------------
1567
+ __inline unsigned int AT91F_PITGetPIVR(
1568
+ AT91PS_PITC pPITC)
1569
+ {
1570
+ return(pPITC->PITC_PIVR);
1571
+ }
1572
+ /* *****************************************************************************
1573
+ SOFTWARE API FOR WDTC
1574
+ ***************************************************************************** */
1575
+ //*----------------------------------------------------------------------------
1576
+ //* \fn AT91F_WDTSetMode
1577
+ //* \brief Set Watchdog Mode Register
1578
+ //*----------------------------------------------------------------------------
1579
+ __inline void AT91F_WDTSetMode(
1580
+ AT91PS_WDTC pWDTC,
1581
+ unsigned int Mode)
1582
+ {
1583
+ pWDTC->WDTC_WDMR = Mode;
1584
+ }
1585
+
1586
+ //*----------------------------------------------------------------------------
1587
+ //* \fn AT91F_WDTRestart
1588
+ //* \brief Restart Watchdog
1589
+ //*----------------------------------------------------------------------------
1590
+ __inline void AT91F_WDTRestart(
1591
+ AT91PS_WDTC pWDTC)
1592
+ {
1593
+ pWDTC->WDTC_WDCR = 0xA5000001;
1594
+ }
1595
+
1596
+ //*----------------------------------------------------------------------------
1597
+ //* \fn AT91F_WDTSGettatus
1598
+ //* \brief Get Watchdog Status
1599
+ //*----------------------------------------------------------------------------
1600
+ __inline unsigned int AT91F_WDTSGettatus(
1601
+ AT91PS_WDTC pWDTC)
1602
+ {
1603
+ return(pWDTC->WDTC_WDSR & 0x3);
1604
+ }
1605
+
1606
+ //*----------------------------------------------------------------------------
1607
+ //* \fn AT91F_WDTGetPeriod
1608
+ //* \brief Translate ms into Watchdog Compatible value
1609
+ //*----------------------------------------------------------------------------
1610
+ __inline unsigned int AT91F_WDTGetPeriod(unsigned int ms)
1611
+ {
1612
+ if ((ms < 4) || (ms > 16000))
1613
+ return 0;
1614
+ return((ms << 8) / 1000);
1615
+ }
1616
+ /* *****************************************************************************
1617
+ SOFTWARE API FOR VREG
1618
+ ***************************************************************************** */
1619
+ //*----------------------------------------------------------------------------
1620
+ //* \fn AT91F_VREG_Enable_LowPowerMode
1621
+ //* \brief Enable VREG Low Power Mode
1622
+ //*----------------------------------------------------------------------------
1623
+ __inline void AT91F_VREG_Enable_LowPowerMode(
1624
+ AT91PS_VREG pVREG)
1625
+ {
1626
+ pVREG->VREG_MR |= AT91C_VREG_PSTDBY;
1627
+ }
1628
+
1629
+ //*----------------------------------------------------------------------------
1630
+ //* \fn AT91F_VREG_Disable_LowPowerMode
1631
+ //* \brief Disable VREG Low Power Mode
1632
+ //*----------------------------------------------------------------------------
1633
+ __inline void AT91F_VREG_Disable_LowPowerMode(
1634
+ AT91PS_VREG pVREG)
1635
+ {
1636
+ pVREG->VREG_MR &= ~AT91C_VREG_PSTDBY;
1637
+ }/* *****************************************************************************
1638
+ SOFTWARE API FOR MC
1639
+ ***************************************************************************** */
1640
+
1641
+ #define AT91C_MC_CORRECT_KEY ((unsigned int) 0x5A << 24) // (MC) Correct Protect Key
1642
+
1643
+ //*----------------------------------------------------------------------------
1644
+ //* \fn AT91F_MC_Remap
1645
+ //* \brief Make Remap
1646
+ //*----------------------------------------------------------------------------
1647
+ __inline void AT91F_MC_Remap (void) //
1648
+ {
1649
+ AT91PS_MC pMC = (AT91PS_MC) AT91C_BASE_MC;
1650
+
1651
+ pMC->MC_RCR = AT91C_MC_RCB;
1652
+ }
1653
+
1654
+ //*----------------------------------------------------------------------------
1655
+ //* \fn AT91F_MC_EFC_CfgModeReg
1656
+ //* \brief Configure the EFC Mode Register of the MC controller
1657
+ //*----------------------------------------------------------------------------
1658
+ __inline void AT91F_MC_EFC_CfgModeReg (
1659
+ AT91PS_MC pMC, // pointer to a MC controller
1660
+ unsigned int mode) // mode register
1661
+ {
1662
+ // Write to the FMR register
1663
+ pMC->MC_FMR = mode;
1664
+ }
1665
+
1666
+ //*----------------------------------------------------------------------------
1667
+ //* \fn AT91F_MC_EFC_GetModeReg
1668
+ //* \brief Return MC EFC Mode Regsiter
1669
+ //*----------------------------------------------------------------------------
1670
+ __inline unsigned int AT91F_MC_EFC_GetModeReg(
1671
+ AT91PS_MC pMC) // pointer to a MC controller
1672
+ {
1673
+ return pMC->MC_FMR;
1674
+ }
1675
+
1676
+ //*----------------------------------------------------------------------------
1677
+ //* \fn AT91F_MC_EFC_ComputeFMCN
1678
+ //* \brief Return MC EFC Mode Regsiter
1679
+ //*----------------------------------------------------------------------------
1680
+ __inline unsigned int AT91F_MC_EFC_ComputeFMCN(
1681
+ int master_clock) // master clock in Hz
1682
+ {
1683
+ return (master_clock/1000000 +2);
1684
+ }
1685
+
1686
+ //*----------------------------------------------------------------------------
1687
+ //* \fn AT91F_MC_EFC_PerformCmd
1688
+ //* \brief Perform EFC Command
1689
+ //*----------------------------------------------------------------------------
1690
+ __inline void AT91F_MC_EFC_PerformCmd (
1691
+ AT91PS_MC pMC, // pointer to a MC controller
1692
+ unsigned int transfer_cmd)
1693
+ {
1694
+ pMC->MC_FCR = transfer_cmd;
1695
+ }
1696
+
1697
+ //*----------------------------------------------------------------------------
1698
+ //* \fn AT91F_MC_EFC_GetStatus
1699
+ //* \brief Return MC EFC Status
1700
+ //*----------------------------------------------------------------------------
1701
+ __inline unsigned int AT91F_MC_EFC_GetStatus(
1702
+ AT91PS_MC pMC) // pointer to a MC controller
1703
+ {
1704
+ return pMC->MC_FSR;
1705
+ }
1706
+
1707
+ //*----------------------------------------------------------------------------
1708
+ //* \fn AT91F_MC_EFC_IsInterruptMasked
1709
+ //* \brief Test if EFC MC Interrupt is Masked
1710
+ //*----------------------------------------------------------------------------
1711
+ __inline unsigned int AT91F_MC_EFC_IsInterruptMasked(
1712
+ AT91PS_MC pMC, // \arg pointer to a MC controller
1713
+ unsigned int flag) // \arg flag to be tested
1714
+ {
1715
+ return (AT91F_MC_EFC_GetModeReg(pMC) & flag);
1716
+ }
1717
+
1718
+ //*----------------------------------------------------------------------------
1719
+ //* \fn AT91F_MC_EFC_IsInterruptSet
1720
+ //* \brief Test if EFC MC Interrupt is Set
1721
+ //*----------------------------------------------------------------------------
1722
+ __inline unsigned int AT91F_MC_EFC_IsInterruptSet(
1723
+ AT91PS_MC pMC, // \arg pointer to a MC controller
1724
+ unsigned int flag) // \arg flag to be tested
1725
+ {
1726
+ return (AT91F_MC_EFC_GetStatus(pMC) & flag);
1727
+ }
1728
+
1729
+ /* *****************************************************************************
1730
+ SOFTWARE API FOR SPI
1731
+ ***************************************************************************** */
1732
+ //*----------------------------------------------------------------------------
1733
+ //* \fn AT91F_SPI_CfgCs
1734
+ //* \brief Configure SPI chip select register
1735
+ //*----------------------------------------------------------------------------
1736
+ __inline void AT91F_SPI_CfgCs (
1737
+ AT91PS_SPI pSPI, // pointer to a SPI controller
1738
+ int cs, // SPI cs number (0 to 3)
1739
+ int val) // chip select register
1740
+ {
1741
+ //* Write to the CSR register
1742
+ *(pSPI->SPI_CSR + cs) = val;
1743
+ }
1744
+
1745
+ //*----------------------------------------------------------------------------
1746
+ //* \fn AT91F_SPI_EnableIt
1747
+ //* \brief Enable SPI interrupt
1748
+ //*----------------------------------------------------------------------------
1749
+ __inline void AT91F_SPI_EnableIt (
1750
+ AT91PS_SPI pSPI, // pointer to a SPI controller
1751
+ unsigned int flag) // IT to be enabled
1752
+ {
1753
+ //* Write to the IER register
1754
+ pSPI->SPI_IER = flag;
1755
+ }
1756
+
1757
+ //*----------------------------------------------------------------------------
1758
+ //* \fn AT91F_SPI_DisableIt
1759
+ //* \brief Disable SPI interrupt
1760
+ //*----------------------------------------------------------------------------
1761
+ __inline void AT91F_SPI_DisableIt (
1762
+ AT91PS_SPI pSPI, // pointer to a SPI controller
1763
+ unsigned int flag) // IT to be disabled
1764
+ {
1765
+ //* Write to the IDR register
1766
+ pSPI->SPI_IDR = flag;
1767
+ }
1768
+
1769
+ //*----------------------------------------------------------------------------
1770
+ //* \fn AT91F_SPI_Reset
1771
+ //* \brief Reset the SPI controller
1772
+ //*----------------------------------------------------------------------------
1773
+ __inline void AT91F_SPI_Reset (
1774
+ AT91PS_SPI pSPI // pointer to a SPI controller
1775
+ )
1776
+ {
1777
+ //* Write to the CR register
1778
+ pSPI->SPI_CR = AT91C_SPI_SWRST;
1779
+ }
1780
+
1781
+ //*----------------------------------------------------------------------------
1782
+ //* \fn AT91F_SPI_Enable
1783
+ //* \brief Enable the SPI controller
1784
+ //*----------------------------------------------------------------------------
1785
+ __inline void AT91F_SPI_Enable (
1786
+ AT91PS_SPI pSPI // pointer to a SPI controller
1787
+ )
1788
+ {
1789
+ //* Write to the CR register
1790
+ pSPI->SPI_CR = AT91C_SPI_SPIEN;
1791
+ }
1792
+
1793
+ //*----------------------------------------------------------------------------
1794
+ //* \fn AT91F_SPI_Disable
1795
+ //* \brief Disable the SPI controller
1796
+ //*----------------------------------------------------------------------------
1797
+ __inline void AT91F_SPI_Disable (
1798
+ AT91PS_SPI pSPI // pointer to a SPI controller
1799
+ )
1800
+ {
1801
+ //* Write to the CR register
1802
+ pSPI->SPI_CR = AT91C_SPI_SPIDIS;
1803
+ }
1804
+
1805
+ //*----------------------------------------------------------------------------
1806
+ //* \fn AT91F_SPI_CfgMode
1807
+ //* \brief Enable the SPI controller
1808
+ //*----------------------------------------------------------------------------
1809
+ __inline void AT91F_SPI_CfgMode (
1810
+ AT91PS_SPI pSPI, // pointer to a SPI controller
1811
+ int mode) // mode register
1812
+ {
1813
+ //* Write to the MR register
1814
+ pSPI->SPI_MR = mode;
1815
+ }
1816
+
1817
+ //*----------------------------------------------------------------------------
1818
+ //* \fn AT91F_SPI_CfgPCS
1819
+ //* \brief Switch to the correct PCS of SPI Mode Register : Fixed Peripheral Selected
1820
+ //*----------------------------------------------------------------------------
1821
+ __inline void AT91F_SPI_CfgPCS (
1822
+ AT91PS_SPI pSPI, // pointer to a SPI controller
1823
+ char PCS_Device) // PCS of the Device
1824
+ {
1825
+ //* Write to the MR register
1826
+ pSPI->SPI_MR &= 0xFFF0FFFF;
1827
+ pSPI->SPI_MR |= ( (PCS_Device<<16) & AT91C_SPI_PCS );
1828
+ }
1829
+
1830
+ //*----------------------------------------------------------------------------
1831
+ //* \fn AT91F_SPI_ReceiveFrame
1832
+ //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initializaed with Next Buffer, 0 if PDC is busy
1833
+ //*----------------------------------------------------------------------------
1834
+ __inline unsigned int AT91F_SPI_ReceiveFrame (
1835
+ AT91PS_SPI pSPI,
1836
+ char *pBuffer,
1837
+ unsigned int szBuffer,
1838
+ char *pNextBuffer,
1839
+ unsigned int szNextBuffer )
1840
+ {
1841
+ return AT91F_PDC_ReceiveFrame(
1842
+ (AT91PS_PDC) &(pSPI->SPI_RPR),
1843
+ pBuffer,
1844
+ szBuffer,
1845
+ pNextBuffer,
1846
+ szNextBuffer);
1847
+ }
1848
+
1849
+ //*----------------------------------------------------------------------------
1850
+ //* \fn AT91F_SPI_SendFrame
1851
+ //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initializaed with Next Buffer, 0 if PDC is bSPIy
1852
+ //*----------------------------------------------------------------------------
1853
+ __inline unsigned int AT91F_SPI_SendFrame(
1854
+ AT91PS_SPI pSPI,
1855
+ char *pBuffer,
1856
+ unsigned int szBuffer,
1857
+ char *pNextBuffer,
1858
+ unsigned int szNextBuffer )
1859
+ {
1860
+ return AT91F_PDC_SendFrame(
1861
+ (AT91PS_PDC) &(pSPI->SPI_RPR),
1862
+ pBuffer,
1863
+ szBuffer,
1864
+ pNextBuffer,
1865
+ szNextBuffer);
1866
+ }
1867
+
1868
+ //*----------------------------------------------------------------------------
1869
+ //* \fn AT91F_SPI_Close
1870
+ //* \brief Close SPI: disable IT disable transfert, close PDC
1871
+ //*----------------------------------------------------------------------------
1872
+ __inline void AT91F_SPI_Close (
1873
+ AT91PS_SPI pSPI) // \arg pointer to a SPI controller
1874
+ {
1875
+ //* Reset all the Chip Select register
1876
+ pSPI->SPI_CSR[0] = 0 ;
1877
+ pSPI->SPI_CSR[1] = 0 ;
1878
+ pSPI->SPI_CSR[2] = 0 ;
1879
+ pSPI->SPI_CSR[3] = 0 ;
1880
+
1881
+ //* Reset the SPI mode
1882
+ pSPI->SPI_MR = 0 ;
1883
+
1884
+ //* Disable all interrupts
1885
+ pSPI->SPI_IDR = 0xFFFFFFFF ;
1886
+
1887
+ //* Abort the Peripheral Data Transfers
1888
+ AT91F_PDC_Close((AT91PS_PDC) &(pSPI->SPI_RPR));
1889
+
1890
+ //* Disable receiver and transmitter and stop any activity immediately
1891
+ pSPI->SPI_CR = AT91C_SPI_SPIDIS;
1892
+ }
1893
+
1894
+ //*----------------------------------------------------------------------------
1895
+ //* \fn AT91F_SPI_PutChar
1896
+ //* \brief Send a character,does not check if ready to send
1897
+ //*----------------------------------------------------------------------------
1898
+ __inline void AT91F_SPI_PutChar (
1899
+ AT91PS_SPI pSPI,
1900
+ unsigned int character,
1901
+ unsigned int cs_number )
1902
+ {
1903
+ unsigned int value_for_cs;
1904
+ value_for_cs = (~(1 << cs_number)) & 0xF; //Place a zero among a 4 ONEs number
1905
+ pSPI->SPI_TDR = (character & 0xFFFF) | (value_for_cs << 16);
1906
+ }
1907
+
1908
+ //*----------------------------------------------------------------------------
1909
+ //* \fn AT91F_SPI_GetChar
1910
+ //* \brief Receive a character,does not check if a character is available
1911
+ //*----------------------------------------------------------------------------
1912
+ __inline int AT91F_SPI_GetChar (
1913
+ const AT91PS_SPI pSPI)
1914
+ {
1915
+ return((pSPI->SPI_RDR) & 0xFFFF);
1916
+ }
1917
+
1918
+ //*----------------------------------------------------------------------------
1919
+ //* \fn AT91F_SPI_GetInterruptMaskStatus
1920
+ //* \brief Return SPI Interrupt Mask Status
1921
+ //*----------------------------------------------------------------------------
1922
+ __inline unsigned int AT91F_SPI_GetInterruptMaskStatus( // \return SPI Interrupt Mask Status
1923
+ AT91PS_SPI pSpi) // \arg pointer to a SPI controller
1924
+ {
1925
+ return pSpi->SPI_IMR;
1926
+ }
1927
+
1928
+ //*----------------------------------------------------------------------------
1929
+ //* \fn AT91F_SPI_IsInterruptMasked
1930
+ //* \brief Test if SPI Interrupt is Masked
1931
+ //*----------------------------------------------------------------------------
1932
+ __inline int AT91F_SPI_IsInterruptMasked(
1933
+ AT91PS_SPI pSpi, // \arg pointer to a SPI controller
1934
+ unsigned int flag) // \arg flag to be tested
1935
+ {
1936
+ return (AT91F_SPI_GetInterruptMaskStatus(pSpi) & flag);
1937
+ }
1938
+
1939
+ /* *****************************************************************************
1940
+ SOFTWARE API FOR USART
1941
+ ***************************************************************************** */
1942
+ //*----------------------------------------------------------------------------
1943
+ //* \fn AT91F_US_Baudrate
1944
+ //* \brief Calculate the baudrate
1945
+ //* Standard Asynchronous Mode : 8 bits , 1 stop , no parity
1946
+ #define AT91C_US_ASYNC_MODE ( AT91C_US_USMODE_NORMAL + \
1947
+ AT91C_US_NBSTOP_1_BIT + \
1948
+ AT91C_US_PAR_NONE + \
1949
+ AT91C_US_CHRL_8_BITS + \
1950
+ AT91C_US_CLKS_CLOCK )
1951
+
1952
+ //* Standard External Asynchronous Mode : 8 bits , 1 stop , no parity
1953
+ #define AT91C_US_ASYNC_SCK_MODE ( AT91C_US_USMODE_NORMAL + \
1954
+ AT91C_US_NBSTOP_1_BIT + \
1955
+ AT91C_US_PAR_NONE + \
1956
+ AT91C_US_CHRL_8_BITS + \
1957
+ AT91C_US_CLKS_EXT )
1958
+
1959
+ //* Standard Synchronous Mode : 8 bits , 1 stop , no parity
1960
+ #define AT91C_US_SYNC_MODE ( AT91C_US_SYNC + \
1961
+ AT91C_US_USMODE_NORMAL + \
1962
+ AT91C_US_NBSTOP_1_BIT + \
1963
+ AT91C_US_PAR_NONE + \
1964
+ AT91C_US_CHRL_8_BITS + \
1965
+ AT91C_US_CLKS_CLOCK )
1966
+
1967
+ //* SCK used Label
1968
+ #define AT91C_US_SCK_USED (AT91C_US_CKLO | AT91C_US_CLKS_EXT)
1969
+
1970
+ //* Standard ISO T=0 Mode : 8 bits , 1 stop , parity
1971
+ #define AT91C_US_ISO_READER_MODE ( AT91C_US_USMODE_ISO7816_0 + \
1972
+ AT91C_US_CLKS_CLOCK +\
1973
+ AT91C_US_NBSTOP_1_BIT + \
1974
+ AT91C_US_PAR_EVEN + \
1975
+ AT91C_US_CHRL_8_BITS + \
1976
+ AT91C_US_CKLO +\
1977
+ AT91C_US_OVER)
1978
+
1979
+ //* Standard IRDA mode
1980
+ #define AT91C_US_ASYNC_IRDA_MODE ( AT91C_US_USMODE_IRDA + \
1981
+ AT91C_US_NBSTOP_1_BIT + \
1982
+ AT91C_US_PAR_NONE + \
1983
+ AT91C_US_CHRL_8_BITS + \
1984
+ AT91C_US_CLKS_CLOCK )
1985
+
1986
+ //*----------------------------------------------------------------------------
1987
+ //* \fn AT91F_US_Baudrate
1988
+ //* \brief Caluculate baud_value according to the main clock and the baud rate
1989
+ //*----------------------------------------------------------------------------
1990
+ __inline unsigned int AT91F_US_Baudrate (
1991
+ const unsigned int main_clock, // \arg peripheral clock
1992
+ const unsigned int baud_rate) // \arg UART baudrate
1993
+ {
1994
+ unsigned int baud_value = ((main_clock*10)/(baud_rate * 16));
1995
+ if ((baud_value % 10) >= 5)
1996
+ baud_value = (baud_value / 10) + 1;
1997
+ else
1998
+ baud_value /= 10;
1999
+ return baud_value;
2000
+ }
2001
+
2002
+ //*----------------------------------------------------------------------------
2003
+ //* \fn AT91F_US_SetBaudrate
2004
+ //* \brief Set the baudrate according to the CPU clock
2005
+ //*----------------------------------------------------------------------------
2006
+ __inline void AT91F_US_SetBaudrate (
2007
+ AT91PS_USART pUSART, // \arg pointer to a USART controller
2008
+ unsigned int mainClock, // \arg peripheral clock
2009
+ unsigned int speed) // \arg UART baudrate
2010
+ {
2011
+ //* Define the baud rate divisor register
2012
+ pUSART->US_BRGR = AT91F_US_Baudrate(mainClock, speed);
2013
+ }
2014
+
2015
+ //*----------------------------------------------------------------------------
2016
+ //* \fn AT91F_US_SetTimeguard
2017
+ //* \brief Set USART timeguard
2018
+ //*----------------------------------------------------------------------------
2019
+ __inline void AT91F_US_SetTimeguard (
2020
+ AT91PS_USART pUSART, // \arg pointer to a USART controller
2021
+ unsigned int timeguard) // \arg timeguard value
2022
+ {
2023
+ //* Write the Timeguard Register
2024
+ pUSART->US_TTGR = timeguard ;
2025
+ }
2026
+
2027
+ //*----------------------------------------------------------------------------
2028
+ //* \fn AT91F_US_EnableIt
2029
+ //* \brief Enable USART IT
2030
+ //*----------------------------------------------------------------------------
2031
+ __inline void AT91F_US_EnableIt (
2032
+ AT91PS_USART pUSART, // \arg pointer to a USART controller
2033
+ unsigned int flag) // \arg IT to be enabled
2034
+ {
2035
+ //* Write to the IER register
2036
+ pUSART->US_IER = flag;
2037
+ }
2038
+
2039
+ //*----------------------------------------------------------------------------
2040
+ //* \fn AT91F_US_DisableIt
2041
+ //* \brief Disable USART IT
2042
+ //*----------------------------------------------------------------------------
2043
+ __inline void AT91F_US_DisableIt (
2044
+ AT91PS_USART pUSART, // \arg pointer to a USART controller
2045
+ unsigned int flag) // \arg IT to be disabled
2046
+ {
2047
+ //* Write to the IER register
2048
+ pUSART->US_IDR = flag;
2049
+ }
2050
+
2051
+ //*----------------------------------------------------------------------------
2052
+ //* \fn AT91F_US_Configure
2053
+ //* \brief Configure USART
2054
+ //*----------------------------------------------------------------------------
2055
+ __inline void AT91F_US_Configure (
2056
+ AT91PS_USART pUSART, // \arg pointer to a USART controller
2057
+ unsigned int mainClock, // \arg peripheral clock
2058
+ unsigned int mode , // \arg mode Register to be programmed
2059
+ unsigned int baudRate , // \arg baudrate to be programmed
2060
+ unsigned int timeguard ) // \arg timeguard to be programmed
2061
+ {
2062
+ //* Disable interrupts
2063
+ pUSART->US_IDR = (unsigned int) -1;
2064
+
2065
+ //* Reset receiver and transmitter
2066
+ pUSART->US_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS ;
2067
+
2068
+ //* Define the baud rate divisor register
2069
+ AT91F_US_SetBaudrate(pUSART, mainClock, baudRate);
2070
+
2071
+ //* Write the Timeguard Register
2072
+ AT91F_US_SetTimeguard(pUSART, timeguard);
2073
+
2074
+ //* Clear Transmit and Receive Counters
2075
+ AT91F_PDC_Open((AT91PS_PDC) &(pUSART->US_RPR));
2076
+
2077
+ //* Define the USART mode
2078
+ pUSART->US_MR = mode ;
2079
+
2080
+ }
2081
+
2082
+ //*----------------------------------------------------------------------------
2083
+ //* \fn AT91F_US_EnableRx
2084
+ //* \brief Enable receiving characters
2085
+ //*----------------------------------------------------------------------------
2086
+ __inline void AT91F_US_EnableRx (
2087
+ AT91PS_USART pUSART) // \arg pointer to a USART controller
2088
+ {
2089
+ //* Enable receiver
2090
+ pUSART->US_CR = AT91C_US_RXEN;
2091
+ }
2092
+
2093
+ //*----------------------------------------------------------------------------
2094
+ //* \fn AT91F_US_EnableTx
2095
+ //* \brief Enable sending characters
2096
+ //*----------------------------------------------------------------------------
2097
+ __inline void AT91F_US_EnableTx (
2098
+ AT91PS_USART pUSART) // \arg pointer to a USART controller
2099
+ {
2100
+ //* Enable transmitter
2101
+ pUSART->US_CR = AT91C_US_TXEN;
2102
+ }
2103
+
2104
+ //*----------------------------------------------------------------------------
2105
+ //* \fn AT91F_US_ResetRx
2106
+ //* \brief Reset Receiver and re-enable it
2107
+ //*----------------------------------------------------------------------------
2108
+ __inline void AT91F_US_ResetRx (
2109
+ AT91PS_USART pUSART) // \arg pointer to a USART controller
2110
+ {
2111
+ //* Reset receiver
2112
+ pUSART->US_CR = AT91C_US_RSTRX;
2113
+ //* Re-Enable receiver
2114
+ pUSART->US_CR = AT91C_US_RXEN;
2115
+ }
2116
+
2117
+ //*----------------------------------------------------------------------------
2118
+ //* \fn AT91F_US_ResetTx
2119
+ //* \brief Reset Transmitter and re-enable it
2120
+ //*----------------------------------------------------------------------------
2121
+ __inline void AT91F_US_ResetTx (
2122
+ AT91PS_USART pUSART) // \arg pointer to a USART controller
2123
+ {
2124
+ //* Reset transmitter
2125
+ pUSART->US_CR = AT91C_US_RSTTX;
2126
+ //* Enable transmitter
2127
+ pUSART->US_CR = AT91C_US_TXEN;
2128
+ }
2129
+
2130
+ //*----------------------------------------------------------------------------
2131
+ //* \fn AT91F_US_DisableRx
2132
+ //* \brief Disable Receiver
2133
+ //*----------------------------------------------------------------------------
2134
+ __inline void AT91F_US_DisableRx (
2135
+ AT91PS_USART pUSART) // \arg pointer to a USART controller
2136
+ {
2137
+ //* Disable receiver
2138
+ pUSART->US_CR = AT91C_US_RXDIS;
2139
+ }
2140
+
2141
+ //*----------------------------------------------------------------------------
2142
+ //* \fn AT91F_US_DisableTx
2143
+ //* \brief Disable Transmitter
2144
+ //*----------------------------------------------------------------------------
2145
+ __inline void AT91F_US_DisableTx (
2146
+ AT91PS_USART pUSART) // \arg pointer to a USART controller
2147
+ {
2148
+ //* Disable transmitter
2149
+ pUSART->US_CR = AT91C_US_TXDIS;
2150
+ }
2151
+
2152
+ //*----------------------------------------------------------------------------
2153
+ //* \fn AT91F_US_Close
2154
+ //* \brief Close USART: disable IT disable receiver and transmitter, close PDC
2155
+ //*----------------------------------------------------------------------------
2156
+ __inline void AT91F_US_Close (
2157
+ AT91PS_USART pUSART) // \arg pointer to a USART controller
2158
+ {
2159
+ //* Reset the baud rate divisor register
2160
+ pUSART->US_BRGR = 0 ;
2161
+
2162
+ //* Reset the USART mode
2163
+ pUSART->US_MR = 0 ;
2164
+
2165
+ //* Reset the Timeguard Register
2166
+ pUSART->US_TTGR = 0;
2167
+
2168
+ //* Disable all interrupts
2169
+ pUSART->US_IDR = 0xFFFFFFFF ;
2170
+
2171
+ //* Abort the Peripheral Data Transfers
2172
+ AT91F_PDC_Close((AT91PS_PDC) &(pUSART->US_RPR));
2173
+
2174
+ //* Disable receiver and transmitter and stop any activity immediately
2175
+ pUSART->US_CR = AT91C_US_TXDIS | AT91C_US_RXDIS | AT91C_US_RSTTX | AT91C_US_RSTRX ;
2176
+ }
2177
+
2178
+ //*----------------------------------------------------------------------------
2179
+ //* \fn AT91F_US_TxReady
2180
+ //* \brief Return 1 if a character can be written in US_THR
2181
+ //*----------------------------------------------------------------------------
2182
+ __inline unsigned int AT91F_US_TxReady (
2183
+ AT91PS_USART pUSART ) // \arg pointer to a USART controller
2184
+ {
2185
+ return (pUSART->US_CSR & AT91C_US_TXRDY);
2186
+ }
2187
+
2188
+ //*----------------------------------------------------------------------------
2189
+ //* \fn AT91F_US_RxReady
2190
+ //* \brief Return 1 if a character can be read in US_RHR
2191
+ //*----------------------------------------------------------------------------
2192
+ __inline unsigned int AT91F_US_RxReady (
2193
+ AT91PS_USART pUSART ) // \arg pointer to a USART controller
2194
+ {
2195
+ return (pUSART->US_CSR & AT91C_US_RXRDY);
2196
+ }
2197
+
2198
+ //*----------------------------------------------------------------------------
2199
+ //* \fn AT91F_US_Error
2200
+ //* \brief Return the error flag
2201
+ //*----------------------------------------------------------------------------
2202
+ __inline unsigned int AT91F_US_Error (
2203
+ AT91PS_USART pUSART ) // \arg pointer to a USART controller
2204
+ {
2205
+ return (pUSART->US_CSR &
2206
+ (AT91C_US_OVRE | // Overrun error
2207
+ AT91C_US_FRAME | // Framing error
2208
+ AT91C_US_PARE)); // Parity error
2209
+ }
2210
+
2211
+ //*----------------------------------------------------------------------------
2212
+ //* \fn AT91F_US_PutChar
2213
+ //* \brief Send a character,does not check if ready to send
2214
+ //*----------------------------------------------------------------------------
2215
+ __inline void AT91F_US_PutChar (
2216
+ AT91PS_USART pUSART,
2217
+ int character )
2218
+ {
2219
+ pUSART->US_THR = (character & 0x1FF);
2220
+ }
2221
+
2222
+ //*----------------------------------------------------------------------------
2223
+ //* \fn AT91F_US_GetChar
2224
+ //* \brief Receive a character,does not check if a character is available
2225
+ //*----------------------------------------------------------------------------
2226
+ __inline int AT91F_US_GetChar (
2227
+ const AT91PS_USART pUSART)
2228
+ {
2229
+ return((pUSART->US_RHR) & 0x1FF);
2230
+ }
2231
+
2232
+ //*----------------------------------------------------------------------------
2233
+ //* \fn AT91F_US_SendFrame
2234
+ //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initializaed with Next Buffer, 0 if PDC is busy
2235
+ //*----------------------------------------------------------------------------
2236
+ __inline unsigned int AT91F_US_SendFrame(
2237
+ AT91PS_USART pUSART,
2238
+ char *pBuffer,
2239
+ unsigned int szBuffer,
2240
+ char *pNextBuffer,
2241
+ unsigned int szNextBuffer )
2242
+ {
2243
+ return AT91F_PDC_SendFrame(
2244
+ (AT91PS_PDC) &(pUSART->US_RPR),
2245
+ pBuffer,
2246
+ szBuffer,
2247
+ pNextBuffer,
2248
+ szNextBuffer);
2249
+ }
2250
+
2251
+ //*----------------------------------------------------------------------------
2252
+ //* \fn AT91F_US_ReceiveFrame
2253
+ //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initializaed with Next Buffer, 0 if PDC is busy
2254
+ //*----------------------------------------------------------------------------
2255
+ __inline unsigned int AT91F_US_ReceiveFrame (
2256
+ AT91PS_USART pUSART,
2257
+ char *pBuffer,
2258
+ unsigned int szBuffer,
2259
+ char *pNextBuffer,
2260
+ unsigned int szNextBuffer )
2261
+ {
2262
+ return AT91F_PDC_ReceiveFrame(
2263
+ (AT91PS_PDC) &(pUSART->US_RPR),
2264
+ pBuffer,
2265
+ szBuffer,
2266
+ pNextBuffer,
2267
+ szNextBuffer);
2268
+ }
2269
+
2270
+ //*----------------------------------------------------------------------------
2271
+ //* \fn AT91F_US_SetIrdaFilter
2272
+ //* \brief Set the value of IrDa filter tregister
2273
+ //*----------------------------------------------------------------------------
2274
+ __inline void AT91F_US_SetIrdaFilter (
2275
+ AT91PS_USART pUSART,
2276
+ unsigned char value
2277
+ )
2278
+ {
2279
+ pUSART->US_IF = value;
2280
+ }
2281
+
2282
+ /* *****************************************************************************
2283
+ SOFTWARE API FOR SSC
2284
+ ***************************************************************************** */
2285
+ //* Define the standard I2S mode configuration
2286
+
2287
+ //* Configuration to set in the SSC Transmit Clock Mode Register
2288
+ //* Parameters : nb_bit_by_slot : 8, 16 or 32 bits
2289
+ //* nb_slot_by_frame : number of channels
2290
+ #define AT91C_I2S_ASY_MASTER_TX_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\
2291
+ AT91C_SSC_CKS_DIV +\
2292
+ AT91C_SSC_CKO_CONTINOUS +\
2293
+ AT91C_SSC_CKG_NONE +\
2294
+ AT91C_SSC_START_FALL_RF +\
2295
+ AT91C_SSC_STTOUT +\
2296
+ ((1<<16) & AT91C_SSC_STTDLY) +\
2297
+ ((((nb_bit_by_slot*nb_slot_by_frame)/2)-1) <<24))
2298
+
2299
+
2300
+ //* Configuration to set in the SSC Transmit Frame Mode Register
2301
+ //* Parameters : nb_bit_by_slot : 8, 16 or 32 bits
2302
+ //* nb_slot_by_frame : number of channels
2303
+ #define AT91C_I2S_ASY_TX_FRAME_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\
2304
+ (nb_bit_by_slot-1) +\
2305
+ AT91C_SSC_MSBF +\
2306
+ (((nb_slot_by_frame-1)<<8) & AT91C_SSC_DATNB) +\
2307
+ (((nb_bit_by_slot-1)<<16) & AT91C_SSC_FSLEN) +\
2308
+ AT91C_SSC_FSOS_NEGATIVE)
2309
+
2310
+
2311
+ //*----------------------------------------------------------------------------
2312
+ //* \fn AT91F_SSC_SetBaudrate
2313
+ //* \brief Set the baudrate according to the CPU clock
2314
+ //*----------------------------------------------------------------------------
2315
+ __inline void AT91F_SSC_SetBaudrate (
2316
+ AT91PS_SSC pSSC, // \arg pointer to a SSC controller
2317
+ unsigned int mainClock, // \arg peripheral clock
2318
+ unsigned int speed) // \arg SSC baudrate
2319
+ {
2320
+ unsigned int baud_value;
2321
+ //* Define the baud rate divisor register
2322
+ if (speed == 0)
2323
+ baud_value = 0;
2324
+ else
2325
+ {
2326
+ baud_value = (unsigned int) (mainClock * 10)/(2*speed);
2327
+ if ((baud_value % 10) >= 5)
2328
+ baud_value = (baud_value / 10) + 1;
2329
+ else
2330
+ baud_value /= 10;
2331
+ }
2332
+
2333
+ pSSC->SSC_CMR = baud_value;
2334
+ }
2335
+
2336
+ //*----------------------------------------------------------------------------
2337
+ //* \fn AT91F_SSC_Configure
2338
+ //* \brief Configure SSC
2339
+ //*----------------------------------------------------------------------------
2340
+ __inline void AT91F_SSC_Configure (
2341
+ AT91PS_SSC pSSC, // \arg pointer to a SSC controller
2342
+ unsigned int syst_clock, // \arg System Clock Frequency
2343
+ unsigned int baud_rate, // \arg Expected Baud Rate Frequency
2344
+ unsigned int clock_rx, // \arg Receiver Clock Parameters
2345
+ unsigned int mode_rx, // \arg mode Register to be programmed
2346
+ unsigned int clock_tx, // \arg Transmitter Clock Parameters
2347
+ unsigned int mode_tx) // \arg mode Register to be programmed
2348
+ {
2349
+ //* Disable interrupts
2350
+ pSSC->SSC_IDR = (unsigned int) -1;
2351
+
2352
+ //* Reset receiver and transmitter
2353
+ pSSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_RXDIS | AT91C_SSC_TXDIS ;
2354
+
2355
+ //* Define the Clock Mode Register
2356
+ AT91F_SSC_SetBaudrate(pSSC, syst_clock, baud_rate);
2357
+
2358
+ //* Write the Receive Clock Mode Register
2359
+ pSSC->SSC_RCMR = clock_rx;
2360
+
2361
+ //* Write the Transmit Clock Mode Register
2362
+ pSSC->SSC_TCMR = clock_tx;
2363
+
2364
+ //* Write the Receive Frame Mode Register
2365
+ pSSC->SSC_RFMR = mode_rx;
2366
+
2367
+ //* Write the Transmit Frame Mode Register
2368
+ pSSC->SSC_TFMR = mode_tx;
2369
+
2370
+ //* Clear Transmit and Receive Counters
2371
+ AT91F_PDC_Open((AT91PS_PDC) &(pSSC->SSC_RPR));
2372
+
2373
+
2374
+ }
2375
+
2376
+ //*----------------------------------------------------------------------------
2377
+ //* \fn AT91F_SSC_EnableRx
2378
+ //* \brief Enable receiving datas
2379
+ //*----------------------------------------------------------------------------
2380
+ __inline void AT91F_SSC_EnableRx (
2381
+ AT91PS_SSC pSSC) // \arg pointer to a SSC controller
2382
+ {
2383
+ //* Enable receiver
2384
+ pSSC->SSC_CR = AT91C_SSC_RXEN;
2385
+ }
2386
+
2387
+ //*----------------------------------------------------------------------------
2388
+ //* \fn AT91F_SSC_DisableRx
2389
+ //* \brief Disable receiving datas
2390
+ //*----------------------------------------------------------------------------
2391
+ __inline void AT91F_SSC_DisableRx (
2392
+ AT91PS_SSC pSSC) // \arg pointer to a SSC controller
2393
+ {
2394
+ //* Disable receiver
2395
+ pSSC->SSC_CR = AT91C_SSC_RXDIS;
2396
+ }
2397
+
2398
+ //*----------------------------------------------------------------------------
2399
+ //* \fn AT91F_SSC_EnableTx
2400
+ //* \brief Enable sending datas
2401
+ //*----------------------------------------------------------------------------
2402
+ __inline void AT91F_SSC_EnableTx (
2403
+ AT91PS_SSC pSSC) // \arg pointer to a SSC controller
2404
+ {
2405
+ //* Enable transmitter
2406
+ pSSC->SSC_CR = AT91C_SSC_TXEN;
2407
+ }
2408
+
2409
+ //*----------------------------------------------------------------------------
2410
+ //* \fn AT91F_SSC_DisableTx
2411
+ //* \brief Disable sending datas
2412
+ //*----------------------------------------------------------------------------
2413
+ __inline void AT91F_SSC_DisableTx (
2414
+ AT91PS_SSC pSSC) // \arg pointer to a SSC controller
2415
+ {
2416
+ //* Disable transmitter
2417
+ pSSC->SSC_CR = AT91C_SSC_TXDIS;
2418
+ }
2419
+
2420
+ //*----------------------------------------------------------------------------
2421
+ //* \fn AT91F_SSC_EnableIt
2422
+ //* \brief Enable SSC IT
2423
+ //*----------------------------------------------------------------------------
2424
+ __inline void AT91F_SSC_EnableIt (
2425
+ AT91PS_SSC pSSC, // \arg pointer to a SSC controller
2426
+ unsigned int flag) // \arg IT to be enabled
2427
+ {
2428
+ //* Write to the IER register
2429
+ pSSC->SSC_IER = flag;
2430
+ }
2431
+
2432
+ //*----------------------------------------------------------------------------
2433
+ //* \fn AT91F_SSC_DisableIt
2434
+ //* \brief Disable SSC IT
2435
+ //*----------------------------------------------------------------------------
2436
+ __inline void AT91F_SSC_DisableIt (
2437
+ AT91PS_SSC pSSC, // \arg pointer to a SSC controller
2438
+ unsigned int flag) // \arg IT to be disabled
2439
+ {
2440
+ //* Write to the IDR register
2441
+ pSSC->SSC_IDR = flag;
2442
+ }
2443
+
2444
+ //*----------------------------------------------------------------------------
2445
+ //* \fn AT91F_SSC_ReceiveFrame
2446
+ //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initialized with Next Buffer, 0 if PDC is busy
2447
+ //*----------------------------------------------------------------------------
2448
+ __inline unsigned int AT91F_SSC_ReceiveFrame (
2449
+ AT91PS_SSC pSSC,
2450
+ char *pBuffer,
2451
+ unsigned int szBuffer,
2452
+ char *pNextBuffer,
2453
+ unsigned int szNextBuffer )
2454
+ {
2455
+ return AT91F_PDC_ReceiveFrame(
2456
+ (AT91PS_PDC) &(pSSC->SSC_RPR),
2457
+ pBuffer,
2458
+ szBuffer,
2459
+ pNextBuffer,
2460
+ szNextBuffer);
2461
+ }
2462
+
2463
+ //*----------------------------------------------------------------------------
2464
+ //* \fn AT91F_SSC_SendFrame
2465
+ //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initialized with Next Buffer, 0 if PDC is busy
2466
+ //*----------------------------------------------------------------------------
2467
+ __inline unsigned int AT91F_SSC_SendFrame(
2468
+ AT91PS_SSC pSSC,
2469
+ char *pBuffer,
2470
+ unsigned int szBuffer,
2471
+ char *pNextBuffer,
2472
+ unsigned int szNextBuffer )
2473
+ {
2474
+ return AT91F_PDC_SendFrame(
2475
+ (AT91PS_PDC) &(pSSC->SSC_RPR),
2476
+ pBuffer,
2477
+ szBuffer,
2478
+ pNextBuffer,
2479
+ szNextBuffer);
2480
+ }
2481
+
2482
+ //*----------------------------------------------------------------------------
2483
+ //* \fn AT91F_SSC_GetInterruptMaskStatus
2484
+ //* \brief Return SSC Interrupt Mask Status
2485
+ //*----------------------------------------------------------------------------
2486
+ __inline unsigned int AT91F_SSC_GetInterruptMaskStatus( // \return SSC Interrupt Mask Status
2487
+ AT91PS_SSC pSsc) // \arg pointer to a SSC controller
2488
+ {
2489
+ return pSsc->SSC_IMR;
2490
+ }
2491
+
2492
+ //*----------------------------------------------------------------------------
2493
+ //* \fn AT91F_SSC_IsInterruptMasked
2494
+ //* \brief Test if SSC Interrupt is Masked
2495
+ //*----------------------------------------------------------------------------
2496
+ __inline int AT91F_SSC_IsInterruptMasked(
2497
+ AT91PS_SSC pSsc, // \arg pointer to a SSC controller
2498
+ unsigned int flag) // \arg flag to be tested
2499
+ {
2500
+ return (AT91F_SSC_GetInterruptMaskStatus(pSsc) & flag);
2501
+ }
2502
+
2503
+ /* *****************************************************************************
2504
+ SOFTWARE API FOR TWI
2505
+ ***************************************************************************** */
2506
+ //*----------------------------------------------------------------------------
2507
+ //* \fn AT91F_TWI_EnableIt
2508
+ //* \brief Enable TWI IT
2509
+ //*----------------------------------------------------------------------------
2510
+ __inline void AT91F_TWI_EnableIt (
2511
+ AT91PS_TWI pTWI, // \arg pointer to a TWI controller
2512
+ unsigned int flag) // \arg IT to be enabled
2513
+ {
2514
+ //* Write to the IER register
2515
+ pTWI->TWI_IER = flag;
2516
+ }
2517
+
2518
+ //*----------------------------------------------------------------------------
2519
+ //* \fn AT91F_TWI_DisableIt
2520
+ //* \brief Disable TWI IT
2521
+ //*----------------------------------------------------------------------------
2522
+ __inline void AT91F_TWI_DisableIt (
2523
+ AT91PS_TWI pTWI, // \arg pointer to a TWI controller
2524
+ unsigned int flag) // \arg IT to be disabled
2525
+ {
2526
+ //* Write to the IDR register
2527
+ pTWI->TWI_IDR = flag;
2528
+ }
2529
+
2530
+ //*----------------------------------------------------------------------------
2531
+ //* \fn AT91F_TWI_Configure
2532
+ //* \brief Configure TWI in master mode
2533
+ //*----------------------------------------------------------------------------
2534
+ __inline void AT91F_TWI_Configure ( AT91PS_TWI pTWI ) // \arg pointer to a TWI controller
2535
+ {
2536
+ //* Disable interrupts
2537
+ pTWI->TWI_IDR = (unsigned int) -1;
2538
+
2539
+ //* Reset peripheral
2540
+ pTWI->TWI_CR = AT91C_TWI_SWRST;
2541
+
2542
+ //* Set Master mode
2543
+ pTWI->TWI_CR = AT91C_TWI_MSEN;
2544
+
2545
+ }
2546
+
2547
+ //*----------------------------------------------------------------------------
2548
+ //* \fn AT91F_TWI_GetInterruptMaskStatus
2549
+ //* \brief Return TWI Interrupt Mask Status
2550
+ //*----------------------------------------------------------------------------
2551
+ __inline unsigned int AT91F_TWI_GetInterruptMaskStatus( // \return TWI Interrupt Mask Status
2552
+ AT91PS_TWI pTwi) // \arg pointer to a TWI controller
2553
+ {
2554
+ return pTwi->TWI_IMR;
2555
+ }
2556
+
2557
+ //*----------------------------------------------------------------------------
2558
+ //* \fn AT91F_TWI_IsInterruptMasked
2559
+ //* \brief Test if TWI Interrupt is Masked
2560
+ //*----------------------------------------------------------------------------
2561
+ __inline int AT91F_TWI_IsInterruptMasked(
2562
+ AT91PS_TWI pTwi, // \arg pointer to a TWI controller
2563
+ unsigned int flag) // \arg flag to be tested
2564
+ {
2565
+ return (AT91F_TWI_GetInterruptMaskStatus(pTwi) & flag);
2566
+ }
2567
+
2568
+ /* *****************************************************************************
2569
+ SOFTWARE API FOR PWMC
2570
+ ***************************************************************************** */
2571
+ //*----------------------------------------------------------------------------
2572
+ //* \fn AT91F_PWM_GetStatus
2573
+ //* \brief Return PWM Interrupt Status
2574
+ //*----------------------------------------------------------------------------
2575
+ __inline unsigned int AT91F_PWMC_GetStatus( // \return PWM Interrupt Status
2576
+ AT91PS_PWMC pPWM) // pointer to a PWM controller
2577
+ {
2578
+ return pPWM->PWMC_SR;
2579
+ }
2580
+
2581
+ //*----------------------------------------------------------------------------
2582
+ //* \fn AT91F_PWM_InterruptEnable
2583
+ //* \brief Enable PWM Interrupt
2584
+ //*----------------------------------------------------------------------------
2585
+ __inline void AT91F_PWMC_InterruptEnable(
2586
+ AT91PS_PWMC pPwm, // \arg pointer to a PWM controller
2587
+ unsigned int flag) // \arg PWM interrupt to be enabled
2588
+ {
2589
+ pPwm->PWMC_IER = flag;
2590
+ }
2591
+
2592
+ //*----------------------------------------------------------------------------
2593
+ //* \fn AT91F_PWM_InterruptDisable
2594
+ //* \brief Disable PWM Interrupt
2595
+ //*----------------------------------------------------------------------------
2596
+ __inline void AT91F_PWMC_InterruptDisable(
2597
+ AT91PS_PWMC pPwm, // \arg pointer to a PWM controller
2598
+ unsigned int flag) // \arg PWM interrupt to be disabled
2599
+ {
2600
+ pPwm->PWMC_IDR = flag;
2601
+ }
2602
+
2603
+ //*----------------------------------------------------------------------------
2604
+ //* \fn AT91F_PWM_GetInterruptMaskStatus
2605
+ //* \brief Return PWM Interrupt Mask Status
2606
+ //*----------------------------------------------------------------------------
2607
+ __inline unsigned int AT91F_PWMC_GetInterruptMaskStatus( // \return PWM Interrupt Mask Status
2608
+ AT91PS_PWMC pPwm) // \arg pointer to a PWM controller
2609
+ {
2610
+ return pPwm->PWMC_IMR;
2611
+ }
2612
+
2613
+ //*----------------------------------------------------------------------------
2614
+ //* \fn AT91F_PWM_IsInterruptMasked
2615
+ //* \brief Test if PWM Interrupt is Masked
2616
+ //*----------------------------------------------------------------------------
2617
+ __inline unsigned int AT91F_PWMC_IsInterruptMasked(
2618
+ AT91PS_PWMC pPWM, // \arg pointer to a PWM controller
2619
+ unsigned int flag) // \arg flag to be tested
2620
+ {
2621
+ return (AT91F_PWMC_GetInterruptMaskStatus(pPWM) & flag);
2622
+ }
2623
+
2624
+ //*----------------------------------------------------------------------------
2625
+ //* \fn AT91F_PWM_IsStatusSet
2626
+ //* \brief Test if PWM Interrupt is Set
2627
+ //*----------------------------------------------------------------------------
2628
+ __inline unsigned int AT91F_PWMC_IsStatusSet(
2629
+ AT91PS_PWMC pPWM, // \arg pointer to a PWM controller
2630
+ unsigned int flag) // \arg flag to be tested
2631
+ {
2632
+ return (AT91F_PWMC_GetStatus(pPWM) & flag);
2633
+ }
2634
+
2635
+ //*----------------------------------------------------------------------------
2636
+ //* \fn AT91F_PWM_CfgChannel
2637
+ //* \brief Test if PWM Interrupt is Set
2638
+ //*----------------------------------------------------------------------------
2639
+ __inline void AT91F_PWMC_CfgChannel(
2640
+ AT91PS_PWMC pPWM, // \arg pointer to a PWM controller
2641
+ unsigned int channelId, // \arg PWM channel ID
2642
+ unsigned int mode, // \arg PWM mode
2643
+ unsigned int period, // \arg PWM period
2644
+ unsigned int duty) // \arg PWM duty cycle
2645
+ {
2646
+ pPWM->PWMC_CH[channelId].PWMC_CMR = mode;
2647
+ pPWM->PWMC_CH[channelId].PWMC_CDTYR = duty;
2648
+ pPWM->PWMC_CH[channelId].PWMC_CPRDR = period;
2649
+ }
2650
+
2651
+ //*----------------------------------------------------------------------------
2652
+ //* \fn AT91F_PWM_StartChannel
2653
+ //* \brief Enable channel
2654
+ //*----------------------------------------------------------------------------
2655
+ __inline void AT91F_PWMC_StartChannel(
2656
+ AT91PS_PWMC pPWM, // \arg pointer to a PWM controller
2657
+ unsigned int flag) // \arg Channels IDs to be enabled
2658
+ {
2659
+ pPWM->PWMC_ENA = flag;
2660
+ }
2661
+
2662
+ //*----------------------------------------------------------------------------
2663
+ //* \fn AT91F_PWM_StopChannel
2664
+ //* \brief Disable channel
2665
+ //*----------------------------------------------------------------------------
2666
+ __inline void AT91F_PWMC_StopChannel(
2667
+ AT91PS_PWMC pPWM, // \arg pointer to a PWM controller
2668
+ unsigned int flag) // \arg Channels IDs to be enabled
2669
+ {
2670
+ pPWM->PWMC_DIS = flag;
2671
+ }
2672
+
2673
+ //*----------------------------------------------------------------------------
2674
+ //* \fn AT91F_PWM_UpdateChannel
2675
+ //* \brief Update Period or Duty Cycle
2676
+ //*----------------------------------------------------------------------------
2677
+ __inline void AT91F_PWMC_UpdateChannel(
2678
+ AT91PS_PWMC pPWM, // \arg pointer to a PWM controller
2679
+ unsigned int channelId, // \arg PWM channel ID
2680
+ unsigned int update) // \arg Channels IDs to be enabled
2681
+ {
2682
+ pPWM->PWMC_CH[channelId].PWMC_CUPDR = update;
2683
+ }
2684
+
2685
+ /* *****************************************************************************
2686
+ SOFTWARE API FOR UDP
2687
+ ***************************************************************************** */
2688
+ //*----------------------------------------------------------------------------
2689
+ //* \fn AT91F_UDP_EnableIt
2690
+ //* \brief Enable UDP IT
2691
+ //*----------------------------------------------------------------------------
2692
+ __inline void AT91F_UDP_EnableIt (
2693
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2694
+ unsigned int flag) // \arg IT to be enabled
2695
+ {
2696
+ //* Write to the IER register
2697
+ pUDP->UDP_IER = flag;
2698
+ }
2699
+
2700
+ //*----------------------------------------------------------------------------
2701
+ //* \fn AT91F_UDP_DisableIt
2702
+ //* \brief Disable UDP IT
2703
+ //*----------------------------------------------------------------------------
2704
+ __inline void AT91F_UDP_DisableIt (
2705
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2706
+ unsigned int flag) // \arg IT to be disabled
2707
+ {
2708
+ //* Write to the IDR register
2709
+ pUDP->UDP_IDR = flag;
2710
+ }
2711
+
2712
+ //*----------------------------------------------------------------------------
2713
+ //* \fn AT91F_UDP_SetAddress
2714
+ //* \brief Set UDP functional address
2715
+ //*----------------------------------------------------------------------------
2716
+ __inline void AT91F_UDP_SetAddress (
2717
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2718
+ unsigned char address) // \arg new UDP address
2719
+ {
2720
+ pUDP->UDP_FADDR = (AT91C_UDP_FEN | address);
2721
+ }
2722
+
2723
+ //*----------------------------------------------------------------------------
2724
+ //* \fn AT91F_UDP_EnableEp
2725
+ //* \brief Enable Endpoint
2726
+ //*----------------------------------------------------------------------------
2727
+ __inline void AT91F_UDP_EnableEp (
2728
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2729
+ unsigned char endpoint) // \arg endpoint number
2730
+ {
2731
+ pUDP->UDP_CSR[endpoint] |= AT91C_UDP_EPEDS;
2732
+ }
2733
+
2734
+ //*----------------------------------------------------------------------------
2735
+ //* \fn AT91F_UDP_DisableEp
2736
+ //* \brief Enable Endpoint
2737
+ //*----------------------------------------------------------------------------
2738
+ __inline void AT91F_UDP_DisableEp (
2739
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2740
+ unsigned char endpoint) // \arg endpoint number
2741
+ {
2742
+ pUDP->UDP_CSR[endpoint] &= ~AT91C_UDP_EPEDS;
2743
+ }
2744
+
2745
+ //*----------------------------------------------------------------------------
2746
+ //* \fn AT91F_UDP_SetState
2747
+ //* \brief Set UDP Device state
2748
+ //*----------------------------------------------------------------------------
2749
+ __inline void AT91F_UDP_SetState (
2750
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2751
+ unsigned int flag) // \arg new UDP address
2752
+ {
2753
+ pUDP->UDP_GLBSTATE &= ~(AT91C_UDP_FADDEN | AT91C_UDP_CONFG);
2754
+ pUDP->UDP_GLBSTATE |= flag;
2755
+ }
2756
+
2757
+ //*----------------------------------------------------------------------------
2758
+ //* \fn AT91F_UDP_GetState
2759
+ //* \brief return UDP Device state
2760
+ //*----------------------------------------------------------------------------
2761
+ __inline unsigned int AT91F_UDP_GetState ( // \return the UDP device state
2762
+ AT91PS_UDP pUDP) // \arg pointer to a UDP controller
2763
+ {
2764
+ return (pUDP->UDP_GLBSTATE & (AT91C_UDP_FADDEN | AT91C_UDP_CONFG));
2765
+ }
2766
+
2767
+ //*----------------------------------------------------------------------------
2768
+ //* \fn AT91F_UDP_ResetEp
2769
+ //* \brief Reset UDP endpoint
2770
+ //*----------------------------------------------------------------------------
2771
+ __inline void AT91F_UDP_ResetEp ( // \return the UDP device state
2772
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2773
+ unsigned int flag) // \arg Endpoints to be reset
2774
+ {
2775
+ pUDP->UDP_RSTEP = flag;
2776
+ pUDP->UDP_RSTEP = 0;
2777
+ }
2778
+
2779
+ //*----------------------------------------------------------------------------
2780
+ //* \fn AT91F_UDP_EpStall
2781
+ //* \brief Endpoint will STALL requests
2782
+ //*----------------------------------------------------------------------------
2783
+ __inline void AT91F_UDP_EpStall(
2784
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2785
+ unsigned char endpoint) // \arg endpoint number
2786
+ {
2787
+ pUDP->UDP_CSR[endpoint] |= AT91C_UDP_FORCESTALL;
2788
+ }
2789
+
2790
+ //*----------------------------------------------------------------------------
2791
+ //* \fn AT91F_UDP_EpWrite
2792
+ //* \brief Write value in the DPR
2793
+ //*----------------------------------------------------------------------------
2794
+ __inline void AT91F_UDP_EpWrite(
2795
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2796
+ unsigned char endpoint, // \arg endpoint number
2797
+ unsigned char value) // \arg value to be written in the DPR
2798
+ {
2799
+ pUDP->UDP_FDR[endpoint] = value;
2800
+ }
2801
+
2802
+ //*----------------------------------------------------------------------------
2803
+ //* \fn AT91F_UDP_EpRead
2804
+ //* \brief Return value from the DPR
2805
+ //*----------------------------------------------------------------------------
2806
+ __inline unsigned int AT91F_UDP_EpRead(
2807
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2808
+ unsigned char endpoint) // \arg endpoint number
2809
+ {
2810
+ return pUDP->UDP_FDR[endpoint];
2811
+ }
2812
+
2813
+ //*----------------------------------------------------------------------------
2814
+ //* \fn AT91F_UDP_EpEndOfWr
2815
+ //* \brief Notify the UDP that values in DPR are ready to be sent
2816
+ //*----------------------------------------------------------------------------
2817
+ __inline void AT91F_UDP_EpEndOfWr(
2818
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2819
+ unsigned char endpoint) // \arg endpoint number
2820
+ {
2821
+ pUDP->UDP_CSR[endpoint] |= AT91C_UDP_TXPKTRDY;
2822
+ }
2823
+
2824
+ //*----------------------------------------------------------------------------
2825
+ //* \fn AT91F_UDP_EpClear
2826
+ //* \brief Clear flag in the endpoint CSR register
2827
+ //*----------------------------------------------------------------------------
2828
+ __inline void AT91F_UDP_EpClear(
2829
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2830
+ unsigned char endpoint, // \arg endpoint number
2831
+ unsigned int flag) // \arg flag to be cleared
2832
+ {
2833
+ pUDP->UDP_CSR[endpoint] &= ~(flag);
2834
+ }
2835
+
2836
+ //*----------------------------------------------------------------------------
2837
+ //* \fn AT91F_UDP_EpSet
2838
+ //* \brief Set flag in the endpoint CSR register
2839
+ //*----------------------------------------------------------------------------
2840
+ __inline void AT91F_UDP_EpSet(
2841
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2842
+ unsigned char endpoint, // \arg endpoint number
2843
+ unsigned int flag) // \arg flag to be cleared
2844
+ {
2845
+ pUDP->UDP_CSR[endpoint] |= flag;
2846
+ }
2847
+
2848
+ //*----------------------------------------------------------------------------
2849
+ //* \fn AT91F_UDP_EpStatus
2850
+ //* \brief Return the endpoint CSR register
2851
+ //*----------------------------------------------------------------------------
2852
+ __inline unsigned int AT91F_UDP_EpStatus(
2853
+ AT91PS_UDP pUDP, // \arg pointer to a UDP controller
2854
+ unsigned char endpoint) // \arg endpoint number
2855
+ {
2856
+ return pUDP->UDP_CSR[endpoint];
2857
+ }
2858
+
2859
+ //*----------------------------------------------------------------------------
2860
+ //* \fn AT91F_UDP_GetInterruptMaskStatus
2861
+ //* \brief Return UDP Interrupt Mask Status
2862
+ //*----------------------------------------------------------------------------
2863
+ __inline unsigned int AT91F_UDP_GetInterruptMaskStatus(
2864
+ AT91PS_UDP pUdp) // \arg pointer to a UDP controller
2865
+ {
2866
+ return pUdp->UDP_IMR;
2867
+ }
2868
+
2869
+ //*----------------------------------------------------------------------------
2870
+ //* \fn AT91F_UDP_IsInterruptMasked
2871
+ //* \brief Test if UDP Interrupt is Masked
2872
+ //*----------------------------------------------------------------------------
2873
+ __inline int AT91F_UDP_IsInterruptMasked(
2874
+ AT91PS_UDP pUdp, // \arg pointer to a UDP controller
2875
+ unsigned int flag) // \arg flag to be tested
2876
+ {
2877
+ return (AT91F_UDP_GetInterruptMaskStatus(pUdp) & flag);
2878
+ }
2879
+
2880
+ // ----------------------------------------------------------------------------
2881
+ // \fn AT91F_UDP_InterruptStatusRegister
2882
+ // \brief Return the Interrupt Status Register
2883
+ // ----------------------------------------------------------------------------
2884
+ __inline unsigned int AT91F_UDP_InterruptStatusRegister(
2885
+ AT91PS_UDP pUDP ) // \arg pointer to a UDP controller
2886
+ {
2887
+ return pUDP->UDP_ISR;
2888
+ }
2889
+
2890
+ // ----------------------------------------------------------------------------
2891
+ // \fn AT91F_UDP_InterruptClearRegister
2892
+ // \brief Clear Interrupt Register
2893
+ // ----------------------------------------------------------------------------
2894
+ __inline void AT91F_UDP_InterruptClearRegister (
2895
+ AT91PS_UDP pUDP, // \arg pointer to UDP controller
2896
+ unsigned int flag) // \arg IT to be cleat
2897
+ {
2898
+ pUDP->UDP_ICR = flag;
2899
+ }
2900
+
2901
+ // ----------------------------------------------------------------------------
2902
+ // \fn AT91F_UDP_EnableTransceiver
2903
+ // \brief Enable transceiver
2904
+ // ----------------------------------------------------------------------------
2905
+ __inline void AT91F_UDP_EnableTransceiver(
2906
+ AT91PS_UDP pUDP ) // \arg pointer to a UDP controller
2907
+ {
2908
+ pUDP->UDP_TXVC &= ~AT91C_UDP_TXVDIS;
2909
+ }
2910
+
2911
+ // ----------------------------------------------------------------------------
2912
+ // \fn AT91F_UDP_DisableTransceiver
2913
+ // \brief Disable transceiver
2914
+ // ----------------------------------------------------------------------------
2915
+ __inline void AT91F_UDP_DisableTransceiver(
2916
+ AT91PS_UDP pUDP ) // \arg pointer to a UDP controller
2917
+ {
2918
+ pUDP->UDP_TXVC = AT91C_UDP_TXVDIS;
2919
+ }
2920
+
2921
+ /* *****************************************************************************
2922
+ SOFTWARE API FOR TC
2923
+ ***************************************************************************** */
2924
+ //*----------------------------------------------------------------------------
2925
+ //* \fn AT91F_TC_InterruptEnable
2926
+ //* \brief Enable TC Interrupt
2927
+ //*----------------------------------------------------------------------------
2928
+ __inline void AT91F_TC_InterruptEnable(
2929
+ AT91PS_TC pTc, // \arg pointer to a TC controller
2930
+ unsigned int flag) // \arg TC interrupt to be enabled
2931
+ {
2932
+ pTc->TC_IER = flag;
2933
+ }
2934
+
2935
+ //*----------------------------------------------------------------------------
2936
+ //* \fn AT91F_TC_InterruptDisable
2937
+ //* \brief Disable TC Interrupt
2938
+ //*----------------------------------------------------------------------------
2939
+ __inline void AT91F_TC_InterruptDisable(
2940
+ AT91PS_TC pTc, // \arg pointer to a TC controller
2941
+ unsigned int flag) // \arg TC interrupt to be disabled
2942
+ {
2943
+ pTc->TC_IDR = flag;
2944
+ }
2945
+
2946
+ //*----------------------------------------------------------------------------
2947
+ //* \fn AT91F_TC_GetInterruptMaskStatus
2948
+ //* \brief Return TC Interrupt Mask Status
2949
+ //*----------------------------------------------------------------------------
2950
+ __inline unsigned int AT91F_TC_GetInterruptMaskStatus( // \return TC Interrupt Mask Status
2951
+ AT91PS_TC pTc) // \arg pointer to a TC controller
2952
+ {
2953
+ return pTc->TC_IMR;
2954
+ }
2955
+
2956
+ //*----------------------------------------------------------------------------
2957
+ //* \fn AT91F_TC_IsInterruptMasked
2958
+ //* \brief Test if TC Interrupt is Masked
2959
+ //*----------------------------------------------------------------------------
2960
+ __inline int AT91F_TC_IsInterruptMasked(
2961
+ AT91PS_TC pTc, // \arg pointer to a TC controller
2962
+ unsigned int flag) // \arg flag to be tested
2963
+ {
2964
+ return (AT91F_TC_GetInterruptMaskStatus(pTc) & flag);
2965
+ }
2966
+
2967
+ /* *****************************************************************************
2968
+ SOFTWARE API FOR CAN
2969
+ ***************************************************************************** */
2970
+ #define STANDARD_FORMAT 0
2971
+ #define EXTENDED_FORMAT 1
2972
+
2973
+ //*----------------------------------------------------------------------------
2974
+ //* \fn AT91F_InitMailboxRegisters()
2975
+ //* \brief Configure the corresponding mailbox
2976
+ //*----------------------------------------------------------------------------
2977
+ __inline void AT91F_InitMailboxRegisters(AT91PS_CAN_MB CAN_Mailbox,
2978
+ int mode_reg,
2979
+ int acceptance_mask_reg,
2980
+ int id_reg,
2981
+ int data_low_reg,
2982
+ int data_high_reg,
2983
+ int control_reg)
2984
+ {
2985
+ CAN_Mailbox->CAN_MB_MCR = 0x0;
2986
+ CAN_Mailbox->CAN_MB_MMR = mode_reg;
2987
+ CAN_Mailbox->CAN_MB_MAM = acceptance_mask_reg;
2988
+ CAN_Mailbox->CAN_MB_MID = id_reg;
2989
+ CAN_Mailbox->CAN_MB_MDL = data_low_reg;
2990
+ CAN_Mailbox->CAN_MB_MDH = data_high_reg;
2991
+ CAN_Mailbox->CAN_MB_MCR = control_reg;
2992
+ }
2993
+
2994
+ //*----------------------------------------------------------------------------
2995
+ //* \fn AT91F_EnableCAN()
2996
+ //* \brief
2997
+ //*----------------------------------------------------------------------------
2998
+ __inline void AT91F_EnableCAN(
2999
+ AT91PS_CAN pCAN) // pointer to a CAN controller
3000
+ {
3001
+ pCAN->CAN_MR |= AT91C_CAN_CANEN;
3002
+
3003
+ // Wait for WAKEUP flag raising <=> 11-recessive-bit were scanned by the transceiver
3004
+ while( (pCAN->CAN_SR & AT91C_CAN_WAKEUP) != AT91C_CAN_WAKEUP );
3005
+ }
3006
+
3007
+ //*----------------------------------------------------------------------------
3008
+ //* \fn AT91F_DisableCAN()
3009
+ //* \brief
3010
+ //*----------------------------------------------------------------------------
3011
+ __inline void AT91F_DisableCAN(
3012
+ AT91PS_CAN pCAN) // pointer to a CAN controller
3013
+ {
3014
+ pCAN->CAN_MR &= ~AT91C_CAN_CANEN;
3015
+ }
3016
+
3017
+ //*----------------------------------------------------------------------------
3018
+ //* \fn AT91F_CAN_EnableIt
3019
+ //* \brief Enable CAN interrupt
3020
+ //*----------------------------------------------------------------------------
3021
+ __inline void AT91F_CAN_EnableIt (
3022
+ AT91PS_CAN pCAN, // pointer to a CAN controller
3023
+ unsigned int flag) // IT to be enabled
3024
+ {
3025
+ //* Write to the IER register
3026
+ pCAN->CAN_IER = flag;
3027
+ }
3028
+
3029
+ //*----------------------------------------------------------------------------
3030
+ //* \fn AT91F_CAN_DisableIt
3031
+ //* \brief Disable CAN interrupt
3032
+ //*----------------------------------------------------------------------------
3033
+ __inline void AT91F_CAN_DisableIt (
3034
+ AT91PS_CAN pCAN, // pointer to a CAN controller
3035
+ unsigned int flag) // IT to be disabled
3036
+ {
3037
+ //* Write to the IDR register
3038
+ pCAN->CAN_IDR = flag;
3039
+ }
3040
+
3041
+ //*----------------------------------------------------------------------------
3042
+ //* \fn AT91F_CAN_GetStatus
3043
+ //* \brief Return CAN Interrupt Status
3044
+ //*----------------------------------------------------------------------------
3045
+ __inline unsigned int AT91F_CAN_GetStatus( // \return CAN Interrupt Status
3046
+ AT91PS_CAN pCAN) // pointer to a CAN controller
3047
+ {
3048
+ return pCAN->CAN_SR;
3049
+ }
3050
+
3051
+ //*----------------------------------------------------------------------------
3052
+ //* \fn AT91F_CAN_GetInterruptMaskStatus
3053
+ //* \brief Return CAN Interrupt Mask Status
3054
+ //*----------------------------------------------------------------------------
3055
+ __inline unsigned int AT91F_CAN_GetInterruptMaskStatus( // \return CAN Interrupt Mask Status
3056
+ AT91PS_CAN pCAN) // pointer to a CAN controller
3057
+ {
3058
+ return pCAN->CAN_IMR;
3059
+ }
3060
+
3061
+ //*----------------------------------------------------------------------------
3062
+ //* \fn AT91F_CAN_IsInterruptMasked
3063
+ //* \brief Test if CAN Interrupt is Masked
3064
+ //*----------------------------------------------------------------------------
3065
+ __inline unsigned int AT91F_CAN_IsInterruptMasked(
3066
+ AT91PS_CAN pCAN, // \arg pointer to a CAN controller
3067
+ unsigned int flag) // \arg flag to be tested
3068
+ {
3069
+ return (AT91F_CAN_GetInterruptMaskStatus(pCAN) & flag);
3070
+ }
3071
+
3072
+ //*----------------------------------------------------------------------------
3073
+ //* \fn AT91F_CAN_IsStatusSet
3074
+ //* \brief Test if CAN Interrupt is Set
3075
+ //*----------------------------------------------------------------------------
3076
+ __inline unsigned int AT91F_CAN_IsStatusSet(
3077
+ AT91PS_CAN pCAN, // \arg pointer to a CAN controller
3078
+ unsigned int flag) // \arg flag to be tested
3079
+ {
3080
+ return (AT91F_CAN_GetStatus(pCAN) & flag);
3081
+ }
3082
+
3083
+ //*----------------------------------------------------------------------------
3084
+ //* \fn AT91F_CAN_CfgModeReg
3085
+ //* \brief Configure the Mode Register of the CAN controller
3086
+ //*----------------------------------------------------------------------------
3087
+ __inline void AT91F_CAN_CfgModeReg (
3088
+ AT91PS_CAN pCAN, // pointer to a CAN controller
3089
+ unsigned int mode) // mode register
3090
+ {
3091
+ //* Write to the MR register
3092
+ pCAN->CAN_MR = mode;
3093
+ }
3094
+
3095
+ //*----------------------------------------------------------------------------
3096
+ //* \fn AT91F_CAN_GetModeReg
3097
+ //* \brief Return the Mode Register of the CAN controller value
3098
+ //*----------------------------------------------------------------------------
3099
+ __inline unsigned int AT91F_CAN_GetModeReg (
3100
+ AT91PS_CAN pCAN // pointer to a CAN controller
3101
+ )
3102
+ {
3103
+ return pCAN->CAN_MR;
3104
+ }
3105
+
3106
+ //*----------------------------------------------------------------------------
3107
+ //* \fn AT91F_CAN_CfgBaudrateReg
3108
+ //* \brief Configure the Baudrate of the CAN controller for the network
3109
+ //*----------------------------------------------------------------------------
3110
+ __inline void AT91F_CAN_CfgBaudrateReg (
3111
+ AT91PS_CAN pCAN, // pointer to a CAN controller
3112
+ unsigned int baudrate_cfg)
3113
+ {
3114
+ //* Write to the BR register
3115
+ pCAN->CAN_BR = baudrate_cfg;
3116
+ }
3117
+
3118
+ //*----------------------------------------------------------------------------
3119
+ //* \fn AT91F_CAN_GetBaudrate
3120
+ //* \brief Return the Baudrate of the CAN controller for the network value
3121
+ //*----------------------------------------------------------------------------
3122
+ __inline unsigned int AT91F_CAN_GetBaudrate (
3123
+ AT91PS_CAN pCAN // pointer to a CAN controller
3124
+ )
3125
+ {
3126
+ return pCAN->CAN_BR;
3127
+ }
3128
+
3129
+ //*----------------------------------------------------------------------------
3130
+ //* \fn AT91F_CAN_GetInternalCounter
3131
+ //* \brief Return CAN Timer Regsiter Value
3132
+ //*----------------------------------------------------------------------------
3133
+ __inline unsigned int AT91F_CAN_GetInternalCounter (
3134
+ AT91PS_CAN pCAN // pointer to a CAN controller
3135
+ )
3136
+ {
3137
+ return pCAN->CAN_TIM;
3138
+ }
3139
+
3140
+ //*----------------------------------------------------------------------------
3141
+ //* \fn AT91F_CAN_GetTimestamp
3142
+ //* \brief Return CAN Timestamp Register Value
3143
+ //*----------------------------------------------------------------------------
3144
+ __inline unsigned int AT91F_CAN_GetTimestamp (
3145
+ AT91PS_CAN pCAN // pointer to a CAN controller
3146
+ )
3147
+ {
3148
+ return pCAN->CAN_TIMESTP;
3149
+ }
3150
+
3151
+ //*----------------------------------------------------------------------------
3152
+ //* \fn AT91F_CAN_GetErrorCounter
3153
+ //* \brief Return CAN Error Counter Register Value
3154
+ //*----------------------------------------------------------------------------
3155
+ __inline unsigned int AT91F_CAN_GetErrorCounter (
3156
+ AT91PS_CAN pCAN // pointer to a CAN controller
3157
+ )
3158
+ {
3159
+ return pCAN->CAN_ECR;
3160
+ }
3161
+
3162
+ //*----------------------------------------------------------------------------
3163
+ //* \fn AT91F_CAN_InitTransferRequest
3164
+ //* \brief Request for a transfer on the corresponding mailboxes
3165
+ //*----------------------------------------------------------------------------
3166
+ __inline void AT91F_CAN_InitTransferRequest (
3167
+ AT91PS_CAN pCAN, // pointer to a CAN controller
3168
+ unsigned int transfer_cmd)
3169
+ {
3170
+ pCAN->CAN_TCR = transfer_cmd;
3171
+ }
3172
+
3173
+ //*----------------------------------------------------------------------------
3174
+ //* \fn AT91F_CAN_InitAbortRequest
3175
+ //* \brief Abort the corresponding mailboxes
3176
+ //*----------------------------------------------------------------------------
3177
+ __inline void AT91F_CAN_InitAbortRequest (
3178
+ AT91PS_CAN pCAN, // pointer to a CAN controller
3179
+ unsigned int abort_cmd)
3180
+ {
3181
+ pCAN->CAN_ACR = abort_cmd;
3182
+ }
3183
+
3184
+ //*----------------------------------------------------------------------------
3185
+ //* \fn AT91F_CAN_CfgMessageModeReg
3186
+ //* \brief Program the Message Mode Register
3187
+ //*----------------------------------------------------------------------------
3188
+ __inline void AT91F_CAN_CfgMessageModeReg (
3189
+ AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox
3190
+ unsigned int mode)
3191
+ {
3192
+ CAN_Mailbox->CAN_MB_MMR = mode;
3193
+ }
3194
+
3195
+ //*----------------------------------------------------------------------------
3196
+ //* \fn AT91F_CAN_GetMessageModeReg
3197
+ //* \brief Return the Message Mode Register
3198
+ //*----------------------------------------------------------------------------
3199
+ __inline unsigned int AT91F_CAN_GetMessageModeReg (
3200
+ AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox
3201
+ {
3202
+ return CAN_Mailbox->CAN_MB_MMR;
3203
+ }
3204
+
3205
+ //*----------------------------------------------------------------------------
3206
+ //* \fn AT91F_CAN_CfgMessageIDReg
3207
+ //* \brief Program the Message ID Register
3208
+ //* \brief Version == 0 for Standard messsage, Version == 1 for Extended
3209
+ //*----------------------------------------------------------------------------
3210
+ __inline void AT91F_CAN_CfgMessageIDReg (
3211
+ AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox
3212
+ unsigned int id,
3213
+ unsigned char version)
3214
+ {
3215
+ if(version==0) // IDvA Standard Format
3216
+ CAN_Mailbox->CAN_MB_MID = id<<18;
3217
+ else // IDvB Extended Format
3218
+ CAN_Mailbox->CAN_MB_MID = id | (1<<29); // set MIDE bit
3219
+ }
3220
+
3221
+ //*----------------------------------------------------------------------------
3222
+ //* \fn AT91F_CAN_GetMessageIDReg
3223
+ //* \brief Return the Message ID Register
3224
+ //*----------------------------------------------------------------------------
3225
+ __inline unsigned int AT91F_CAN_GetMessageIDReg (
3226
+ AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox
3227
+ {
3228
+ return CAN_Mailbox->CAN_MB_MID;
3229
+ }
3230
+
3231
+ //*----------------------------------------------------------------------------
3232
+ //* \fn AT91F_CAN_CfgMessageAcceptanceMaskReg
3233
+ //* \brief Program the Message Acceptance Mask Register
3234
+ //*----------------------------------------------------------------------------
3235
+ __inline void AT91F_CAN_CfgMessageAcceptanceMaskReg (
3236
+ AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox
3237
+ unsigned int mask)
3238
+ {
3239
+ CAN_Mailbox->CAN_MB_MAM = mask;
3240
+ }
3241
+
3242
+ //*----------------------------------------------------------------------------
3243
+ //* \fn AT91F_CAN_GetMessageAcceptanceMaskReg
3244
+ //* \brief Return the Message Acceptance Mask Register
3245
+ //*----------------------------------------------------------------------------
3246
+ __inline unsigned int AT91F_CAN_GetMessageAcceptanceMaskReg (
3247
+ AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox
3248
+ {
3249
+ return CAN_Mailbox->CAN_MB_MAM;
3250
+ }
3251
+
3252
+ //*----------------------------------------------------------------------------
3253
+ //* \fn AT91F_CAN_GetFamilyID
3254
+ //* \brief Return the Message ID Register
3255
+ //*----------------------------------------------------------------------------
3256
+ __inline unsigned int AT91F_CAN_GetFamilyID (
3257
+ AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox
3258
+ {
3259
+ return CAN_Mailbox->CAN_MB_MFID;
3260
+ }
3261
+
3262
+ //*----------------------------------------------------------------------------
3263
+ //* \fn AT91F_CAN_CfgMessageCtrl
3264
+ //* \brief Request and config for a transfer on the corresponding mailbox
3265
+ //*----------------------------------------------------------------------------
3266
+ __inline void AT91F_CAN_CfgMessageCtrlReg (
3267
+ AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox
3268
+ unsigned int message_ctrl_cmd)
3269
+ {
3270
+ CAN_Mailbox->CAN_MB_MCR = message_ctrl_cmd;
3271
+ }
3272
+
3273
+ //*----------------------------------------------------------------------------
3274
+ //* \fn AT91F_CAN_GetMessageStatus
3275
+ //* \brief Return CAN Mailbox Status
3276
+ //*----------------------------------------------------------------------------
3277
+ __inline unsigned int AT91F_CAN_GetMessageStatus (
3278
+ AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox
3279
+ {
3280
+ return CAN_Mailbox->CAN_MB_MSR;
3281
+ }
3282
+
3283
+ //*----------------------------------------------------------------------------
3284
+ //* \fn AT91F_CAN_CfgMessageDataLow
3285
+ //* \brief Program data low value
3286
+ //*----------------------------------------------------------------------------
3287
+ __inline void AT91F_CAN_CfgMessageDataLow (
3288
+ AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox
3289
+ unsigned int data)
3290
+ {
3291
+ CAN_Mailbox->CAN_MB_MDL = data;
3292
+ }
3293
+
3294
+ //*----------------------------------------------------------------------------
3295
+ //* \fn AT91F_CAN_GetMessageDataLow
3296
+ //* \brief Return data low value
3297
+ //*----------------------------------------------------------------------------
3298
+ __inline unsigned int AT91F_CAN_GetMessageDataLow (
3299
+ AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox
3300
+ {
3301
+ return CAN_Mailbox->CAN_MB_MDL;
3302
+ }
3303
+
3304
+ //*----------------------------------------------------------------------------
3305
+ //* \fn AT91F_CAN_CfgMessageDataHigh
3306
+ //* \brief Program data high value
3307
+ //*----------------------------------------------------------------------------
3308
+ __inline void AT91F_CAN_CfgMessageDataHigh (
3309
+ AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox
3310
+ unsigned int data)
3311
+ {
3312
+ CAN_Mailbox->CAN_MB_MDH = data;
3313
+ }
3314
+
3315
+ //*----------------------------------------------------------------------------
3316
+ //* \fn AT91F_CAN_GetMessageDataHigh
3317
+ //* \brief Return data high value
3318
+ //*----------------------------------------------------------------------------
3319
+ __inline unsigned int AT91F_CAN_GetMessageDataHigh (
3320
+ AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox
3321
+ {
3322
+ return CAN_Mailbox->CAN_MB_MDH;
3323
+ }
3324
+
3325
+ /* *****************************************************************************
3326
+ SOFTWARE API FOR ADC
3327
+ ***************************************************************************** */
3328
+ //*----------------------------------------------------------------------------
3329
+ //* \fn AT91F_ADC_EnableIt
3330
+ //* \brief Enable ADC interrupt
3331
+ //*----------------------------------------------------------------------------
3332
+ __inline void AT91F_ADC_EnableIt (
3333
+ AT91PS_ADC pADC, // pointer to a ADC controller
3334
+ unsigned int flag) // IT to be enabled
3335
+ {
3336
+ //* Write to the IER register
3337
+ pADC->ADC_IER = flag;
3338
+ }
3339
+
3340
+ //*----------------------------------------------------------------------------
3341
+ //* \fn AT91F_ADC_DisableIt
3342
+ //* \brief Disable ADC interrupt
3343
+ //*----------------------------------------------------------------------------
3344
+ __inline void AT91F_ADC_DisableIt (
3345
+ AT91PS_ADC pADC, // pointer to a ADC controller
3346
+ unsigned int flag) // IT to be disabled
3347
+ {
3348
+ //* Write to the IDR register
3349
+ pADC->ADC_IDR = flag;
3350
+ }
3351
+
3352
+ //*----------------------------------------------------------------------------
3353
+ //* \fn AT91F_ADC_GetStatus
3354
+ //* \brief Return ADC Interrupt Status
3355
+ //*----------------------------------------------------------------------------
3356
+ __inline unsigned int AT91F_ADC_GetStatus( // \return ADC Interrupt Status
3357
+ AT91PS_ADC pADC) // pointer to a ADC controller
3358
+ {
3359
+ return pADC->ADC_SR;
3360
+ }
3361
+
3362
+ //*----------------------------------------------------------------------------
3363
+ //* \fn AT91F_ADC_GetInterruptMaskStatus
3364
+ //* \brief Return ADC Interrupt Mask Status
3365
+ //*----------------------------------------------------------------------------
3366
+ __inline unsigned int AT91F_ADC_GetInterruptMaskStatus( // \return ADC Interrupt Mask Status
3367
+ AT91PS_ADC pADC) // pointer to a ADC controller
3368
+ {
3369
+ return pADC->ADC_IMR;
3370
+ }
3371
+
3372
+ //*----------------------------------------------------------------------------
3373
+ //* \fn AT91F_ADC_IsInterruptMasked
3374
+ //* \brief Test if ADC Interrupt is Masked
3375
+ //*----------------------------------------------------------------------------
3376
+ __inline unsigned int AT91F_ADC_IsInterruptMasked(
3377
+ AT91PS_ADC pADC, // \arg pointer to a ADC controller
3378
+ unsigned int flag) // \arg flag to be tested
3379
+ {
3380
+ return (AT91F_ADC_GetInterruptMaskStatus(pADC) & flag);
3381
+ }
3382
+
3383
+ //*----------------------------------------------------------------------------
3384
+ //* \fn AT91F_ADC_IsStatusSet
3385
+ //* \brief Test if ADC Status is Set
3386
+ //*----------------------------------------------------------------------------
3387
+ __inline unsigned int AT91F_ADC_IsStatusSet(
3388
+ AT91PS_ADC pADC, // \arg pointer to a ADC controller
3389
+ unsigned int flag) // \arg flag to be tested
3390
+ {
3391
+ return (AT91F_ADC_GetStatus(pADC) & flag);
3392
+ }
3393
+
3394
+ //*----------------------------------------------------------------------------
3395
+ //* \fn AT91F_ADC_CfgModeReg
3396
+ //* \brief Configure the Mode Register of the ADC controller
3397
+ //*----------------------------------------------------------------------------
3398
+ __inline void AT91F_ADC_CfgModeReg (
3399
+ AT91PS_ADC pADC, // pointer to a ADC controller
3400
+ unsigned int mode) // mode register
3401
+ {
3402
+ //* Write to the MR register
3403
+ pADC->ADC_MR = mode;
3404
+ }
3405
+
3406
+ //*----------------------------------------------------------------------------
3407
+ //* \fn AT91F_ADC_GetModeReg
3408
+ //* \brief Return the Mode Register of the ADC controller value
3409
+ //*----------------------------------------------------------------------------
3410
+ __inline unsigned int AT91F_ADC_GetModeReg (
3411
+ AT91PS_ADC pADC // pointer to a ADC controller
3412
+ )
3413
+ {
3414
+ return pADC->ADC_MR;
3415
+ }
3416
+
3417
+ //*----------------------------------------------------------------------------
3418
+ //* \fn AT91F_ADC_CfgTimings
3419
+ //* \brief Configure the different necessary timings of the ADC controller
3420
+ //*----------------------------------------------------------------------------
3421
+ __inline void AT91F_ADC_CfgTimings (
3422
+ AT91PS_ADC pADC, // pointer to a ADC controller
3423
+ unsigned int mck_clock, // in MHz
3424
+ unsigned int adc_clock, // in MHz
3425
+ unsigned int startup_time, // in us
3426
+ unsigned int sample_and_hold_time) // in ns
3427
+ {
3428
+ unsigned int prescal,startup,shtim;
3429
+
3430
+ prescal = mck_clock/(2*adc_clock) - 1;
3431
+ startup = adc_clock*startup_time/8 - 1;
3432
+ shtim = adc_clock*sample_and_hold_time/1000 - 1;
3433
+
3434
+ //* Write to the MR register
3435
+ pADC->ADC_MR = ( (prescal<<8) & AT91C_ADC_PRESCAL) | ( (startup<<16) & AT91C_ADC_STARTUP) | ( (shtim<<24) & AT91C_ADC_SHTIM);
3436
+ }
3437
+
3438
+ //*----------------------------------------------------------------------------
3439
+ //* \fn AT91F_ADC_EnableChannel
3440
+ //* \brief Return ADC Timer Register Value
3441
+ //*----------------------------------------------------------------------------
3442
+ __inline void AT91F_ADC_EnableChannel (
3443
+ AT91PS_ADC pADC, // pointer to a ADC controller
3444
+ unsigned int channel) // mode register
3445
+ {
3446
+ //* Write to the CHER register
3447
+ pADC->ADC_CHER = channel;
3448
+ }
3449
+
3450
+ //*----------------------------------------------------------------------------
3451
+ //* \fn AT91F_ADC_DisableChannel
3452
+ //* \brief Return ADC Timer Register Value
3453
+ //*----------------------------------------------------------------------------
3454
+ __inline void AT91F_ADC_DisableChannel (
3455
+ AT91PS_ADC pADC, // pointer to a ADC controller
3456
+ unsigned int channel) // mode register
3457
+ {
3458
+ //* Write to the CHDR register
3459
+ pADC->ADC_CHDR = channel;
3460
+ }
3461
+
3462
+ //*----------------------------------------------------------------------------
3463
+ //* \fn AT91F_ADC_GetChannelStatus
3464
+ //* \brief Return ADC Timer Register Value
3465
+ //*----------------------------------------------------------------------------
3466
+ __inline unsigned int AT91F_ADC_GetChannelStatus (
3467
+ AT91PS_ADC pADC // pointer to a ADC controller
3468
+ )
3469
+ {
3470
+ return pADC->ADC_CHSR;
3471
+ }
3472
+
3473
+ //*----------------------------------------------------------------------------
3474
+ //* \fn AT91F_ADC_StartConversion
3475
+ //* \brief Software request for a analog to digital conversion
3476
+ //*----------------------------------------------------------------------------
3477
+ __inline void AT91F_ADC_StartConversion (
3478
+ AT91PS_ADC pADC // pointer to a ADC controller
3479
+ )
3480
+ {
3481
+ pADC->ADC_CR = AT91C_ADC_START;
3482
+ }
3483
+
3484
+ //*----------------------------------------------------------------------------
3485
+ //* \fn AT91F_ADC_SoftReset
3486
+ //* \brief Software reset
3487
+ //*----------------------------------------------------------------------------
3488
+ __inline void AT91F_ADC_SoftReset (
3489
+ AT91PS_ADC pADC // pointer to a ADC controller
3490
+ )
3491
+ {
3492
+ pADC->ADC_CR = AT91C_ADC_SWRST;
3493
+ }
3494
+
3495
+ //*----------------------------------------------------------------------------
3496
+ //* \fn AT91F_ADC_GetLastConvertedData
3497
+ //* \brief Return the Last Converted Data
3498
+ //*----------------------------------------------------------------------------
3499
+ __inline unsigned int AT91F_ADC_GetLastConvertedData (
3500
+ AT91PS_ADC pADC // pointer to a ADC controller
3501
+ )
3502
+ {
3503
+ return pADC->ADC_LCDR;
3504
+ }
3505
+
3506
+ //*----------------------------------------------------------------------------
3507
+ //* \fn AT91F_ADC_GetConvertedDataCH0
3508
+ //* \brief Return the Channel 0 Converted Data
3509
+ //*----------------------------------------------------------------------------
3510
+ __inline unsigned int AT91F_ADC_GetConvertedDataCH0 (
3511
+ AT91PS_ADC pADC // pointer to a ADC controller
3512
+ )
3513
+ {
3514
+ return pADC->ADC_CDR0;
3515
+ }
3516
+
3517
+ //*----------------------------------------------------------------------------
3518
+ //* \fn AT91F_ADC_GetConvertedDataCH1
3519
+ //* \brief Return the Channel 1 Converted Data
3520
+ //*----------------------------------------------------------------------------
3521
+ __inline unsigned int AT91F_ADC_GetConvertedDataCH1 (
3522
+ AT91PS_ADC pADC // pointer to a ADC controller
3523
+ )
3524
+ {
3525
+ return pADC->ADC_CDR1;
3526
+ }
3527
+
3528
+ //*----------------------------------------------------------------------------
3529
+ //* \fn AT91F_ADC_GetConvertedDataCH2
3530
+ //* \brief Return the Channel 2 Converted Data
3531
+ //*----------------------------------------------------------------------------
3532
+ __inline unsigned int AT91F_ADC_GetConvertedDataCH2 (
3533
+ AT91PS_ADC pADC // pointer to a ADC controller
3534
+ )
3535
+ {
3536
+ return pADC->ADC_CDR2;
3537
+ }
3538
+
3539
+ //*----------------------------------------------------------------------------
3540
+ //* \fn AT91F_ADC_GetConvertedDataCH3
3541
+ //* \brief Return the Channel 3 Converted Data
3542
+ //*----------------------------------------------------------------------------
3543
+ __inline unsigned int AT91F_ADC_GetConvertedDataCH3 (
3544
+ AT91PS_ADC pADC // pointer to a ADC controller
3545
+ )
3546
+ {
3547
+ return pADC->ADC_CDR3;
3548
+ }
3549
+
3550
+ //*----------------------------------------------------------------------------
3551
+ //* \fn AT91F_ADC_GetConvertedDataCH4
3552
+ //* \brief Return the Channel 4 Converted Data
3553
+ //*----------------------------------------------------------------------------
3554
+ __inline unsigned int AT91F_ADC_GetConvertedDataCH4 (
3555
+ AT91PS_ADC pADC // pointer to a ADC controller
3556
+ )
3557
+ {
3558
+ return pADC->ADC_CDR4;
3559
+ }
3560
+
3561
+ //*----------------------------------------------------------------------------
3562
+ //* \fn AT91F_ADC_GetConvertedDataCH5
3563
+ //* \brief Return the Channel 5 Converted Data
3564
+ //*----------------------------------------------------------------------------
3565
+ __inline unsigned int AT91F_ADC_GetConvertedDataCH5 (
3566
+ AT91PS_ADC pADC // pointer to a ADC controller
3567
+ )
3568
+ {
3569
+ return pADC->ADC_CDR5;
3570
+ }
3571
+
3572
+ //*----------------------------------------------------------------------------
3573
+ //* \fn AT91F_ADC_GetConvertedDataCH6
3574
+ //* \brief Return the Channel 6 Converted Data
3575
+ //*----------------------------------------------------------------------------
3576
+ __inline unsigned int AT91F_ADC_GetConvertedDataCH6 (
3577
+ AT91PS_ADC pADC // pointer to a ADC controller
3578
+ )
3579
+ {
3580
+ return pADC->ADC_CDR6;
3581
+ }
3582
+
3583
+ //*----------------------------------------------------------------------------
3584
+ //* \fn AT91F_ADC_GetConvertedDataCH7
3585
+ //* \brief Return the Channel 7 Converted Data
3586
+ //*----------------------------------------------------------------------------
3587
+ __inline unsigned int AT91F_ADC_GetConvertedDataCH7 (
3588
+ AT91PS_ADC pADC // pointer to a ADC controller
3589
+ )
3590
+ {
3591
+ return pADC->ADC_CDR7;
3592
+ }
3593
+
3594
+ //*----------------------------------------------------------------------------
3595
+ //* \fn AT91F_DBGU_CfgPMC
3596
+ //* \brief Enable Peripheral clock in PMC for DBGU
3597
+ //*----------------------------------------------------------------------------
3598
+ __inline void AT91F_DBGU_CfgPMC (void)
3599
+ {
3600
+ AT91F_PMC_EnablePeriphClock(
3601
+ AT91C_BASE_PMC, // PIO controller base address
3602
+ ((unsigned int) 1 << AT91C_ID_SYS));
3603
+ }
3604
+
3605
+ //*----------------------------------------------------------------------------
3606
+ //* \fn AT91F_DBGU_CfgPIO
3607
+ //* \brief Configure PIO controllers to drive DBGU signals
3608
+ //*----------------------------------------------------------------------------
3609
+ __inline void AT91F_DBGU_CfgPIO (void)
3610
+ {
3611
+ // Configure PIO controllers to periph mode
3612
+ AT91F_PIO_CfgPeriph(
3613
+ AT91C_BASE_PIOA, // PIO controller base address
3614
+ ((unsigned int) AT91C_PA27_DRXD ) |
3615
+ ((unsigned int) AT91C_PA28_DTXD ), // Peripheral A
3616
+ 0); // Peripheral B
3617
+ }
3618
+
3619
+ //*----------------------------------------------------------------------------
3620
+ //* \fn AT91F_PMC_CfgPMC
3621
+ //* \brief Enable Peripheral clock in PMC for PMC
3622
+ //*----------------------------------------------------------------------------
3623
+ __inline void AT91F_PMC_CfgPMC (void)
3624
+ {
3625
+ AT91F_PMC_EnablePeriphClock(
3626
+ AT91C_BASE_PMC, // PIO controller base address
3627
+ ((unsigned int) 1 << AT91C_ID_SYS));
3628
+ }
3629
+
3630
+ //*----------------------------------------------------------------------------
3631
+ //* \fn AT91F_PMC_CfgPIO
3632
+ //* \brief Configure PIO controllers to drive PMC signals
3633
+ //*----------------------------------------------------------------------------
3634
+ __inline void AT91F_PMC_CfgPIO (void)
3635
+ {
3636
+ // Configure PIO controllers to periph mode
3637
+ AT91F_PIO_CfgPeriph(
3638
+ AT91C_BASE_PIOB, // PIO controller base address
3639
+ ((unsigned int) AT91C_PB30_PCK2 ) |
3640
+ ((unsigned int) AT91C_PB29_PCK1 ), // Peripheral A
3641
+ ((unsigned int) AT91C_PB20_PCK0 ) |
3642
+ ((unsigned int) AT91C_PB0_PCK0 ) |
3643
+ ((unsigned int) AT91C_PB22_PCK2 ) |
3644
+ ((unsigned int) AT91C_PB21_PCK1 )); // Peripheral B
3645
+ // Configure PIO controllers to periph mode
3646
+ AT91F_PIO_CfgPeriph(
3647
+ AT91C_BASE_PIOA, // PIO controller base address
3648
+ 0, // Peripheral A
3649
+ ((unsigned int) AT91C_PA30_PCK2 ) |
3650
+ ((unsigned int) AT91C_PA13_PCK1 ) |
3651
+ ((unsigned int) AT91C_PA27_PCK3 )); // Peripheral B
3652
+ }
3653
+
3654
+ //*----------------------------------------------------------------------------
3655
+ //* \fn AT91F_VREG_CfgPMC
3656
+ //* \brief Enable Peripheral clock in PMC for VREG
3657
+ //*----------------------------------------------------------------------------
3658
+ __inline void AT91F_VREG_CfgPMC (void)
3659
+ {
3660
+ AT91F_PMC_EnablePeriphClock(
3661
+ AT91C_BASE_PMC, // PIO controller base address
3662
+ ((unsigned int) 1 << AT91C_ID_SYS));
3663
+ }
3664
+
3665
+ //*----------------------------------------------------------------------------
3666
+ //* \fn AT91F_RSTC_CfgPMC
3667
+ //* \brief Enable Peripheral clock in PMC for RSTC
3668
+ //*----------------------------------------------------------------------------
3669
+ __inline void AT91F_RSTC_CfgPMC (void)
3670
+ {
3671
+ AT91F_PMC_EnablePeriphClock(
3672
+ AT91C_BASE_PMC, // PIO controller base address
3673
+ ((unsigned int) 1 << AT91C_ID_SYS));
3674
+ }
3675
+
3676
+ //*----------------------------------------------------------------------------
3677
+ //* \fn AT91F_SSC_CfgPMC
3678
+ //* \brief Enable Peripheral clock in PMC for SSC
3679
+ //*----------------------------------------------------------------------------
3680
+ __inline void AT91F_SSC_CfgPMC (void)
3681
+ {
3682
+ AT91F_PMC_EnablePeriphClock(
3683
+ AT91C_BASE_PMC, // PIO controller base address
3684
+ ((unsigned int) 1 << AT91C_ID_SSC));
3685
+ }
3686
+
3687
+ //*----------------------------------------------------------------------------
3688
+ //* \fn AT91F_SSC_CfgPIO
3689
+ //* \brief Configure PIO controllers to drive SSC signals
3690
+ //*----------------------------------------------------------------------------
3691
+ __inline void AT91F_SSC_CfgPIO (void)
3692
+ {
3693
+ // Configure PIO controllers to periph mode
3694
+ AT91F_PIO_CfgPeriph(
3695
+ AT91C_BASE_PIOA, // PIO controller base address
3696
+ ((unsigned int) AT91C_PA25_RK ) |
3697
+ ((unsigned int) AT91C_PA22_TK ) |
3698
+ ((unsigned int) AT91C_PA21_TF ) |
3699
+ ((unsigned int) AT91C_PA24_RD ) |
3700
+ ((unsigned int) AT91C_PA26_RF ) |
3701
+ ((unsigned int) AT91C_PA23_TD ), // Peripheral A
3702
+ 0); // Peripheral B
3703
+ }
3704
+
3705
+ //*----------------------------------------------------------------------------
3706
+ //* \fn AT91F_WDTC_CfgPMC
3707
+ //* \brief Enable Peripheral clock in PMC for WDTC
3708
+ //*----------------------------------------------------------------------------
3709
+ __inline void AT91F_WDTC_CfgPMC (void)
3710
+ {
3711
+ AT91F_PMC_EnablePeriphClock(
3712
+ AT91C_BASE_PMC, // PIO controller base address
3713
+ ((unsigned int) 1 << AT91C_ID_SYS));
3714
+ }
3715
+
3716
+ //*----------------------------------------------------------------------------
3717
+ //* \fn AT91F_US1_CfgPMC
3718
+ //* \brief Enable Peripheral clock in PMC for US1
3719
+ //*----------------------------------------------------------------------------
3720
+ __inline void AT91F_US1_CfgPMC (void)
3721
+ {
3722
+ AT91F_PMC_EnablePeriphClock(
3723
+ AT91C_BASE_PMC, // PIO controller base address
3724
+ ((unsigned int) 1 << AT91C_ID_US1));
3725
+ }
3726
+
3727
+ //*----------------------------------------------------------------------------
3728
+ //* \fn AT91F_US1_CfgPIO
3729
+ //* \brief Configure PIO controllers to drive US1 signals
3730
+ //*----------------------------------------------------------------------------
3731
+ __inline void AT91F_US1_CfgPIO (void)
3732
+ {
3733
+ // Configure PIO controllers to periph mode
3734
+ AT91F_PIO_CfgPeriph(
3735
+ AT91C_BASE_PIOB, // PIO controller base address
3736
+ 0, // Peripheral A
3737
+ ((unsigned int) AT91C_PB26_RI1 ) |
3738
+ ((unsigned int) AT91C_PB24_DSR1 ) |
3739
+ ((unsigned int) AT91C_PB23_DCD1 ) |
3740
+ ((unsigned int) AT91C_PB25_DTR1 )); // Peripheral B
3741
+ // Configure PIO controllers to periph mode
3742
+ AT91F_PIO_CfgPeriph(
3743
+ AT91C_BASE_PIOA, // PIO controller base address
3744
+ ((unsigned int) AT91C_PA7_SCK1 ) |
3745
+ ((unsigned int) AT91C_PA8_RTS1 ) |
3746
+ ((unsigned int) AT91C_PA6_TXD1 ) |
3747
+ ((unsigned int) AT91C_PA5_RXD1 ) |
3748
+ ((unsigned int) AT91C_PA9_CTS1 ), // Peripheral A
3749
+ 0); // Peripheral B
3750
+ }
3751
+
3752
+ //*----------------------------------------------------------------------------
3753
+ //* \fn AT91F_US0_CfgPMC
3754
+ //* \brief Enable Peripheral clock in PMC for US0
3755
+ //*----------------------------------------------------------------------------
3756
+ __inline void AT91F_US0_CfgPMC (void)
3757
+ {
3758
+ AT91F_PMC_EnablePeriphClock(
3759
+ AT91C_BASE_PMC, // PIO controller base address
3760
+ ((unsigned int) 1 << AT91C_ID_US0));
3761
+ }
3762
+
3763
+ //*----------------------------------------------------------------------------
3764
+ //* \fn AT91F_US0_CfgPIO
3765
+ //* \brief Configure PIO controllers to drive US0 signals
3766
+ //*----------------------------------------------------------------------------
3767
+ __inline void AT91F_US0_CfgPIO (void)
3768
+ {
3769
+ // Configure PIO controllers to periph mode
3770
+ AT91F_PIO_CfgPeriph(
3771
+ AT91C_BASE_PIOA, // PIO controller base address
3772
+ ((unsigned int) AT91C_PA0_RXD0 ) |
3773
+ ((unsigned int) AT91C_PA4_CTS0 ) |
3774
+ ((unsigned int) AT91C_PA3_RTS0 ) |
3775
+ ((unsigned int) AT91C_PA2_SCK0 ) |
3776
+ ((unsigned int) AT91C_PA1_TXD0 ), // Peripheral A
3777
+ 0); // Peripheral B
3778
+ }
3779
+
3780
+ //*----------------------------------------------------------------------------
3781
+ //* \fn AT91F_SPI1_CfgPMC
3782
+ //* \brief Enable Peripheral clock in PMC for SPI1
3783
+ //*----------------------------------------------------------------------------
3784
+ __inline void AT91F_SPI1_CfgPMC (void)
3785
+ {
3786
+ AT91F_PMC_EnablePeriphClock(
3787
+ AT91C_BASE_PMC, // PIO controller base address
3788
+ ((unsigned int) 1 << AT91C_ID_SPI1));
3789
+ }
3790
+
3791
+ //*----------------------------------------------------------------------------
3792
+ //* \fn AT91F_SPI1_CfgPIO
3793
+ //* \brief Configure PIO controllers to drive SPI1 signals
3794
+ //*----------------------------------------------------------------------------
3795
+ __inline void AT91F_SPI1_CfgPIO (void)
3796
+ {
3797
+ // Configure PIO controllers to periph mode
3798
+ AT91F_PIO_CfgPeriph(
3799
+ AT91C_BASE_PIOB, // PIO controller base address
3800
+ 0, // Peripheral A
3801
+ ((unsigned int) AT91C_PB11_SPI1_NPCS2) |
3802
+ ((unsigned int) AT91C_PB10_SPI1_NPCS1) |
3803
+ ((unsigned int) AT91C_PB16_SPI1_NPCS3)); // Peripheral B
3804
+ // Configure PIO controllers to periph mode
3805
+ AT91F_PIO_CfgPeriph(
3806
+ AT91C_BASE_PIOA, // PIO controller base address
3807
+ 0, // Peripheral A
3808
+ ((unsigned int) AT91C_PA22_SPI1_SPCK) |
3809
+ ((unsigned int) AT91C_PA3_SPI1_NPCS2) |
3810
+ ((unsigned int) AT91C_PA26_SPI1_NPCS2) |
3811
+ ((unsigned int) AT91C_PA25_SPI1_NPCS1) |
3812
+ ((unsigned int) AT91C_PA2_SPI1_NPCS1) |
3813
+ ((unsigned int) AT91C_PA24_SPI1_MISO) |
3814
+ ((unsigned int) AT91C_PA4_SPI1_NPCS3) |
3815
+ ((unsigned int) AT91C_PA29_SPI1_NPCS3) |
3816
+ ((unsigned int) AT91C_PA21_SPI1_NPCS0) |
3817
+ ((unsigned int) AT91C_PA23_SPI1_MOSI)); // Peripheral B
3818
+ }
3819
+
3820
+ //*----------------------------------------------------------------------------
3821
+ //* \fn AT91F_SPI0_CfgPMC
3822
+ //* \brief Enable Peripheral clock in PMC for SPI0
3823
+ //*----------------------------------------------------------------------------
3824
+ __inline void AT91F_SPI0_CfgPMC (void)
3825
+ {
3826
+ AT91F_PMC_EnablePeriphClock(
3827
+ AT91C_BASE_PMC, // PIO controller base address
3828
+ ((unsigned int) 1 << AT91C_ID_SPI0));
3829
+ }
3830
+
3831
+ //*----------------------------------------------------------------------------
3832
+ //* \fn AT91F_SPI0_CfgPIO
3833
+ //* \brief Configure PIO controllers to drive SPI0 signals
3834
+ //*----------------------------------------------------------------------------
3835
+ __inline void AT91F_SPI0_CfgPIO (void)
3836
+ {
3837
+ // Configure PIO controllers to periph mode
3838
+ AT91F_PIO_CfgPeriph(
3839
+ AT91C_BASE_PIOB, // PIO controller base address
3840
+ 0, // Peripheral A
3841
+ ((unsigned int) AT91C_PB13_SPI0_NPCS1) |
3842
+ ((unsigned int) AT91C_PB14_SPI0_NPCS2) |
3843
+ ((unsigned int) AT91C_PB17_SPI0_NPCS3)); // Peripheral B
3844
+ // Configure PIO controllers to periph mode
3845
+ AT91F_PIO_CfgPeriph(
3846
+ AT91C_BASE_PIOA, // PIO controller base address
3847
+ ((unsigned int) AT91C_PA16_SPI0_MISO) |
3848
+ ((unsigned int) AT91C_PA13_SPI0_NPCS1) |
3849
+ ((unsigned int) AT91C_PA14_SPI0_NPCS2) |
3850
+ ((unsigned int) AT91C_PA12_SPI0_NPCS0) |
3851
+ ((unsigned int) AT91C_PA17_SPI0_MOSI) |
3852
+ ((unsigned int) AT91C_PA15_SPI0_NPCS3) |
3853
+ ((unsigned int) AT91C_PA18_SPI0_SPCK), // Peripheral A
3854
+ ((unsigned int) AT91C_PA7_SPI0_NPCS1) |
3855
+ ((unsigned int) AT91C_PA8_SPI0_NPCS2) |
3856
+ ((unsigned int) AT91C_PA9_SPI0_NPCS3)); // Peripheral B
3857
+ }
3858
+
3859
+ //*----------------------------------------------------------------------------
3860
+ //* \fn AT91F_PITC_CfgPMC
3861
+ //* \brief Enable Peripheral clock in PMC for PITC
3862
+ //*----------------------------------------------------------------------------
3863
+ __inline void AT91F_PITC_CfgPMC (void)
3864
+ {
3865
+ AT91F_PMC_EnablePeriphClock(
3866
+ AT91C_BASE_PMC, // PIO controller base address
3867
+ ((unsigned int) 1 << AT91C_ID_SYS));
3868
+ }
3869
+
3870
+ //*----------------------------------------------------------------------------
3871
+ //* \fn AT91F_AIC_CfgPMC
3872
+ //* \brief Enable Peripheral clock in PMC for AIC
3873
+ //*----------------------------------------------------------------------------
3874
+ __inline void AT91F_AIC_CfgPMC (void)
3875
+ {
3876
+ AT91F_PMC_EnablePeriphClock(
3877
+ AT91C_BASE_PMC, // PIO controller base address
3878
+ ((unsigned int) 1 << AT91C_ID_FIQ) |
3879
+ ((unsigned int) 1 << AT91C_ID_IRQ0) |
3880
+ ((unsigned int) 1 << AT91C_ID_IRQ1));
3881
+ }
3882
+
3883
+ //*----------------------------------------------------------------------------
3884
+ //* \fn AT91F_AIC_CfgPIO
3885
+ //* \brief Configure PIO controllers to drive AIC signals
3886
+ //*----------------------------------------------------------------------------
3887
+ __inline void AT91F_AIC_CfgPIO (void)
3888
+ {
3889
+ // Configure PIO controllers to periph mode
3890
+ AT91F_PIO_CfgPeriph(
3891
+ AT91C_BASE_PIOA, // PIO controller base address
3892
+ ((unsigned int) AT91C_PA30_IRQ0 ) |
3893
+ ((unsigned int) AT91C_PA29_FIQ ), // Peripheral A
3894
+ ((unsigned int) AT91C_PA14_IRQ1 )); // Peripheral B
3895
+ }
3896
+
3897
+ //*----------------------------------------------------------------------------
3898
+ //* \fn AT91F_TWI_CfgPMC
3899
+ //* \brief Enable Peripheral clock in PMC for TWI
3900
+ //*----------------------------------------------------------------------------
3901
+ __inline void AT91F_TWI_CfgPMC (void)
3902
+ {
3903
+ AT91F_PMC_EnablePeriphClock(
3904
+ AT91C_BASE_PMC, // PIO controller base address
3905
+ ((unsigned int) 1 << AT91C_ID_TWI));
3906
+ }
3907
+
3908
+ //*----------------------------------------------------------------------------
3909
+ //* \fn AT91F_TWI_CfgPIO
3910
+ //* \brief Configure PIO controllers to drive TWI signals
3911
+ //*----------------------------------------------------------------------------
3912
+ __inline void AT91F_TWI_CfgPIO (void)
3913
+ {
3914
+ // Configure PIO controllers to periph mode
3915
+ AT91F_PIO_CfgPeriph(
3916
+ AT91C_BASE_PIOA, // PIO controller base address
3917
+ ((unsigned int) AT91C_PA11_TWCK ) |
3918
+ ((unsigned int) AT91C_PA10_TWD ), // Peripheral A
3919
+ 0); // Peripheral B
3920
+ }
3921
+
3922
+ //*----------------------------------------------------------------------------
3923
+ //* \fn AT91F_ADC_CfgPMC
3924
+ //* \brief Enable Peripheral clock in PMC for ADC
3925
+ //*----------------------------------------------------------------------------
3926
+ __inline void AT91F_ADC_CfgPMC (void)
3927
+ {
3928
+ AT91F_PMC_EnablePeriphClock(
3929
+ AT91C_BASE_PMC, // PIO controller base address
3930
+ ((unsigned int) 1 << AT91C_ID_ADC));
3931
+ }
3932
+
3933
+ //*----------------------------------------------------------------------------
3934
+ //* \fn AT91F_ADC_CfgPIO
3935
+ //* \brief Configure PIO controllers to drive ADC signals
3936
+ //*----------------------------------------------------------------------------
3937
+ __inline void AT91F_ADC_CfgPIO (void)
3938
+ {
3939
+ // Configure PIO controllers to periph mode
3940
+ AT91F_PIO_CfgPeriph(
3941
+ AT91C_BASE_PIOB, // PIO controller base address
3942
+ 0, // Peripheral A
3943
+ ((unsigned int) AT91C_PB18_ADTRG )); // Peripheral B
3944
+ }
3945
+
3946
+ //*----------------------------------------------------------------------------
3947
+ //* \fn AT91F_PWMC_CH3_CfgPIO
3948
+ //* \brief Configure PIO controllers to drive PWMC_CH3 signals
3949
+ //*----------------------------------------------------------------------------
3950
+ __inline void AT91F_PWMC_CH3_CfgPIO (void)
3951
+ {
3952
+ // Configure PIO controllers to periph mode
3953
+ AT91F_PIO_CfgPeriph(
3954
+ AT91C_BASE_PIOB, // PIO controller base address
3955
+ ((unsigned int) AT91C_PB22_PWM3 ), // Peripheral A
3956
+ ((unsigned int) AT91C_PB30_PWM3 )); // Peripheral B
3957
+ }
3958
+
3959
+ //*----------------------------------------------------------------------------
3960
+ //* \fn AT91F_PWMC_CH2_CfgPIO
3961
+ //* \brief Configure PIO controllers to drive PWMC_CH2 signals
3962
+ //*----------------------------------------------------------------------------
3963
+ __inline void AT91F_PWMC_CH2_CfgPIO (void)
3964
+ {
3965
+ // Configure PIO controllers to periph mode
3966
+ AT91F_PIO_CfgPeriph(
3967
+ AT91C_BASE_PIOB, // PIO controller base address
3968
+ ((unsigned int) AT91C_PB21_PWM2 ), // Peripheral A
3969
+ ((unsigned int) AT91C_PB29_PWM2 )); // Peripheral B
3970
+ }
3971
+
3972
+ //*----------------------------------------------------------------------------
3973
+ //* \fn AT91F_PWMC_CH1_CfgPIO
3974
+ //* \brief Configure PIO controllers to drive PWMC_CH1 signals
3975
+ //*----------------------------------------------------------------------------
3976
+ __inline void AT91F_PWMC_CH1_CfgPIO (void)
3977
+ {
3978
+ // Configure PIO controllers to periph mode
3979
+ AT91F_PIO_CfgPeriph(
3980
+ AT91C_BASE_PIOB, // PIO controller base address
3981
+ ((unsigned int) AT91C_PB20_PWM1 ), // Peripheral A
3982
+ ((unsigned int) AT91C_PB28_PWM1 )); // Peripheral B
3983
+ }
3984
+
3985
+ //*----------------------------------------------------------------------------
3986
+ //* \fn AT91F_PWMC_CH0_CfgPIO
3987
+ //* \brief Configure PIO controllers to drive PWMC_CH0 signals
3988
+ //*----------------------------------------------------------------------------
3989
+ __inline void AT91F_PWMC_CH0_CfgPIO (void)
3990
+ {
3991
+ // Configure PIO controllers to periph mode
3992
+ AT91F_PIO_CfgPeriph(
3993
+ AT91C_BASE_PIOB, // PIO controller base address
3994
+ ((unsigned int) AT91C_PB19_PWM0 ), // Peripheral A
3995
+ ((unsigned int) AT91C_PB27_PWM0 )); // Peripheral B
3996
+ }
3997
+
3998
+ //*----------------------------------------------------------------------------
3999
+ //* \fn AT91F_RTTC_CfgPMC
4000
+ //* \brief Enable Peripheral clock in PMC for RTTC
4001
+ //*----------------------------------------------------------------------------
4002
+ __inline void AT91F_RTTC_CfgPMC (void)
4003
+ {
4004
+ AT91F_PMC_EnablePeriphClock(
4005
+ AT91C_BASE_PMC, // PIO controller base address
4006
+ ((unsigned int) 1 << AT91C_ID_SYS));
4007
+ }
4008
+
4009
+ //*----------------------------------------------------------------------------
4010
+ //* \fn AT91F_UDP_CfgPMC
4011
+ //* \brief Enable Peripheral clock in PMC for UDP
4012
+ //*----------------------------------------------------------------------------
4013
+ __inline void AT91F_UDP_CfgPMC (void)
4014
+ {
4015
+ AT91F_PMC_EnablePeriphClock(
4016
+ AT91C_BASE_PMC, // PIO controller base address
4017
+ ((unsigned int) 1 << AT91C_ID_UDP));
4018
+ }
4019
+
4020
+ //*----------------------------------------------------------------------------
4021
+ //* \fn AT91F_EMAC_CfgPMC
4022
+ //* \brief Enable Peripheral clock in PMC for EMAC
4023
+ //*----------------------------------------------------------------------------
4024
+ __inline void AT91F_EMAC_CfgPMC (void)
4025
+ {
4026
+ AT91F_PMC_EnablePeriphClock(
4027
+ AT91C_BASE_PMC, // PIO controller base address
4028
+ ((unsigned int) 1 << AT91C_ID_EMAC));
4029
+ }
4030
+
4031
+ //*----------------------------------------------------------------------------
4032
+ //* \fn AT91F_EMAC_CfgPIO
4033
+ //* \brief Configure PIO controllers to drive EMAC signals
4034
+ //*----------------------------------------------------------------------------
4035
+ __inline void AT91F_EMAC_CfgPIO (void)
4036
+ {
4037
+ // Configure PIO controllers to periph mode
4038
+ AT91F_PIO_CfgPeriph(
4039
+ AT91C_BASE_PIOB, // PIO controller base address
4040
+ ((unsigned int) AT91C_PB2_ETX0 ) |
4041
+ ((unsigned int) AT91C_PB12_ETXER ) |
4042
+ ((unsigned int) AT91C_PB16_ECOL ) |
4043
+ ((unsigned int) AT91C_PB15_ERXDV_ECRSDV) |
4044
+ ((unsigned int) AT91C_PB11_ETX3 ) |
4045
+ ((unsigned int) AT91C_PB6_ERX1 ) |
4046
+ ((unsigned int) AT91C_PB13_ERX2 ) |
4047
+ ((unsigned int) AT91C_PB3_ETX1 ) |
4048
+ ((unsigned int) AT91C_PB4_ECRS ) |
4049
+ ((unsigned int) AT91C_PB8_EMDC ) |
4050
+ ((unsigned int) AT91C_PB5_ERX0 ) |
4051
+ ((unsigned int) AT91C_PB18_EF100 ) |
4052
+ ((unsigned int) AT91C_PB14_ERX3 ) |
4053
+ ((unsigned int) AT91C_PB1_ETXEN ) |
4054
+ ((unsigned int) AT91C_PB10_ETX2 ) |
4055
+ ((unsigned int) AT91C_PB0_ETXCK_EREFCK) |
4056
+ ((unsigned int) AT91C_PB9_EMDIO ) |
4057
+ ((unsigned int) AT91C_PB7_ERXER ) |
4058
+ ((unsigned int) AT91C_PB17_ERXCK ), // Peripheral A
4059
+ 0); // Peripheral B
4060
+ }
4061
+
4062
+ //*----------------------------------------------------------------------------
4063
+ //* \fn AT91F_TC0_CfgPMC
4064
+ //* \brief Enable Peripheral clock in PMC for TC0
4065
+ //*----------------------------------------------------------------------------
4066
+ __inline void AT91F_TC0_CfgPMC (void)
4067
+ {
4068
+ AT91F_PMC_EnablePeriphClock(
4069
+ AT91C_BASE_PMC, // PIO controller base address
4070
+ ((unsigned int) 1 << AT91C_ID_TC0));
4071
+ }
4072
+
4073
+ //*----------------------------------------------------------------------------
4074
+ //* \fn AT91F_TC0_CfgPIO
4075
+ //* \brief Configure PIO controllers to drive TC0 signals
4076
+ //*----------------------------------------------------------------------------
4077
+ __inline void AT91F_TC0_CfgPIO (void)
4078
+ {
4079
+ // Configure PIO controllers to periph mode
4080
+ AT91F_PIO_CfgPeriph(
4081
+ AT91C_BASE_PIOB, // PIO controller base address
4082
+ ((unsigned int) AT91C_PB23_TIOA0 ) |
4083
+ ((unsigned int) AT91C_PB24_TIOB0 ), // Peripheral A
4084
+ ((unsigned int) AT91C_PB12_TCLK0 )); // Peripheral B
4085
+ }
4086
+
4087
+ //*----------------------------------------------------------------------------
4088
+ //* \fn AT91F_TC1_CfgPMC
4089
+ //* \brief Enable Peripheral clock in PMC for TC1
4090
+ //*----------------------------------------------------------------------------
4091
+ __inline void AT91F_TC1_CfgPMC (void)
4092
+ {
4093
+ AT91F_PMC_EnablePeriphClock(
4094
+ AT91C_BASE_PMC, // PIO controller base address
4095
+ ((unsigned int) 1 << AT91C_ID_TC1));
4096
+ }
4097
+
4098
+ //*----------------------------------------------------------------------------
4099
+ //* \fn AT91F_TC1_CfgPIO
4100
+ //* \brief Configure PIO controllers to drive TC1 signals
4101
+ //*----------------------------------------------------------------------------
4102
+ __inline void AT91F_TC1_CfgPIO (void)
4103
+ {
4104
+ // Configure PIO controllers to periph mode
4105
+ AT91F_PIO_CfgPeriph(
4106
+ AT91C_BASE_PIOB, // PIO controller base address
4107
+ ((unsigned int) AT91C_PB25_TIOA1 ) |
4108
+ ((unsigned int) AT91C_PB26_TIOB1 ), // Peripheral A
4109
+ ((unsigned int) AT91C_PB19_TCLK1 )); // Peripheral B
4110
+ }
4111
+
4112
+ //*----------------------------------------------------------------------------
4113
+ //* \fn AT91F_TC2_CfgPMC
4114
+ //* \brief Enable Peripheral clock in PMC for TC2
4115
+ //*----------------------------------------------------------------------------
4116
+ __inline void AT91F_TC2_CfgPMC (void)
4117
+ {
4118
+ AT91F_PMC_EnablePeriphClock(
4119
+ AT91C_BASE_PMC, // PIO controller base address
4120
+ ((unsigned int) 1 << AT91C_ID_TC2));
4121
+ }
4122
+
4123
+ //*----------------------------------------------------------------------------
4124
+ //* \fn AT91F_TC2_CfgPIO
4125
+ //* \brief Configure PIO controllers to drive TC2 signals
4126
+ //*----------------------------------------------------------------------------
4127
+ __inline void AT91F_TC2_CfgPIO (void)
4128
+ {
4129
+ // Configure PIO controllers to periph mode
4130
+ AT91F_PIO_CfgPeriph(
4131
+ AT91C_BASE_PIOB, // PIO controller base address
4132
+ ((unsigned int) AT91C_PB28_TIOB2 ) |
4133
+ ((unsigned int) AT91C_PB27_TIOA2 ), // Peripheral A
4134
+ 0); // Peripheral B
4135
+ // Configure PIO controllers to periph mode
4136
+ AT91F_PIO_CfgPeriph(
4137
+ AT91C_BASE_PIOA, // PIO controller base address
4138
+ 0, // Peripheral A
4139
+ ((unsigned int) AT91C_PA15_TCLK2 )); // Peripheral B
4140
+ }
4141
+
4142
+ //*----------------------------------------------------------------------------
4143
+ //* \fn AT91F_MC_CfgPMC
4144
+ //* \brief Enable Peripheral clock in PMC for MC
4145
+ //*----------------------------------------------------------------------------
4146
+ __inline void AT91F_MC_CfgPMC (void)
4147
+ {
4148
+ AT91F_PMC_EnablePeriphClock(
4149
+ AT91C_BASE_PMC, // PIO controller base address
4150
+ ((unsigned int) 1 << AT91C_ID_SYS));
4151
+ }
4152
+
4153
+ //*----------------------------------------------------------------------------
4154
+ //* \fn AT91F_PIOA_CfgPMC
4155
+ //* \brief Enable Peripheral clock in PMC for PIOA
4156
+ //*----------------------------------------------------------------------------
4157
+ __inline void AT91F_PIOA_CfgPMC (void)
4158
+ {
4159
+ AT91F_PMC_EnablePeriphClock(
4160
+ AT91C_BASE_PMC, // PIO controller base address
4161
+ ((unsigned int) 1 << AT91C_ID_PIOA));
4162
+ }
4163
+
4164
+ //*----------------------------------------------------------------------------
4165
+ //* \fn AT91F_PIOB_CfgPMC
4166
+ //* \brief Enable Peripheral clock in PMC for PIOB
4167
+ //*----------------------------------------------------------------------------
4168
+ __inline void AT91F_PIOB_CfgPMC (void)
4169
+ {
4170
+ AT91F_PMC_EnablePeriphClock(
4171
+ AT91C_BASE_PMC, // PIO controller base address
4172
+ ((unsigned int) 1 << AT91C_ID_PIOB));
4173
+ }
4174
+
4175
+ //*----------------------------------------------------------------------------
4176
+ //* \fn AT91F_CAN_CfgPMC
4177
+ //* \brief Enable Peripheral clock in PMC for CAN
4178
+ //*----------------------------------------------------------------------------
4179
+ __inline void AT91F_CAN_CfgPMC (void)
4180
+ {
4181
+ AT91F_PMC_EnablePeriphClock(
4182
+ AT91C_BASE_PMC, // PIO controller base address
4183
+ ((unsigned int) 1 << AT91C_ID_CAN));
4184
+ }
4185
+
4186
+ //*----------------------------------------------------------------------------
4187
+ //* \fn AT91F_CAN_CfgPIO
4188
+ //* \brief Configure PIO controllers to drive CAN signals
4189
+ //*----------------------------------------------------------------------------
4190
+ __inline void AT91F_CAN_CfgPIO (void)
4191
+ {
4192
+ // Configure PIO controllers to periph mode
4193
+ AT91F_PIO_CfgPeriph(
4194
+ AT91C_BASE_PIOA, // PIO controller base address
4195
+ ((unsigned int) AT91C_PA20_CANTX ) |
4196
+ ((unsigned int) AT91C_PA19_CANRX ), // Peripheral A
4197
+ 0); // Peripheral B
4198
+ }
4199
+
4200
+ //*----------------------------------------------------------------------------
4201
+ //* \fn AT91F_PWMC_CfgPMC
4202
+ //* \brief Enable Peripheral clock in PMC for PWMC
4203
+ //*----------------------------------------------------------------------------
4204
+ __inline void AT91F_PWMC_CfgPMC (void)
4205
+ {
4206
+ AT91F_PMC_EnablePeriphClock(
4207
+ AT91C_BASE_PMC, // PIO controller base address
4208
+ ((unsigned int) 1 << AT91C_ID_PWMC));
4209
+ }
4210
+
4211
+ #endif // lib_AT91SAM7X256_H