Skip to content
Browse files

Merge branch 'master' of git://github.com/xcore/sw_motor_control

  • Loading branch information...
2 parents c8cd4a2 + ad81c7d commit 880c56021c4c981e055f51a4208fcf0c86788255 Huw Geddes committed Jan 6, 2012
View
235 .cproject
@@ -2,8 +2,8 @@
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
- <cconfiguration id="com.xmos.cdt.toolchain.26035031">
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.xmos.cdt.toolchain.26035031" moduleId="org.eclipse.cdt.core.settings" name="Default">
+ <cconfiguration id="com.xmos.cdt.toolchain.6811765">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.xmos.cdt.toolchain.6811765" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings />
<extensions>
<extension id="com.xmos.cdt.core.XEBinaryParser" point="org.eclipse.cdt.core.BinaryParser" />
@@ -12,85 +12,272 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <configuration buildProperties="" description="" id="com.xmos.cdt.toolchain.26035031" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
- <folderInfo id="com.xmos.cdt.toolchain.26035031.1127281840" name="/" resourcePath="">
- <toolChain id = "com.xmos.cdt.toolchain.28130694" name="com.xmos.cdt.toolchain" superClass="com.xmos.cdt.toolchain">
- <targetPlatform archList="all" binaryParser="com.xmos.cdt.core.XEBinaryParser" id = "com.xmos.cdt.core.platform.61335743" isAbstract="false" osList="linux,win32,macosx" superClass="com.xmos.cdt.core.platform" />
- <builder arguments="" id = "com.xmos.cdt.builder.base.17217514" keepEnvironmentInBuildfile="false" managedBuildOn="false" superClass="com.xmos.cdt.builder.base" />
- <tool id = "com.xmos.cdt.xc.compiler.88974489" name="com.xmos.cdt.xc.compiler" superClass="com.xmos.cdt.xc.compiler">
- <option id = "com.xmos.c.compiler.option.include.paths.5608611" name="com.xmos.c.compiler.option.include.paths" superClass="com.xmos.c.compiler.option.include.paths" valueType="includePath">
+ <configuration buildProperties="" description="" id="com.xmos.cdt.toolchain.6811765" name="Debug" parent="org.eclipse.cdt.build.core.emptycfg">
+ <folderInfo id="com.xmos.cdt.toolchain.6811765.1127281840" name="/" resourcePath="">
+ <toolChain id = "com.xmos.cdt.toolchain.81184820" name="com.xmos.cdt.toolchain" superClass="com.xmos.cdt.toolchain">
+ <targetPlatform archList="all" binaryParser="com.xmos.cdt.core.XEBinaryParser" id = "com.xmos.cdt.core.platform.1529593" isAbstract="false" osList="linux,win32,macosx" superClass="com.xmos.cdt.core.platform" />
+ <builder arguments="CONFIG=Debug" id = "com.xmos.cdt.builder.base.84256106" keepEnvironmentInBuildfile="false" managedBuildOn="false" superClass="com.xmos.cdt.builder.base" />
+ <tool id = "com.xmos.cdt.xc.compiler.79902725" name="com.xmos.cdt.xc.compiler" superClass="com.xmos.cdt.xc.compiler">
+ <option id = "com.xmos.c.compiler.option.include.paths.24680255" name="com.xmos.c.compiler.option.include.paths" superClass="com.xmos.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/gcc&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/c++/4.2.1&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
</option>
- <inputType id = "com.xmos.cdt.xc.compiler.input.32737440" name="XC Sources" superClass="com.xmos.cdt.xc.compiler.input" />
- <option id = "gnu.c.compiler.option.include.paths.44762625" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
+ <inputType id = "com.xmos.cdt.xc.compiler.input.22656867" name="XC Sources" superClass="com.xmos.cdt.xc.compiler.input" />
+ <option id = "gnu.c.compiler.option.include.paths.41317830" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
<listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/c++/4.2.1&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/gcc&quot;' />
</option>
</tool>
- <tool id = "com.xmos.cdt.xc.compiler.base.18603086" name="com.xmos.cdt.xc.compiler.base" superClass="com.xmos.cdt.xc.compiler.base">
- <option id = "gnu.c.compiler.option.include.paths.82493915" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
+ <tool id = "com.xmos.cdt.xc.compiler.base.68901544" name="com.xmos.cdt.xc.compiler.base" superClass="com.xmos.cdt.xc.compiler.base">
+ <option id = "gnu.c.compiler.option.include.paths.10694252" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
</option>
- <option id = "com.xmos.c.compiler.option.include.paths.78184230" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
+ <option id = "com.xmos.c.compiler.option.include.paths.22668072" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
</option>
</tool>
- <tool id = "com.xmos.cdt.c.compiler.base.20666001" name="com.xmos.cdt.c.compiler.base" superClass="com.xmos.cdt.c.compiler.base">
- <option id = "gnu.c.compiler.option.include.paths.67209423" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
+ <tool id = "com.xmos.cdt.c.compiler.base.59591867" name="com.xmos.cdt.c.compiler.base" superClass="com.xmos.cdt.c.compiler.base">
+ <option id = "gnu.c.compiler.option.include.paths.40942625" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
</option>
- <option id = "com.xmos.c.compiler.option.include.paths.11893569" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
+ <option id = "com.xmos.c.compiler.option.include.paths.36221202" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
</option>
</tool>
- <tool id = "com.xmos.cdt.cpp.compiler.base.25452767" name="com.xmos.cdt.cpp.compiler.base" superClass="com.xmos.cdt.cpp.compiler.base">
- <option id = "gnu.c.compiler.option.include.paths.96905324" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
+ <tool id = "com.xmos.cdt.cpp.compiler.base.17094142" name="com.xmos.cdt.cpp.compiler.base" superClass="com.xmos.cdt.cpp.compiler.base">
+ <option id = "gnu.c.compiler.option.include.paths.27530805" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
</option>
- <option id = "com.xmos.c.compiler.option.include.paths.12732412" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
+ <option id = "com.xmos.c.compiler.option.include.paths.91825065" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
</option>
</tool>
- <tool id = "com.xmos.cdt.core.assembler.base.19125219" name="com.xmos.cdt.core.assembler.base" superClass="com.xmos.cdt.core.assembler.base">
- <option id = "gnu.c.compiler.option.include.paths.43538787" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
+ <tool id = "com.xmos.cdt.core.assembler.base.50075609" name="com.xmos.cdt.core.assembler.base" superClass="com.xmos.cdt.core.assembler.base">
+ <option id = "gnu.c.compiler.option.include.paths.43538678" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
</option>
- <option id = "com.xmos.c.compiler.option.include.paths.7492226" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
+ <option id = "com.xmos.c.compiler.option.include.paths.22230914" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
+
+ </option>
+ </tool>
+ </toolChain>
+ </folderInfo>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="" />
+ <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+ <buildOutputProvider>
+ <openAction enabled="true" filePath="" />
+ <parser enabled="true" />
+ </buildOutputProvider>
+ <scannerInfoProvider id="specsFile">
+ <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true" />
+ <parser enabled="true" />
+ </scannerInfoProvider>
+ </profile>
+ <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+ <buildOutputProvider>
+ <openAction enabled="true" filePath="" />
+ <parser enabled="true" />
+ </buildOutputProvider>
+ <scannerInfoProvider id="makefileGenerator">
+ <runAction arguments="-E -P -v -dD" command="" useDefault="true" />
+ <parser enabled="true" />
+ </scannerInfoProvider>
+ </profile>
+ <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+ <buildOutputProvider>
+ <openAction enabled="true" filePath="" />
+ <parser enabled="true" />
+ </buildOutputProvider>
+ <scannerInfoProvider id="specsFile">
+ <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true" />
+ <parser enabled="true" />
+ </scannerInfoProvider>
+ </profile>
+ <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+ <buildOutputProvider>
+ <openAction enabled="true" filePath="" />
+ <parser enabled="true" />
+ </buildOutputProvider>
+ <scannerInfoProvider id="specsFile">
+ <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true" />
+ <parser enabled="true" />
+ </scannerInfoProvider>
+ </profile>
+ <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+ <buildOutputProvider>
+ <openAction enabled="true" filePath="" />
+ <parser enabled="true" />
+ </buildOutputProvider>
+ <scannerInfoProvider id="specsFile">
+ <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true" />
+ <parser enabled="true" />
+ </scannerInfoProvider>
+ </profile>
+ <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+ <buildOutputProvider>
+ <openAction enabled="true" filePath="" />
+ <parser enabled="true" />
+ </buildOutputProvider>
+ <scannerInfoProvider id="specsFile">
+ <runAction arguments='-c &apos;gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;&apos;' command="sh" useDefault="true" />
+ <parser enabled="true" />
+ </scannerInfoProvider>
+ </profile>
+ <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+ <buildOutputProvider>
+ <openAction enabled="true" filePath="" />
+ <parser enabled="true" />
+ </buildOutputProvider>
+ <scannerInfoProvider id="specsFile">
+ <runAction arguments='-c &apos;g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;&apos;' command="sh" useDefault="true" />
+ <parser enabled="true" />
+ </scannerInfoProvider>
+ </profile>
+ <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+ <buildOutputProvider>
+ <openAction enabled="true" filePath="" />
+ <parser enabled="true" />
+ </buildOutputProvider>
+ <scannerInfoProvider id="specsFile">
+ <runAction arguments='-c &apos;gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;&apos;' command="sh" useDefault="true" />
+ <parser enabled="true" />
+ </scannerInfoProvider>
+ </profile>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings" />
+ <storageModule moduleId="org.eclipse.cdt.core.language.mapping" />
+ <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings" />
+ </cconfiguration>
+ <cconfiguration id="com.xmos.cdt.toolchain.35626771">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.xmos.cdt.toolchain.35626771" moduleId="org.eclipse.cdt.core.settings" name="Release">
+ <externalSettings />
+ <extensions>
+ <extension id="com.xmos.cdt.core.XEBinaryParser" point="org.eclipse.cdt.core.BinaryParser" />
+ <extension id="com.xmos.cdt.core.XdeErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration buildProperties="" description="" id="com.xmos.cdt.toolchain.35626771" name="Release" parent="org.eclipse.cdt.build.core.emptycfg">
+ <folderInfo id="com.xmos.cdt.toolchain.35626771.1127281840" name="/" resourcePath="">
+ <toolChain id = "com.xmos.cdt.toolchain.80761503" name="com.xmos.cdt.toolchain" superClass="com.xmos.cdt.toolchain">
+ <targetPlatform archList="all" binaryParser="com.xmos.cdt.core.XEBinaryParser" id = "com.xmos.cdt.core.platform.35413549" isAbstract="false" osList="linux,win32,macosx" superClass="com.xmos.cdt.core.platform" />
+ <builder arguments="CONFIG=Release" id = "com.xmos.cdt.builder.base.11327297" keepEnvironmentInBuildfile="false" managedBuildOn="false" superClass="com.xmos.cdt.builder.base" />
+ <tool id = "com.xmos.cdt.xc.compiler.21327558" name="com.xmos.cdt.xc.compiler" superClass="com.xmos.cdt.xc.compiler">
+ <option id = "com.xmos.c.compiler.option.include.paths.16701783" name="com.xmos.c.compiler.option.include.paths" superClass="com.xmos.c.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/gcc&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/c++/4.2.1&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
+
+ </option>
+ <inputType id = "com.xmos.cdt.xc.compiler.input.25449224" name="XC Sources" superClass="com.xmos.cdt.xc.compiler.input" />
+ <option id = "gnu.c.compiler.option.include.paths.18492114" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
+ <listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/c++/4.2.1&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_TOOL_PATH}/target/include/gcc&quot;' />
+
+ </option>
+ </tool>
+ <tool id = "com.xmos.cdt.xc.compiler.base.6003406" name="com.xmos.cdt.xc.compiler.base" superClass="com.xmos.cdt.xc.compiler.base">
+ <option id = "gnu.c.compiler.option.include.paths.33222722" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
+
+ </option>
+ <option id = "com.xmos.c.compiler.option.include.paths.658166" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
+
+ </option>
+ </tool>
+ <tool id = "com.xmos.cdt.c.compiler.base.202465" name="com.xmos.cdt.c.compiler.base" superClass="com.xmos.cdt.c.compiler.base">
+ <option id = "gnu.c.compiler.option.include.paths.64778279" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
+
+ </option>
+ <option id = "com.xmos.c.compiler.option.include.paths.28882169" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
+
+ </option>
+ </tool>
+ <tool id = "com.xmos.cdt.cpp.compiler.base.92546726" name="com.xmos.cdt.cpp.compiler.base" superClass="com.xmos.cdt.cpp.compiler.base">
+ <option id = "gnu.c.compiler.option.include.paths.43463420" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
+
+ </option>
+ <option id = "com.xmos.c.compiler.option.include.paths.72258337" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
+
+ </option>
+ </tool>
+ <tool id = "com.xmos.cdt.core.assembler.base.39341814" name="com.xmos.cdt.core.assembler.base" superClass="com.xmos.cdt.core.assembler.base">
+ <option id = "gnu.c.compiler.option.include.paths.76522289" valueType="includePath" superClass="gnu.c.compiler.option.include.paths">
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
+ <listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/gcc&quot;' />
+
+ </option>
+ <option id = "com.xmos.c.compiler.option.include.paths.87446554" valueType="includePath" superClass="com.xmos.c.compiler.option.include.paths">
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1&quot;' />
<listOptionValue builtIn="false" value='&quot;${XMOS_DOC_PATH}/../target/include/c++/4.2.1/xcore-xmos-elf&quot;' />
@@ -192,6 +379,6 @@
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id = "sw_motor_control.null.3437079" name="sw_motor_control" />
+ <project id = "sw_motor_control.null.28074551" name="sw_motor_control" />
</storageModule>
</cproject>
View
150 .project
@@ -1,78 +1,76 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>sw_motor_control</name>
- <comment />
- <projects>
- <project>sc_can</project>
- <project>sc_ethernet</project>
- <project>sc_pwm</project>
- <project>sc_xtcp</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>com.xmos.cdt.core.SrcCheckerBuilder</name>
- <arguments />
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
- <triggers>clean,full,incremental,</triggers>
- <arguments>
- <dictionary>
- <key>?name?</key>
- <value />
- </dictionary>
- <dictionary>
- <key>org.eclipse.cdt.make.core.append_environment</key>
- <value>true</value>
- </dictionary>
- <dictionary>
- <key>org.eclipse.cdt.make.core.buildArguments</key>
- <value>CONFIG=Debug</value>
- </dictionary>
- <dictionary>
- <key>org.eclipse.cdt.make.core.buildCommand</key>
- <value>xmake</value>
- </dictionary>
- <dictionary>
- <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
- <value>clean</value>
- </dictionary>
- <dictionary>
- <key>org.eclipse.cdt.make.core.contents</key>
- <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
- </dictionary>
- <dictionary>
- <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
- <value>false</value>
- </dictionary>
- <dictionary>
- <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
- <value>true</value>
- </dictionary>
- <dictionary>
- <key>org.eclipse.cdt.make.core.enableFullBuild</key>
- <value>true</value>
- </dictionary>
- <dictionary>
- <key>org.eclipse.cdt.make.core.stopOnError</key>
- <value>true</value>
- </dictionary>
- <dictionary>
- <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
- <value>false</value>
- </dictionary>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
- <triggers>full,incremental,</triggers>
- <arguments />
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.cdt.core.cnature</nature>
- <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
- <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
- <nature>com.xmos.cdt.core.XdeProjectNature</nature>
- </natures>
+ <name>sw_motor_control</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>com.xmos.cdt.core.SrcCheckerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>?name?</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.append_environment</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildArguments</key>
+ <value>CONFIG=Debug</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildCommand</key>
+ <value>xmake</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+ <value>clean</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.contents</key>
+ <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+ <value>false</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.stopOnError</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+ <value>false</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ <nature>com.xmos.cdt.core.XdeProjectNature</nature>
+ </natures>
</projectDescription>
View
2 app_basic_bldc/Makefile
@@ -21,6 +21,7 @@ APP_NAME =
XCC_FLAGS = -O3 -g -report -Wno-timing
#-lxscope
+XCC_FLAGS_Debug = $(XCC_FLAGS)
# The USED_MODULES variable lists other module used by the application.
@@ -30,6 +31,7 @@ USED_MODULES += module_pwm_singlebit_bldc
USE_XTCP_MAC_CUSTOM_FILTER = 1
+XCC_FLAGS_Release = $(XCC_FLAGS)
#=============================================================================
# The following part of the Makefile includes the common build infrastructure
View
2 app_basic_bldc/src/ethernet_conf.h
@@ -25,6 +25,8 @@
#define MII_RX_BUFSIZE 512
#define MII_TX_BUFSIZE 512
+#define ETHERNET_MAX_TX_PACKET_SIZE 256
+
#define MAX_ETHERNET_CLIENTS (1)
View
2 app_control_board_demo/Makefile
@@ -30,6 +30,8 @@ USED_MODULES += module_dsc_qei module_dsc_adc module_pwm_symmetrical module_pwm_
USE_XTCP_MAC_CUSTOM_FILTER = 1
+XCC_FLAGS_Debug = $(XCC_FLAGS)
+XCC_FLAGS_Release = $(XCC_FLAGS)
#=============================================================================
# The following part of the Makefile includes the common build infrastructure
View
2 app_control_board_demo/src/ethernet_conf.h
@@ -25,6 +25,8 @@
#define MII_RX_BUFSIZE 512
#define MII_TX_BUFSIZE 512
+#define ETHERNET_MAX_TX_PACKET_SIZE 256
+
#define MAX_ETHERNET_CLIENTS (1)
View
2 app_control_board_test/Makefile
@@ -25,6 +25,8 @@ XCC_FLAGS = -O3 -g
USED_MODULES = module_dsc_display
+XCC_FLAGS_Debug = $(XCC_FLAGS)
+XCC_FLAGS_Release = $(XCC_FLAGS)
#=============================================================================
# The following part of the Makefile includes the common build infrastructure
View
2 app_dsc_demo/Makefile
@@ -29,6 +29,8 @@ USED_MODULES += module_dsc_qei module_dsc_adc module_pwm_symmetrical module_pwm_
USE_XTCP_MAC_CUSTOM_FILTER = 1
+XCC_FLAGS_Debug = $(XCC_FLAGS)
+XCC_FLAGS_Release = $(XCC_FLAGS)
#=============================================================================
# The following part of the Makefile includes the common build infrastructure
View
2 app_dsc_demo/src/ethernet_conf.h
@@ -22,6 +22,8 @@
#define MII_RX_BUFSIZE 512
#define MII_TX_BUFSIZE 512
+#define ETHERNET_MAX_TX_PACKET_SIZE 256
+
#define MAX_ETHERNET_CLIENTS (1)
View
4 app_dsc_demo/src/motor/inner_loop.xc
@@ -137,10 +137,10 @@ void run_motor ( chanend? c_in, chanend? c_out, chanend c_pwm, streaming chanend
/* Position and speed as measured by the QEI */
unsigned theta = 0, valid = 0;
- int speed = 100;
+ int speed = 1000;
// Demand speed set by the user/comms interface
- int set_speed = 100;
+ int set_speed = 1000;
// Phase difference between the QEI and the coils
unsigned theta_offset = -1;
View
2 app_power_board_test/Makefile
@@ -28,6 +28,8 @@ USED_MODULES = module_dsc_hall module_dsc_display module_dsc_blocks
USED_MODULES += module_dsc_adc module_dsc_qei
USED_MODULES += module_pwm_symmetrical module_pwm_common
+XCC_FLAGS_Debug = $(XCC_FLAGS)
+XCC_FLAGS_Release = $(XCC_FLAGS)
#=============================================================================
# The following part of the Makefile includes the common build infrastructure
View
7 doc/quickstart-ctrl/Makefile
@@ -0,0 +1,7 @@
+SPHINX_PROJECT_NAME=Quickstart guide for the XMOS Motor Control platform
+VERSION=2.0.0
+COLLECTION=1
+DOXYGEN_DIRS =
+SOURCE_INCLUDE_DIRS=
+XDOC_DIR ?= ../../../xdoc
+include $(XDOC_DIR)/Makefile.inc
View
BIN doc/quickstart-ctrl/control.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
217 doc/quickstart-ctrl/index.rst
@@ -0,0 +1,217 @@
+===========================================================
+Quickstart guide for the XMOS L2 Control Board, version 2.0
+===========================================================
+
+Supported hardware
+------------------
+
+XMOS Control development platform *XP-MC-CTRL-L2*
+
+
+Setting up the hardware
+-----------------------
+
+ The XMOS L2 control platform comes as a single board. It requires a 6V power supply
+
+ - Connect the XMOS JTAG adaptor to the 20 pin IDC header, and connect it to the PC with a USB cable.
+
+ - Connect a 6V power supply to the board.
+
+ **WARNING** : Do *NOT* put a 24V power supply into the control board. The control board takes a 6V power
+ supply and will be damaged by 24V.
+
+ The default application will allow the user to select display of several IO parameters, and allow a TELNET
+ client to attach and control the demo.
+
+
+Control board
+~~~~~~~~~~~~~
+
+ Jumper J2 must be set to the East position to allow a separate 6V power supply to power the board.
+
+ The ADC configuration jumpers, J34 and J35 on the control board must be set as follows in order
+ for the default firmware to correctly run. J34 must be set to *South*, and J35 must be set to *North*.
+
+ .. image:: control.png
+ :width: 100%
+
+ +--------+---------------------------------+----------------------------------------+
+ | J2 | *West* - power from Power Board | *East* - power from External connector |
+ +--------+---------------------------------+----------------------------------------+
+ | J33 | *North* - single ended ADC | *South* - differential ADC |
+ +--------+---------------------------------+----------------------------------------+
+ | J34 | *North* - 0 to 2 Vref ADC range | *South* - 0 - Vref ADC range |
+ +--------+---------------------------------+----------------------------------------+
+
+ .. image:: jumper-2.pdf
+
+ .. image:: jumper-b.pdf
+
+
+Configuring the firmware
+------------------------
+
+ The default firmware comes from the application directory called **app_control_board_demo**.
+
+ Changing the TCP/IP address
+ By default the ethernet and TCP/IP interface uses DHCP to try to get an IP address.
+ To change this, edit the file **app_control_board_demo/src/main.xc**.
+ Contained in this file is the address configuration structure which is passed to the TCP/IP module, in a function called
+ **init_tcp_server()**.
+
+Building the firmware
+---------------------
+
+ The XTAG-2 debug adapter supplied with the kit can be connected to the board to provide a JTAG interface from
+ your development system that you can use to load and debug software. You need to install a set of drivers for
+ the XTAG-2 debug adapter and download a set of free Development Tools (11.11 or later) from the XMOS website:
+
+ http://www.xmos.com/tools
+
+ Instructions on installing and using the XMOS Tools can be found in the XMOS Tools
+ User Guide http://www.xmos.com/published/xtools_en.
+
+
+ Once the software is configured as required, the system can be built by executing the following make command in an XMOS
+ Tools Prompt. The command should be executed in the root directory, or the **app_control_board_demo** directory.
+
+ *xmake all*
+
+ The command will build the software and produce an executable file:
+
+ *app_control_board_demo/bin/Release/app_control_board_demo.xe*
+
+ Alternatively, the project can be imported into the XDE tool. Once it is imported, the sw_motor_control project can
+ be selected, and the options for building and running each application can be selected.
+ To install the software, open the XDE (XMOS Development Tools) and
+ follow these steps:
+
+ - Choose *File* > *Import*.
+ - Choose *General* > *Existing Projects into Workspace* and click *Next*.
+ - Click *Browse* next to *Select archive file* and select the file firmware ZIP file.
+ - Make sure the projects you want to import are ticked in the *Projects* list. Import
+ all the components and whichever applications you are interested in.
+ - Click *Finish*.
+
+ To build, select the appropriate project in the Project Explorer and click the *Build* icon.
+
+Running the firmware
+--------------------
+
+ The example application can be run on the hardware by executing the following command within an XMOS command line:
+
+ *xrun app_control_board_demo/bin/Release/app_control_board_demo.xe*
+
+ Alternatively, from within the XDE:
+
+ - Right click on the binary within the project.
+ - Choose *Run As* > *Run Configurations*
+ - Choose *hardware* and select the relevant XTAG-2 adapter
+ - Select the *Run UART server* check box.
+ - Click on *Apply* if configuration has changed
+ - Click on *Run*
+
+ LCD feedback
+ The LCD shows the current mode and any readings appropriate to that mode.
+
+ Controlling the mode
+ The A and B buttons allow the user to cycle between each mode. The modes are:
+
+ * Startup screen and TCP/IP address display
+ * ADC value value readout
+ * Hall sensor value readout
+ * PWM channel 1 control
+ * PWM channel 2 control
+ * QEI value readout
+
+ In the PWM channel control modes, buttons C and D will change the PWM duty cycle in a pre-defined pattern.
+
+Specific details for each mode
+------------------------------
+
+Startup and TCP/IP address readout
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The TCP/IP address will either be statically or dynamically assigned. By default, the firmware will attempt to
+use dynamic configuration. If a DHCP server is not found, then a link local IP address will eventually be
+assigned.
+
+The readout changes to show the IP address whenever it is assigned.
+
+ADC readout
+~~~~~~~~~~~
+
+The ADC has two channels of ADC, each of which can be multiplexed to one of two sources.
+The display shows two lines, prefixed with M1 and M2. The M1 line shows the measured
+ADC values of *M1_PH_A_CRNT* and *M1_PH_B_CRNT* from the control board connector. Likewise,
+the M2 line shows the values of *M2_PH_A_CRNT* and *M2_PH_B_CRNT*.
+
+Hall sensor readout
+~~~~~~~~~~~~~~~~~~~
+
+The hall sensor readout shows two values, the hall sensor values read from the control board
+connector.
+
+The Hall1 line shows the value from the 4 bit port consisting of signals (*M1_OC_FAULT*, *E_HS2_M1*,
+*E_HS1_M1*, *E_HS0_M1*). Likewise, the Hall2 line shows the values of the signals (*M2_OC_FAULT*, *E_HS2_M2*,
+*E_HS1_M2*, *E_HS0_M2*).
+
+PWM controllers
+~~~~~~~~~~~~~~~
+
+When selected, the display shows the current PWM duty cycles, represented as their 24 bit unsigned
+values, as the PWM API requires. For the PWM channel 1 controller, the six signals on the
+control board connector are (*ISO_M1_LOA*, *ISO_M1_HIA*, *ISO_M1_LOB*, *ISO_M1_HIB*, *ISO_M1_LOC*, *ISO_M1_HIC*).
+Likewise, the control signals modified by the PWM channel 2 controller are (*ISO_M2_LOA*, *ISO_M2_HIA*,
+*ISO_M2_LOB*, *ISO_M2_HIB*, *ISO_M2_LOC*, *ISO_M2_HIC*).
+
+Pressing the C and D buttons will change the duty cycles through the following table.
+
++-------+-------+-------+
+| 0x100 | 0x100 | 0x100 |
++-------+-------+-------+
+| 0x800 | 0x100 | 0x100 |
++-------+-------+-------+
+| 0x800 | 0x800 | 0x100 |
++-------+-------+-------+
+| 0x000 | 0x800 | 0x100 |
++-------+-------+-------+
+| 0x100 | 0x800 | 0x800 |
++-------+-------+-------+
+| 0x100 | 0x100 | 0x800 |
++-------+-------+-------+
+| 0x800 | 0x100 | 0x800 |
++-------+-------+-------+
+| 0xF00 | 0x100 | 0xF00 |
++-------+-------+-------+
+| 0xF00 | 0x100 | 0x100 |
++-------+-------+-------+
+| 0xF00 | 0xF00 | 0x100 |
++-------+-------+-------+
+| 0x100 | 0xF00 | 0x100 |
++-------+-------+-------+
+| 0x100 | 0xF00 | 0xF00 |
++-------+-------+-------+
+| 0x100 | 0x100 | 0xF00 |
++-------+-------+-------+
+
+QEI readout
+~~~~~~~~~~~
+
+By attaching QEI devices to the QEI signals on the control board connector, the position
+of the two devices will be displayed.
+
+The QEI signals are (*ISO_M1ENCO_I*, *ISO_M1ENCO_A*, *ISO_M1ENCO_B*) for the first QEI device, and
+(*ISO_M2ENCO_I*, *ISO_M2ENCO_A*, *ISO_M2ENCO_B*) for the second.
+
+The I signals are the index signals, which should pulse once per revolution at the zero
+point. The A and B are the quadrature channels.
+
+Further reading
+---------------
+
+Visit *http://www.xmos.com/applications/motor-control* for further information and updates.
+
+
+
+
View
BIN doc/quickstart-ctrl/jumper-2.pdf
Binary file not shown.
View
BIN doc/quickstart-ctrl/jumper-b.pdf
Binary file not shown.
View
BIN doc/sw-guide.pdf
Binary file not shown.
View
18 doc/sw-guide/apps.rst 100644 → 100755
@@ -26,10 +26,12 @@ This application makes use of the following functionality.
* Ethernet & Communications
* Processing Blocks
+|newpage|
+
Motor Control Loop
~~~~~~~~~~~~~~~~~~
-The main motor control code for this application can be located in ``src/motor/run_motor.xc``. The motor control thread is
+The main motor control code for this application can be found in the file ``src/motor/run_motor.xc``. The motor control thread is
launched using the following function.
::
@@ -67,7 +69,7 @@ being sent to the PWM thread and subsequently the motor.
Speed Control Loop
~~~~~~~~~~~~~~~~~~
-The speed control loop for this application can be found in ``src/control/speed_control.xc``. The thread is launched by calling
+The speed control loop for this application can be found in the file ``src/control/speed_control.xc``. The thread is launched by calling
the following function.
::
@@ -101,7 +103,7 @@ This application makes use of the following functionality.
Control Loop
~~~~~~~~~~~~
-The control loop can be found in ``src/motor/inner_loop.xc``. The thread is launched by calling the following function.
+The control loop can be found in the file ``src/motor/inner_loop.xc``. The thread is launched by calling the following function.
::
@@ -120,13 +122,13 @@ The control loop takes input from the encoder, a set speed from the control modu
PWM. It contains two controllers in one loop, the speed controller and the current controller. The
speed controller uses the QEI input to measure the speed of the motor, in order to bring the motor to
the correct demand speed. The output of this controller is a tangential torque which is required to
-acheive that demand speed. The torque is passed through the *iq_set_point* variable. The
-*id_set_point* variable is always zero, as no force is required in the radial direction. The torque
-is a direct consequence of current flow in the coils, and therefore the *iq_set_point* is also a
+acheive that demand speed. The torque is passed through the ``iq_set_point`` variable. The
+``id_set_point`` variable is always zero, as no force is required in the radial direction. The torque
+is a direct consequence of current flow in the coils, and therefore the ``iq_set_point`` is also a
measure of the demand current.
The second controller is the torque/current controller. This uses the measured coil currents from the ADC,
-and tries to make them equal to the *iq_set_point* demand. The output of this controller is the extra
+and tries to make them equal to the ``iq_set_point`` demand. The output of this controller is the extra
current required to deliver the required torque. This is used to set the PWM duty cycles for the three
coils.
@@ -141,7 +143,7 @@ third coil current being the sum of the other two.
This loop is a simple example of how a control loop may be implemented and the function calls that would be
used to achieve this.
-The first two arguments, *c_in* and *c_out* are used to synchronize the PWMs for multiple motors so that they
+The first two arguments, ``c_in`` and ``c_out`` are used to synchronize the PWMs for multiple motors so that they
do not have their ADC dead time in exactly the same time.
Further information on field oriented motor control can be found at:
View
14 doc/sw-guide/blocks.rst 100644 → 100755
@@ -31,21 +31,21 @@ The processing blocks module provides the following PID calculation routines. Th
int pid_regulator_delta_cust_error_Id_control( int error, pid_data &id );
-``init_pid`` is used to initialise the pid_data structure values with the coefficient values for *Kp*, *Ki* and *Kd*. These value are the proportional,
-integral and differential coefficients controlling the PID controller. The compile time constant *PID_RESOLUTION* determines how many fractional bits
+``init_pid`` initialises the ``pid_data`` structure values with the coefficient values for *Kp*, *Ki* and *Kd*. These value are the proportional,
+integral and differential coefficients controlling the PID controller. The compile time constant ``PID_RESOLUTION`` determines how many fractional bits
are present in these coefficients.
-``pid_regulator`` does a standard PID calculation using the set_point and actual values. It calculates the error and applies the PID coefficients
-and then returns the result. The returned error will be applied to the set_point value.
+``pid_regulator`` performs a standard PID calculation using the ``set_point`` and ``actual`` values. It calculates the error and applies the PID coefficients
+and then returns the result. The returned error will be applied to the ``set_point`` value.
-``pid_regulator_delta`` does a standard PID calculation using the set_point and actual values. It calculates the error and applies the PID
+``pid_regulator_delta`` performs a standard PID calculation using the ``set_point`` and ``actual`` values. It calculates the error and applies the PID
coefficients and then returns the resulting error.
-``pid_regulator_delta_cust_error`` does a standard PID calculation using a previously calculated error value. It calculates the error and applies
+``pid_regulator_delta_cust_error`` performs a standard PID calculation using a previously calculated error value. It calculates the error and applies
the PID coefficients and then returns the resulting error.
``pid_regulator_delta_cust_error_speed``, ``pid_regulator_delta_cust_error_Iq_control`` and ``pid_regulator_delta_cust_error_Id_control`` are
-customized control PIDs, that limit the output to a specific range appropriate to the variable being controlled.
+customized control PIDs that limit the output to a specific range appropriate to the variable being controlled.
Clarke & Park Transforms
++++++++++++++++++++++++
View
59 doc/sw-guide/display.rst 100644 → 100755
@@ -1,5 +1,5 @@
-Display & Shared IO Interface
-=============================
+Display and Shared IO Interface
+===============================
This module provides a details on the display interface and shared IO manager used in the XMOS Motor Control Development Platform.
@@ -29,16 +29,22 @@ Operation
The following files are used for the display and shared IO manager.
- * ``lcd.h`` - prototypes for LCD functions
- * ``lcd.xc`` - LCD driver functions
- * ``lcd_data.h`` - contains the lcd driver font map.
- * ``lcd_logo.h`` - contains the XMOS logo as a unsigned char array.
- * ``shared_io.h`` - header for the main shared IO server and defines commands this thread uses.
- * ``shared_io.xc`` - contains the main shared IO server routine.
+``lcd.h``
+ Prototypes for LCD functions.
+``lcd.xc``
+ LCD driver functions.
+``lcd_data.h``
+ Contains the lcd driver font map.
+``lcd_logo.h``
+ Contains the XMOS logo as a unsigned char array.
+``shared_io.h``
+ Header for the main shared IO server and defines commands this thread uses.
+``shared_io.xc``
+ Contains the main shared IO server routine.
The shared IO manager that interacts with the hardware is a single thread with three channels connecting to it.
The function is called from main with parameters passing a structure containing the appropriate ports into it.
-The server_thread prototype is:
+The server thread prototype is:
::
@@ -50,26 +56,32 @@ The server_thread prototype is:
The purpose of each argument is as follows:
- * c_speed - an array of speed control channel for controlling the motors
- * p - a reference to the control structure describing the LCD interface
- * btns - a 4 bit input port attached to the buttons
- * leds - a 4 bit output port attached to the leds
+``c_speed``
+ An array of speed control channel for controlling the motors.
+``p``
+ A reference to the control structure describing the LCD interface.
+``btns``
+ A 4 bit input port attached to the buttons.
+``leds``
+ A 4 bit output port attached to the leds.
-The main shared IO manager is constructed from a select statement that sits inside a while(1) loop, so that it gets executed repeatedly.
+The main shared IO manager is constructed from a ``select`` statement within a ``while(1)`` loop, so that it gets executed repeatedly.
+``case t when timerafter(time + 10000000) :> time :``
+ Timer that executes at 10Hz. This gets the current speed, current Iq and speed setpoint from the motor control loops and updates the display with the new values. It also debounces the buttons.
- * ``case t when timerafter(time + 10000000) :> time :`` - timer that executes at 10Hz. This gets the current speed, current Iq and speed setpoint from the motor control loops and updates the display with the new values. It also debounces the buttons.
- * ``case !btn_en => btns when pinsneq(value) :> value:`` - execute commands if a button is pressed.
+``case !btn_en => btns when pinsneq(value) :> value:``
+ Execute commands if a button is pressed.
-The switches are debounced by setting the ``but\_en`` guard signal to two whenever a button is pressed.
-The 10Hz timer in the select statement decrements the value by one, if the value is not 0, on each iteration though it's loop.
+The switches are debounced by setting the ``but_en`` guard signal to two whenever a button is pressed.
+The 10Hz timer in the select statement decrements the value by one, if the value is not 0, on each iteration though its loop.
Therefore, after a minimum of 200ms and a maximum of 300ms the switch is re-enabled.
LCD Communication
+++++++++++++++++
-Communication with the LCD is done using a lcd_byte_out(...) function.
+Communication with the LCD is done using a ``lcd_byte_out`` function.
This communicates directly with the ports to the display.
The protocol is unidirectional SPI with a separate command / data pin which specifies if the current data transfer is a command or data word.
@@ -86,9 +98,12 @@ The procedure for sending a byte to the display is:
The following functions are provided that use the ``lcd_byte_out`` function to send data to the display:
- * ``lcd_clear`` - this wipes the display by writing blank characters into the displays output buffer.
- * ``lcd_draw_image`` - this takes an unsigned char array of size 512 bytes and writes it to the display. Hence, it can be used to display images on the display.
- * ``lcd_draw_text_row`` - writes a row of 21 characters to the display on the row specified by lcd_row (0-3).
+``lcd_clear``
+ This wipes the display by writing blank characters into the displays output buffer.
+``lcd_draw_image``
+ This takes an unsigned char array of size 512 bytes and writes it to the display. Hence, it can be used to display images on the display.
+``lcd_draw_text_row``
+ Writes a row of 21 characters to the display on the row specified by lcd_row (0-3).
The display is configured as 128 columns x 4 byte rows, as the byte writes the data to 8 pixel rows in one transfer.
View
42 doc/sw-guide/index.rst
@@ -1,51 +1,11 @@
Motor Control Platform Software Guide
=====================================
-Introduction
-++++++++++++
-
The XMOS motor control development platform is provided with a software framework and example control loop. This document provides information relating to the structure, implementation and use of the software modules that are specific to the motor control development platform, and interfacing to associated peripheral modules such as the CAN component.
-
-
-Software Modules
-++++++++++++++++
-
-The framework consists of a number of modules that provide functions for an integrated control system. The application utilises modules that provide the following:
-
- * Pulse Width Modulation (PWM)
- * Quadrature Encoder Interface (QEI)
- * Analogue to Digital Converter (ADC) Interface
- * Hall Sensor Interface
- * Display Interface
- * Application Level Communications (Control Interfaces)
- * Computation blocks library
-
-The system utilizes the XMOS standard open source IP blocks for low level Ethernet and CAN interfaces.
-
-In contrast to a typical microcontroller, hardware interfaces are implemented on XMOS devices in software. This gives the developer the flexibility to implement or customise any interface they require. Designers have a greater number of options when selecting ADC's, PWM schemes or control and measurement interfaces.
-
-The modules listed above are implemented in one or more processor threads. The architecture of the threads is shown below for both the basic BLDC and field oriented control configurations. The red and green components show the optional control threads for ethernet and CAN.
-
-Simple BLDC commutation thread diagram
---------------------------------------
-
- .. image:: images/bldc-thread.*
- :width: 100%
-
-Field Oriented Control thread diagram
--------------------------------------
-
- .. image:: images/foc-thread.*
- :width: 100%
-
-In the diagrams, the rectangular blocks are ports, the circles are threads, the solid lines are channel communication, and the dotted lines are port IO.
-
-The ethernet control threads are shown in green, and the CAN threads are shown in red. The system can function with either the CAN or ethernet control,
-methods, or with neither of them.
-
.. toctree::
+ overview
apps
blocks
display
View
21 doc/sw-guide/pwm.rst
@@ -65,7 +65,7 @@ The following table gives some values of associated resolution and period for 25
+-------------------------+------------------------+--------------------------+
| Clock / MHz | Period / Hz | Resolution / bits |
-+-------------------------+------------------------+--------------------------+
++=========================+========================+==========================+
| 250 | 488,281 | 8 |
+-------------------------+------------------------+--------------------------+
| 250 | 122,070 | 10 |
@@ -103,9 +103,10 @@ PWM Server Usage
The usage for each mode is described below. The PWM server needs to be instantiated on the same core as the PWM client. One of the following
is required to be included.
- * pwm_service_simple.h
- * pwm_service_inv.h
+ * ``pwm_service_simple.h``
+ * ``pwm_service_inv.h``
+|newpage|
Inverter Mode
~~~~~~~~~~~~~
@@ -129,10 +130,10 @@ for which ``LOCK_ADC_TO_PWM`` must be defined.
``chanend c_pwm`` is the channel used to communication with the client side.
-``chanend c_adc_trig`` is the channel used to communicate the triggering of the ADC conversion to the ADC thread
+``chanend c_adc_trig`` is the channel used to communicate the triggering of the ADC conversion to the ADC thread.
``in port dummy_port`` is an unused port that is used to consistently trigger the ADC conversion. This port can overlap other used
- ports at it is never written to and the input value is never used.
+ports at it is never written to and the input value is never used.
``buffered out port:32 p_pwm[]`` and ``buffered out port:32 p_pwm_inv[]`` are arrays of 1 bit ports with an array length of 3 that
are used for the HI and LO sides of inverter respectively.
@@ -303,7 +304,7 @@ further output is required before receiving the update from the client.
+----------------+------------------------------------+
| MODE | PWM pulse pattern |
-+----------------+------------------------------------+
++================+====================================+
| 1 | 3 short |
+----------------+------------------------------------+
| 2 | 2 short + 1 standard |
@@ -349,17 +350,17 @@ to the ports. The PWM client must:
* Maintain the shared data set, including which buffer is in use and which one can be updated
Taking the inverter mode as our working example (located in ``module_dsc_pwm/src/dsc_pwm_cli/pwm_cli_inv``) the
-function update_pwm_inv(...) first
+function ``update_pwm_inv`` first
saves the PWM values for later use and then initialises the channel ordering array to assume a sequential order
of output.
If the non-clipped PWM range is being used, then following this the calculation of the timings and output values
are done for each of the channel. This is done by passing the relevant PWM value
-and data set references to the calculate_data_out_ref(...). This function also ascertains the type of output which
-can be one of three values SINGLE, DOUBLE and LONG_SINGLE.
+and data set references to ``calculate_data_out_ref``. This function also ascertains the type of output which
+can be one of three values ``SINGLE``, ``DOUBLE`` and ``LONG_SINGLE``.
Once the calculations for each of the PWM channels is completed they can be ordered. This is done using the
-order_pwm(...) function. This orders the values in the channel ID buffer and also works out the loop mode that is required.
+``order_pwm`` function. This orders the values in the channel ID buffer and also works out the loop mode that is required.
When the values have been ordered and the loop mode calculated the buffer number is passed to the PWM service to indicate an update.
View
1 doc/sw-guide/qei.rst 100644 → 100755
@@ -18,6 +18,7 @@ opt to use multiple single-device QEI server threads, or one multi-device thread
The multiple-QEI service loop has a worst-case timing of 1.4us, therefore being able to service two 1024 position QEI devices spinning at 20kRPM.
+|newpage|
QEI Server Usage
++++++++++++++++
View
6 xpd.xml
@@ -13,11 +13,11 @@
<uri>https://github.com/xcore/xcommon.git</uri>
</dependency>
<dependency repo = "sc_xtcp">
- <githash>cea23d3153a6db5e2d5b808ee170eac3603e699d</githash>
+ <githash>b1e4d744a6af8ac89b8d869303ea89d353eb7b8c</githash>
<uri>git@github.com:xcore/sc_xtcp.git</uri>
</dependency>
<dependency repo = "sc_ethernet">
- <githash>d7c05ddc22df364b3f0fc0e20a54ab636546eca3</githash>
+ <githash>2210776c0f329eb97d2ba009ee900a3f7c15778b</githash>
<uri>git@github.com:xcore/sc_ethernet.git</uri>
</dependency>
<description>XMOS motor control platform</description>
@@ -32,6 +32,8 @@
<release parenthash = "87880368bc900f1215848956c94338be0e5374d9" version = "1.0.2" githash = "eccaec5a2cf331be4dd9faa7d7145fda86220370"></release>
<release parenthash = "39fc4492639533d56d5d3f59e7e19e89469ce0ca" version = "1.0.3rc0" githash = "1c53dbed9753ab2050a76827d8645ec0425c4ec4"></release>
<release parenthash = "39fc4492639533d56d5d3f59e7e19e89469ce0ca" version = "1.0.3" githash = "1c53dbed9753ab2050a76827d8645ec0425c4ec4"></release>
+ <release parenthash = "61fa8e2ae543b8aece4e88006685b925d12ec4e8" version = "1.0.4rc0" githash = "baf33bd8f6386768f68c16bbeb31e7e7c26a1a81"></release>
+ <release parenthash = "4c4b0039d1171fed09bebf46496ef7e4c238e269" version = "1.0.4rc1"></release>
<vendor>XMOS</vendor>
<xpd_version>1.0</xpd_version>
<template name = "Control Board Demo Project (Standalone)">

0 comments on commit 880c560

Please sign in to comment.
Something went wrong with that request. Please try again.