14 Commits

Author SHA1 Message Date
2ada607813 don't know 2015-05-29 10:26:29 +02:00
hg
ebc835c794 changes 2014-05-04 20:56:03 +02:00
hg
45bdbe0a57 * disable real text
* shorter calibration cycle (10ms)
* higher baudrate (115k2)
2014-04-05 11:36:57 +02:00
hg
0f16b2c3a9 all calibrations at once 2014-04-04 20:38:11 +02:00
hg
84f06c66e8 less digit in output 2014-04-03 22:34:03 +02:00
hg
db5cb1829a changes 2014-04-02 22:50:17 +02:00
hg
26b47b1159 response delay 2014-03-09 21:12:17 +01:00
hg
ec6b7c0647 Added tag MBC_WORKING_FIRST_FRAME_ANSWERED for changeset 4c0a748c4e06 2014-03-09 00:26:42 +01:00
hg
13d19d4e15 meterbusclient is working, SND_NKE will be answered 2014-03-09 00:25:48 +01:00
hg
854d2f202a mbc seems to work partly now, finally 2014-03-08 20:57:17 +01:00
hg
b333be0cd9 meterbus integrated but not working 2014-03-08 19:24:27 +01:00
hg
d3d2c75541 start integrating MeterBus client 2014-03-08 13:23:09 +01:00
hg
89771e70d1 switch to teensy 3.0 2014-03-08 00:23:46 +01:00
hg
987be758ad Added tag before_switch_to_arm for changeset 55e33ac01375 2014-03-07 07:58:21 +01:00
20 changed files with 1149 additions and 267 deletions

View File

@ -22,9 +22,7 @@
<tool id="it.baeyens.arduino.tool.sketch.compiler.cpp.1181909059" name="Arduino C++ Compiler" superClass="it.baeyens.arduino.tool.sketch.compiler.cpp"> <tool id="it.baeyens.arduino.tool.sketch.compiler.cpp.1181909059" name="Arduino C++ Compiler" superClass="it.baeyens.arduino.tool.sketch.compiler.cpp">
<option id="it.baeyens.arduino.compiler.cpp.sketch.option.incpath.868800531" name="Include Paths (-I)" superClass="it.baeyens.arduino.compiler.cpp.sketch.option.incpath" valueType="includePath"> <option id="it.baeyens.arduino.compiler.cpp.sketch.option.incpath.868800531" name="Include Paths (-I)" superClass="it.baeyens.arduino.compiler.cpp.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/arduino/core}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/arduino/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/arduino/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/SPI}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/SPI}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/NilRTOS}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/Metro}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/Metro}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/Streaming}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/Streaming}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/EEPROM}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/EEPROM}&quot;"/>
@ -34,9 +32,7 @@
<tool id="it.baeyens.arduino.tool.compiler.c.296664592" name="Arduino C Compiler" superClass="it.baeyens.arduino.tool.compiler.c"> <tool id="it.baeyens.arduino.tool.compiler.c.296664592" name="Arduino C Compiler" superClass="it.baeyens.arduino.tool.compiler.c">
<option id="it.baeyens.arduino.compiler.c.sketch.option.incpath.179588157" name="Include Paths (-I)" superClass="it.baeyens.arduino.compiler.c.sketch.option.incpath" valueType="includePath"> <option id="it.baeyens.arduino.compiler.c.sketch.option.incpath.179588157" name="Include Paths (-I)" superClass="it.baeyens.arduino.compiler.c.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/arduino/core}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/arduino/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/arduino/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/SPI}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/SPI}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/NilRTOS}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/Metro}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/Metro}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/Streaming}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/Streaming}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/EEPROM}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ThermometerPro/Libraries/EEPROM}&quot;"/>

2
.hgtags Normal file
View File

@ -0,0 +1,2 @@
55e33ac01375df1e3e295262fcc03a568ddf48e3 before_switch_to_arm
4c0a748c4e0681d22d1d3e1faf4e09266a64dc8c MBC_WORKING_FIRST_FRAME_ANSWERED

View File

@ -49,26 +49,21 @@
<link> <link>
<name>arduino/core</name> <name>arduino/core</name>
<type>2</type> <type>2</type>
<locationURI>ArduinoPlatformPath/cores/arduino</locationURI> <locationURI>ArduinoPlatformPath/cores/teensy3</locationURI>
</link>
<link>
<name>arduino/variant</name>
<type>2</type>
<locationURI>ArduinoPinPath/micro</locationURI>
</link> </link>
</linkedResources> </linkedResources>
<variableList> <variableList>
<variable> <variable>
<name>ArduinoHardwareLibPath</name> <name>ArduinoHardwareLibPath</name>
<value>file:/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/libraries</value> <value>file:/Applications/Arduino.app/Contents/Resources/Java/hardware/teensy/all/libraries</value>
</variable> </variable>
<variable> <variable>
<name>ArduinoPinPath</name> <name>ArduinoPinPath</name>
<value>file:/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/variants</value> <value>file:/Applications/Arduino.app/Contents/Resources/Java/hardware/teensy/all/variants</value>
</variable> </variable>
<variable> <variable>
<name>ArduinoPlatformPath</name> <name>ArduinoPlatformPath</name>
<value>file:/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr</value> <value>file:/Applications/Arduino.app/Contents/Resources/Java/hardware/teensy/all</value>
</variable> </variable>
</variableList> </variableList>
</projectDescription> </projectDescription>

View File

@ -3,7 +3,7 @@
<configuration id="it.baeyens.arduino.core.toolChain.release.1909314976" name="Release"> <configuration id="it.baeyens.arduino.core.toolChain.release.1909314976" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider class="it.baeyens.arduino.toolchain.ArduinoLanguageProvider" console="false" env-hash="-2011256820" id="it.baeyens.arduino.languageSettingsProvider" keep-relative-paths="false" name="Arduino Compiler Settings" parameter="${COMMAND} -E -P -v -dD ${INPUTS}" prefer-non-shared="true"> <provider class="it.baeyens.arduino.toolchain.ArduinoLanguageProvider" console="false" env-hash="-1881042430836" id="it.baeyens.arduino.languageSettingsProvider" keep-relative-paths="false" name="Arduino Compiler Settings" parameter="${COMMAND} -E -P -v -dD ${INPUTS}" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

View File

@ -1,67 +1,109 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHITECTURE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHITECTURE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHITECTURE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHITECTURE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHITECTURE/value=avr environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHITECTURE/value=all
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHIVE_FILE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHIVE_FILE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHIVE_FILE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHIVE_FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHIVE_FILE/value=arduino.ar environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.ARCHIVE_FILE/value=teensy.ar
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.EXTENDED_FUSES/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.EXTENDED_FUSES/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.EXTENDED_FUSES/value=0xcb environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.PATH/value=undefined
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.FILE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.FILE/value=caterina/Caterina-Micro.hex
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.HIGH_FUSES/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.HIGH_FUSES/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.HIGH_FUSES/value=0xd8
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.LOCK_BITS/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.LOCK_BITS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.LOCK_BITS/value=0x2F
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.LOW_FUSES/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.LOW_FUSES/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.LOW_FUSES/value=0xff
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.TOOL/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.TOOL/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.TOOL/value=avrdude
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.UNLOCK_BITS/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.UNLOCK_BITS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BOOTLOADER.UNLOCK_BITS/value=0x3F
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ARCH/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ARCH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ARCH/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ARCH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ARCH/value=AVR environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ARCH/value=ALL
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ARCHITECTURE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ARCHITECTURE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ARCHITECTURE/value=arm-none-eabi
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.AR/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.AR/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.AR/value=arm-none-eabi-ar
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.G++/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.G++/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.G++/value=arm-none-eabi-g++
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.GCC/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.GCC/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.GCC/value=arm-none-eabi-gcc
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.OBJCOPY/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.OBJCOPY/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.OBJCOPY/value=arm-none-eabi-objcopy
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.OBJDUMP/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.OBJDUMP/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.OBJDUMP/value=arm-none-eabi-objdump
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.SIZE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.SIZE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.COMMAND.SIZE/value=arm-none-eabi-size
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CORE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CORE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CORE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CORE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CORE/value=arduino environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CORE/value=teensy3
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CPPOPTION1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CPPOPTION1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CPPOPTION1/value=-fno-rtti
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CPU/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CPU/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.CPU/value=cortex-m4
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.DEFINE0/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.DEFINE0/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.DEFINE0/value=-DUSB_SERIAL
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.DEFINE1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.DEFINE1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.DEFINE1/value=-DLAYOUT_US_INTERNATIONAL
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.DEPENDENCY/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.DEPENDENCY/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.DEPENDENCY/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ELIDE_CONSTRUCTORS/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ELIDE_CONSTRUCTORS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.ELIDE_CONSTRUCTORS/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.EXTRA_FLAGS/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.EXTRA_FLAGS/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.EXTRA_FLAGS/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.EXTRA_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.EXTRA_FLAGS/value=-DUSB_VID\=${A.BUILD.VID} -DUSB_PID\=${A.BUILD.PID} environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.EXTRA_FLAGS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.F_CPU/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.F_CPU/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.F_CPU/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.F_CPU/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.F_CPU/value=16000000L environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.F_CPU/value=48000000
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.GNU0X/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.GNU0X/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.GNU0X/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.LDSCRIPT/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.LDSCRIPT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.LDSCRIPT/value=hardware/teensy/all/cores/teensy3/mk20dx128.ld
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.LINKOPTION1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.LINKOPTION1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.LINKOPTION1/value=-mthumb
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.LINKSCRIPT/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.LINKSCRIPT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.LINKSCRIPT/value=mk20dx128.ld
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.MCU/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.MCU/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.MCU/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.MCU/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.MCU/value=atmega32u4 environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.MCU/value=cortex-m4
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.NOARCHIVE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.NOARCHIVE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.NOARCHIVE/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.OPTION1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.OPTION1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.OPTION1/value=-mthumb
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.OPTION2/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.OPTION2/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.OPTION2/value=-nostdlib
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.OPTION3/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.OPTION3/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.OPTION3/value=-D__MK20DX128__
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PATH/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PATH/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PATH/value=${ProjDirPath}/${ConfigName} environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PATH/value=${ProjDirPath}/${ConfigName}
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PID/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.POST_COMPILE_SCRIPT/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PID/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.POST_COMPILE_SCRIPT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PID/value=0x8037 environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.POST_COMPILE_SCRIPT/value=teensy_post_compile
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PROJECT_NAME/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PROJECT_NAME/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PROJECT_NAME/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PROJECT_NAME/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PROJECT_NAME/value=${ProjName} environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.PROJECT_NAME/value=${ProjName}
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.TIME_T/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.TIME_T/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.TIME_T/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.USE_ARCHIVER/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.USE_ARCHIVER/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.USE_ARCHIVER/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.USE_ARCHIVER/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.USE_ARCHIVER/value=true environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.USE_ARCHIVER/value=false
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VARIANT.PATH/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VARIANT.PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VARIANT.PATH/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VARIANT.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VARIANT.PATH/value=/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/variants/${A.BUILD.VARIANT} environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VARIANT.PATH/value=/Applications/Arduino.app/Contents/Resources/Java/hardware/teensy/all/variants/${A.BUILD.VARIANT}
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VARIANT/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VARIANT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VARIANT/value=micro
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VID/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VID/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.BUILD.VID/value=0x2341
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.CMD.PATH/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.CMD.PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.CMD.PATH/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.CMD.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.CMD.PATH/value=${A.TOOLS.AVRDUDE.CMD.PATH} environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.CMD.PATH/value=${A.TOOLS.AVRDUDE.CMD.PATH}
@ -113,6 +155,15 @@ environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPI
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.S.FLAGS/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.S.FLAGS/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.S.FLAGS/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.S.FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.S.FLAGS/value=-c -g -assembler-with-cpp environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.S.FLAGS/value=-c -g -assembler-with-cpp
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SAM.PATH.LINUX/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SAM.PATH.LINUX/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SAM.PATH.LINUX/value=${A.RUNTIME.IDE.PATH}/hardware/teensy/tools/linux/arm-none-eabi/bin/
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SAM.PATH.WINDOWS/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SAM.PATH.WINDOWS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SAM.PATH.WINDOWS/value=${A.RUNTIME.IDE.PATH}/hardware/teensy/tools/windows/arm-none-eabi/bin/
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SAM.PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SAM.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SAM.PATH/value=${A.RUNTIME.IDE.PATH}/hardware/teensy/tools/mac/arm-none-eabi/bin/
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SIZE.CMD/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SIZE.CMD/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SIZE.CMD/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SIZE.CMD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SIZE.CMD/value=avr-size environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.COMPILER.SIZE.CMD/value=avr-size
@ -121,31 +172,28 @@ environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.CONFI
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.CONFIG.PATH/value=${A.TOOLS.AVRDUDE.CONFIG.PATH} environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.CONFIG.PATH/value=${A.TOOLS.AVRDUDE.CONFIG.PATH}
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.NAME/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.NAME/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.NAME/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.NAME/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.NAME/value=Arduino Micro environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.NAME/value=Teensy 3.0
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.PATH/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.PATH/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.PATH/value=${A.TOOLS.BOSSAC.PATH} environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.PATH/value=${A.TOOLS.BOSSAC.PATH}
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN.1/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN.1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN.1/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.AR.CMD}" ${A.COMPILER.AR.FLAGS} "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN.1/value="${A.COMPILER.SAM.PATH}arm-none-eabi-ar" -r "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" ${A.OBJECT_FILE}
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN.2/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN.2/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN.2/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.AR.CMD}" ${A.COMPILER.AR.FLAGS} "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" "${A.OBJECT_FILE}" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.AR.PATTERN/value="${A.COMPILER.SAM.PATH}arm-none-eabi-ar" -r "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" ${A.OBJECT_FILE}
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.1/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.1/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.C.ELF.CMD}" ${A.COMPILER.C.ELF.FLAGS} -mmcu\=${A.BUILD.MCU} -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.1/value="${A.COMPILER.SAM.PATH}arm-none-eabi-gcc" -Os -Wl,--gc-sections -mcpu\=${A.BUILD.MCU} -mthumb "-T${A.RUNTIME.IDE.PATH}/${A.BUILD.LDSCRIPT}" -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.2/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.2/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.2/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.2/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.2/value=\ "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" "-L${A.BUILD.PATH}" -lm environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN.2/value=\ -L"${A.BUILD.PATH}" -lm
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.ELF.CMD}" ${A.COMPILER.C.ELF.FLAGS} -mmcu\=${A.BUILD.MCU} -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" ${A.OBJECT_FILES} "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" "-L${A.BUILD.PATH}" -lm environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.COMBINE.PATTERN/value="${A.COMPILER.SAM.PATH}arm-none-eabi-gcc" -Os -Wl,--gc-sections -mcpu\=${A.BUILD.MCU} -mthumb "-T${A.RUNTIME.IDE.PATH}/${A.BUILD.LDSCRIPT}" -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" ${A.OBJECT_FILES} -L"${A.BUILD.PATH}" -lm
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.1/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.1/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.C.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.1/value="${A.COMPILER.SAM.PATH}arm-none-eabi-gcc" -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -mcpu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -DTIME_T\=1365449461 ${A.BUILD.DEFINE0} ${A.BUILD.DEFINE1} -MMD -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} -mthumb -D__MK20DX128__ ${A.INCLUDES}
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.2/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.2/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.2/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.2/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.2/value=\ -o environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.2/value=\ -o
@ -154,10 +202,10 @@ environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIP
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.3/value= environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN.3/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.C.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.C.O.PATTERN/value="${A.COMPILER.SAM.PATH}arm-none-eabi-gcc" -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -mcpu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -DTIME_T\=1365449461 ${A.BUILD.DEFINE0} ${A.BUILD.DEFINE1} -MMD -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} -mthumb -D__MK20DX128__ ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}"
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.1/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.1/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.CPP.CMD}" ${A.COMPILER.CPP.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.1/value="${A.COMPILER.SAM.PATH}arm-none-eabi-g++" -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-rtti -fno-exceptions -mcpu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} ${A.BUILD.DEFINE0} ${A.BUILD.DEFINE1} -MMD -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} -mthumb -D__MK20DX128__ -felide-constructors -std\=gnu++0x ${A.INCLUDES}
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.2/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.2/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.2/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.2/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.2/value=\ -o environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.2/value=\ -o
@ -166,25 +214,25 @@ environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIP
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.3/value= environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN.3/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.CPP.CMD}" ${A.COMPILER.CPP.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.CPP.O.PATTERN/value="${A.COMPILER.SAM.PATH}arm-none-eabi-g++" -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-rtti -fno-exceptions -mcpu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} ${A.BUILD.DEFINE0} ${A.BUILD.DEFINE1} -MMD -D${A.SOFTWARE}\=${A.RUNTIME.IDE.VERSION} ${A.BUILD.EXTRA_FLAGS} -mthumb -D__MK20DX128__ -felide-constructors -std\=gnu++0x ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}"
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN.1/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN.1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN.1/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.OBJCOPY.CMD}" ${A.COMPILER.OBJCOPY.EEP.FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.eep" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN.1/value="${A.COMPILER.SAM.PATH}arm-none-eabi-objcopy" -O ihex -j .eeprom --set-section-flags\=.eeprom\=alloc,load --no-change-warnings --change-section-lma .eeprom\=0 "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.eep"
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.OBJCOPY.CMD}" ${A.COMPILER.OBJCOPY.EEP.FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.eep" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.EEP.PATTERN/value="${A.COMPILER.SAM.PATH}arm-none-eabi-objcopy" -O ihex -j .eeprom --set-section-flags\=.eeprom\=alloc,load --no-change-warnings --change-section-lma .eeprom\=0 "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.eep"
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN.1/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN.1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN.1/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.ELF2HEX.CMD}" ${A.COMPILER.ELF2HEX.FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN.1/value="${A.COMPILER.SAM.PATH}arm-none-eabi-objcopy" -O ihex -R .eeprom "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex"
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.ELF2HEX.CMD}" ${A.COMPILER.ELF2HEX.FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.OBJCOPY.HEX.PATTERN/value="${A.COMPILER.SAM.PATH}arm-none-eabi-objcopy" -O ihex -R .eeprom "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex"
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN.1/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN.1/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN.1/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN.1/value="${A.COMPILER.SAM.PATH}arm-none-eabi-size" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.PATTERN/value="${A.COMPILER.SAM.PATH}arm-none-eabi-size" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.REGEX/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.REGEX/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.REGEX/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.REGEX/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.REGEX/value=Total\\s+([0-9]+).* environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RECIPE.SIZE.REGEX/value=Total\\s+([0-9]+).*
@ -197,87 +245,81 @@ environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RUNTI
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RUNTIME.IDE.VERSION/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RUNTIME.IDE.VERSION/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RUNTIME.IDE.VERSION/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RUNTIME.IDE.VERSION/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RUNTIME.IDE.VERSION/value=152 environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.RUNTIME.IDE.VERSION/value=152
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SERIAL.RESTART_CMD/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SERIAL.RESTART_CMD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SERIAL.RESTART_CMD/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SERIAL.SAFE_BAUD_RATES_ONLY/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SERIAL.SAFE_BAUD_RATES_ONLY/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SERIAL.SAFE_BAUD_RATES_ONLY/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SOFTWARE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SOFTWARE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SOFTWARE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SOFTWARE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SOFTWARE/value=ARDUINO environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.SOFTWARE/value=ARDUINO
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.QUIET/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.QUIET/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.QUIET/value=-q -q
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.VERBOSE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.VERBOSE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.VERBOSE/value=-v -v -v -v
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.BOOTLOADER.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.BOOTLOADER.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.BOOTLOADER.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.BOOTLOADER.VERBOSE} -p${A.BUILD.MCU} -c${A.PROTOCOL} ${A.PROGRAM.EXTRA_PARAMS} "-Uflash\:w\:${A.RUNTIME.IDE.PATH}/hardware/arduino/avr/bootloaders/${A.BOOTLOADER.FILE}\:i" -Ulock\:w\:${A.BOOTLOADER.LOCK_BITS}\:m
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CMD.PATH.LINUX/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CMD.PATH.LINUX/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CMD.PATH.LINUX/value=${A.RUNTIME.IDE.PATH}/hardware/tools/avrdude
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CMD.PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CMD.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CMD.PATH/value=${A.RUNTIME.IDE.PATH}/hardware/tools/avr/bin/avrdude
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CONFIG.PATH.LINUX/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CONFIG.PATH.LINUX/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CONFIG.PATH.LINUX/value=${A.RUNTIME.IDE.PATH}/hardware/tools/avrdude.conf
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CONFIG.PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CONFIG.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.CONFIG.PATH/value=${A.RUNTIME.IDE.PATH}/hardware/tools/avr/etc/avrdude.conf
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.ERASE.PARAMS.QUIET/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.ERASE.PARAMS.QUIET/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.ERASE.PARAMS.QUIET/value=-q -q
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.ERASE.PARAMS.VERBOSE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.ERASE.PARAMS.VERBOSE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.ERASE.PARAMS.VERBOSE/value=-v -v -v -v
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.ERASE.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.ERASE.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.ERASE.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.ERASE.VERBOSE} -p${A.BUILD.MCU} -c${A.PROTOCOL} ${A.PROGRAM.EXTRA_PARAMS} -e -Ulock\:w\:${A.BOOTLOADER.UNLOCK_BITS}\:m -Uefuse\:w\:${A.BOOTLOADER.EXTENDED_FUSES}\:m -Uhfuse\:w\:${A.BOOTLOADER.HIGH_FUSES}\:m -Ulfuse\:w\:${A.BOOTLOADER.LOW_FUSES}\:m
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/value=-q -q environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/value=-q -q
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.VERBOSE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CMD.PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.VERBOSE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CMD.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.VERBOSE/value=-v -v -v -v environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CMD.PATH/value=${A.TOOLS.TEENSY_REBOOT.CONFIG.PATH}/
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PATTERN/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CONFIG.PATH.LINUX/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PATTERN/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CONFIG.PATH.LINUX/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.PROGRAM.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.PROGRAM.VERBOSE} -p${A.BUILD.MCU} -c${A.PROTOCOL} ${A.PROGRAM.EXTRA_PARAMS} "-Uflash\:w\:${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex\:i" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CONFIG.PATH.LINUX/value=${A.RUNTIME.IDE.PATH}/hardware/teensy/tools/linux
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.QUIET/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CONFIG.PATH.WINDOWS/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.QUIET/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CONFIG.PATH.WINDOWS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.QUIET/value=-q -q environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CONFIG.PATH.WINDOWS/value=${A.RUNTIME.IDE.PATH}/hardware/teensy/tools/windows
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.VERBOSE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CONFIG.PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.VERBOSE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CONFIG.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.VERBOSE/value=-v -v -v -v environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.CONFIG.PATH/value=${A.RUNTIME.IDE.PATH}/hardware/teensy/tools/mac
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.UPLOAD.PATTERN/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.NAME/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.UPLOAD.PATTERN/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.NAME/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.AVRDUDE.UPLOAD.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.UPLOAD.VERBOSE} -p${A.BUILD.MCU} -c${A.UPLOAD.PROTOCOL} -P${A.SERIAL.PORT} -b${A.UPLOAD.SPEED} -D "-Uflash\:w\:${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex\:i" environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.NAME/value=Teensy upload
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP1.NAME/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP1.NAME/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP1.NAME/value=Teensy post compile
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP1.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP1.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP1.PATTERN/value="${A.TOOLS.TEENSY_REBOOT.CMD.PATH}teensy_post_compile" -path\=${A.BUILD.PATH} -file\=${A.BUILD.PROJECT_NAME} -tools\=${A.TOOLS.TEENSY_REBOOT.CONFIG.PATH} -board\=${A.NAME}
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP2.NAME/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP2.NAME/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP2.NAME/value=Teensy reboot
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP2.PATTERN/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP2.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.STEP2.PATTERN/value="${A.TOOLS.TEENSY_REBOOT.CMD.PATH}teensy_reboot" -v
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.UPLOAD.PARAMS.QUIET/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.UPLOAD.PARAMS.QUIET/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.UPLOAD.PARAMS.QUIET/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.UPLOAD.PARAMS.VERBOSE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.UPLOAD.PARAMS.VERBOSE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.TOOLS.TEENSY_REBOOT.UPLOAD.PARAMS.VERBOSE/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.DISABLE_FLUSHING/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.DISABLE_FLUSHING/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.DISABLE_FLUSHING/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.DISABLE_FLUSHING/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.DISABLE_FLUSHING/value=true environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.DISABLE_FLUSHING/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.MAXIMUM_RAM_SIZE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.MAXIMUM_RAM_SIZE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.MAXIMUM_RAM_SIZE/value=16384
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.MAXIMUM_SIZE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.MAXIMUM_SIZE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.MAXIMUM_SIZE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.MAXIMUM_SIZE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.MAXIMUM_SIZE/value=28672 environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.MAXIMUM_SIZE/value=131072
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.PROTOCOL/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.PROTOCOL/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.PROTOCOL/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.PROTOCOL/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.PROTOCOL/value=avr109 environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.PROTOCOL/value=halfkay
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.SPEED/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.SPEED/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.SPEED/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.SPEED/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.SPEED/value=57600 environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.SPEED/value=12000000
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.TOOL/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.TOOL/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.TOOL/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.TOOL/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.TOOL/value=avrdude environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.TOOL/value=teensy_reboot
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.USE_1200BPS_TOUCH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.USE_1200BPS_TOUCH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.USE_1200BPS_TOUCH/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARDS_FILE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARDS_FILE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARDS_FILE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARDS_FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARDS_FILE/value=/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/boards.txt environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARDS_FILE/value=/Applications/Arduino.app/Contents/Resources/Java/hardware/teensy/all/boards.txt
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARD_NAME/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARD_NAME/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARD_NAME/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARD_NAME/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARD_NAME/value=Arduino Micro environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.BOARD_NAME/value=Teensy 3.0
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.COM_PORT/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.COM_PORT/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.COM_PORT/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.COM_PORT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.COM_PORT/value=/dev/tty.usbmodemfd111 environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.COM_PORT/value=/dev/tty.usbmodemfd111
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.CPU\ Speed/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.CPU\ Speed/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.CPU\ Speed/value=48 MHz
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.C.COMPILE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.C.COMPILE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.C.COMPILE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.C.COMPILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.C.COMPILE/value= environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.C.COMPILE/value=
@ -287,9 +329,12 @@ environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.CPP.COMPILE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.CPP.COMPILE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.CPP.COMPILE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.CPP.COMPILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.CPP.COMPILE/value= environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.EXTRA.CPP.COMPILE/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.Keyboard\ Layout/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.Keyboard\ Layout/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.Keyboard\ Layout/value=US International
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.PLATFORM_FILE/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.PLATFORM_FILE/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.PLATFORM_FILE/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.PLATFORM_FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.PLATFORM_FILE/value=/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/platform.txt environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.PLATFORM_FILE/value=/Applications/Arduino.app/Contents/Resources/Java/hardware/teensy/all/platform.txt
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.Processor/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.Processor/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.Processor/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.Processor/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.Processor/value= environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.Processor/value=
@ -305,6 +350,9 @@ environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.TEMPLATE_USE_DEFAULT/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.TEMPLATE_USE_DEFAULT/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.TEMPLATE_USE_DEFAULT/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.TEMPLATE_USE_DEFAULT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.TEMPLATE_USE_DEFAULT/value=true environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.TEMPLATE_USE_DEFAULT/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.USB\ Type/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.USB\ Type/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/JANTJE.USB\ Type/value=Serial
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/PATH/delimiter=\: environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/PATH/delimiter=\:
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/PATH/operation=replace environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/PATH/value=${A.COMPILER.PATH}${PathDelimiter}${A.BUILD.GENERIC.PATH}${PathDelimiter}${PATH} environment/project/it.baeyens.arduino.core.toolChain.release.1909314976/PATH/value=${A.COMPILER.PATH}${PathDelimiter}${A.BUILD.GENERIC.PATH}${PathDelimiter}${PATH}

View File

@ -171,7 +171,6 @@ unsigned char AD7190_Init(void)
// TIME_DelayMs(1); // TIME_DelayMs(1);
delay(1); // arduino function delay(1); // arduino function
regVal = AD7190_GetRegisterValue(AD7190_REG_ID, 1, 1); regVal = AD7190_GetRegisterValue(AD7190_REG_ID, 1, 1);
Serial.print(String("regVal: ") + regVal + "\n");
if( (regVal & AD7190_ID_MASK) != ID_AD7190) if( (regVal & AD7190_ID_MASK) != ID_AD7190)
{ {
status = 0; status = 0;

View File

@ -8,6 +8,7 @@
#include <EEPROM.h> #include <EEPROM.h>
#include "Config.h" #include "Config.h"
#include "Resources.h"
@ -83,6 +84,44 @@ void Config::setULong(int pos, unsigned long value) {
} }
} }
unsigned char Config::getUChar(int pos) {
u_uchar u;
for (unsigned int i = 0; i < sizeof(unsigned char); i++) {
u.e[i] = EEPROM.read(pos + i);
}
return u.c;
}
void Config::setUChar(int pos, unsigned char value) {
u_uchar u;
u.c = value;
for (unsigned int i = 0; i < sizeof(unsigned char); i++) {
EEPROM.write(pos + i, u.e[i]);
}
}
void Config::initialize() {
if (! isInitialized()) {
Serial.println(getResource(CONFIG_INIT_KEY));
setFloat(THERMOMETER_ALPHA, 1.0);
setULong(THERMOMETER_PERIOD, 1000);
for (int i = 0; i < 4; i++) {
setFloat(THERMOMETER_CAL[i], 1.0);
}
setBool(THERMOMETER_DEBUG, false);
setBool(THERMOMETER_INFO, false);
setUChar(METERBUSCLIENT_ADDRESS, 0);
setBool(METERBUSCLIENT_DEBUG, false);
setBool(METERBUSCLIENT_INFO, false);
setMagic();
}
}
bool Config::isInitialized() { bool Config::isInitialized() {
unsigned int magic = getUInt(MAGIC); unsigned int magic = getUInt(MAGIC);
return magic == MAGIC_TOKEN; return magic == MAGIC_TOKEN;

View File

@ -39,6 +39,11 @@ typedef union {
uint8_t e[sizeof(bool)]; uint8_t e[sizeof(bool)];
} u_bool; } u_bool;
typedef union {
unsigned char c;
uint8_t e[sizeof(unsigned char)];
} u_uchar;
namespace Config { namespace Config {
const unsigned int MAGIC_TOKEN = 0xDEADBEEF; const unsigned int MAGIC_TOKEN = 0xDEADBEEF;
@ -49,6 +54,11 @@ namespace Config {
const int THERMOMETER_CAL[4] = {12, 16, 20, 24}; // 4 x 4 const int THERMOMETER_CAL[4] = {12, 16, 20, 24}; // 4 x 4
const int THERMOMETER_DEBUG = 28; // 1 const int THERMOMETER_DEBUG = 28; // 1
const int THERMOMETER_INFO = 29; // 1 const int THERMOMETER_INFO = 29; // 1
const int METERBUSCLIENT_ADDRESS = 30; // 1
const int METERBUSCLIENT_DEBUG = 31; // 1
const int METERBUSCLIENT_INFO = 32; // 1
bool getBool(int pos); bool getBool(int pos);
void setBool(int pos, bool value); void setBool(int pos, bool value);
@ -58,6 +68,10 @@ namespace Config {
void setUInt(int pos, unsigned int value); void setUInt(int pos, unsigned int value);
unsigned long getULong(int pos); unsigned long getULong(int pos);
void setULong(int pos, unsigned long value); void setULong(int pos, unsigned long value);
unsigned char getUChar(int pos);
void setUChar(int pos, unsigned char value);
void initialize();
bool isInitialized(); bool isInitialized();

View File

@ -9,12 +9,95 @@
#include "Resources.h" #include "Resources.h"
#define USE_REAL_TEXTS 1
#ifndef USE_REAL_TEXTS
String TEXT; String TEXT;
#else
const String TEXT_RESOURCES[] = {
"Text1",
"PeriodMeasure (ms): ",
"Alpha: ",
"Calibration: ",
"Info: ",
"Debug: ",
"COMPILE_TIME_DEBUG: ",
"TimeOuts: ",
"Cycles: ",
"Period (ms): ",
"Alpha: ",
"index: ",
"cal: ",
"t: ",
"ts: ",
", ",
" enable : enable the calibration mode",
" disable : disable the calibration mode",
" show : show parameters for calibration process",
" r : set value of calibration resistor",
" start <0..3>: start calibration on channel",
" stop <0..3>: stop calibration on channel",
" enabled : ",
" r_cal : ",
"setTemperature: i=",
"t=",
"t_smoothed=",
"CONF: ",
"MODE: ",
"Initializing EEPROM",
"State 0",
"Switching to State 1",
"Switching to State 10",
"State 9",
"Timeout: ",
"State 10",
"No, no, we are in calibration high mode, so directly switch to state 20",
"Switching to state 11",
"r_avg on channel ",
"calibration factor: ",
"Calibration stopped",
"Save calibration factor for channel ",
": ",
"HELP List this help for all commands",
"command not found",
"Thermometer configuration operations",
"Show thermometer measurement values",
"Thermometer calibration operations",
"No, no, we are in calibration zero mode, so directly switch to state 20",
"MeterBus Client Configuration",
"Invalid frame",
"No valid frame available",
"Invalid checksum",
"Not for me but for ",
"Unhandled frame",
"s: ",
"l: ",
"c: ",
"a: ",
"ci: ",
"u: ",
" ",
"frames: ",
"my frames: ",
"invalid frames: ",
"invalid checksum: ",
"mbus address: ",
"collisions: ",
"r: ",
"setR: i=",
"r=",
};
#endif
const String& getResource(uint8_t key) { const String& getResource(uint8_t key) {
#ifndef USE_REAL_TEXTS
TEXT = String(" T") + key + String(": "); TEXT = String(" T") + key + String(": ");
return TEXT; return TEXT;
#else
return TEXT_RESOURCES[key];
#endif
} }

View File

@ -41,7 +41,7 @@ const uint8_t SET_TEMPERATURE_DEBUG_2_KEY = 25;
const uint8_t SET_TEMPERATURE_DEBUG_3_KEY = 26; const uint8_t SET_TEMPERATURE_DEBUG_3_KEY = 26;
const uint8_t CONF_COLON_KEY = 27; const uint8_t CONF_COLON_KEY = 27;
const uint8_t MODE_COLON_KEY = 28; const uint8_t MODE_COLON_KEY = 28;
const uint8_t THERMOMETER_BEGIN_1_KEY = 29; const uint8_t CONFIG_INIT_KEY = 29;
const uint8_t STATE_0_KEY = 30; const uint8_t STATE_0_KEY = 30;
const uint8_t TO_STATE_1_KEY = 31; const uint8_t TO_STATE_1_KEY = 31;
const uint8_t TO_STATE_10_KEY = 32; const uint8_t TO_STATE_10_KEY = 32;
@ -60,62 +60,29 @@ const uint8_t CMDSERVER_CMD_NOT_FOUND_KEY = 44;
const uint8_t THERMCONFIG_HELP_KEY = 45; const uint8_t THERMCONFIG_HELP_KEY = 45;
const uint8_t THERMVALUES_HELP_KEY = 46; const uint8_t THERMVALUES_HELP_KEY = 46;
const uint8_t THERMCALIBRATE_HELP_KEY = 47; const uint8_t THERMCALIBRATE_HELP_KEY = 47;
const uint8_t CALIBRATION_ZEOR_MODE_HINT_KEY = 48;
const uint8_t MBC_CONFIG_HELP_KEY = 49;
/* const uint8_t MBC_INVALID_FRAME_KEY = 50;
RESOURCES: const uint8_t MBC_NO_VALID_FRAME_KEY = 51;
"Text1" const uint8_t MBC_INVALID_CHECKSUM_KEY = 52;
"PeriodMeasure (ms): " const uint8_t MBC_NOT_FOR_ME_KEY = 53;
"Alpha: " const uint8_t MBC_UNHANDLED_FRAME_KEY = 54;
"Calibration: " const uint8_t MBC_START_DELIMITER_KEY = 55;
"Info: " const uint8_t MBC_LENGTH_KEY = 56;
"Debug: " const uint8_t MBC_CFIELD_KEY = 57;
"COMPILE_TIME_DEBUG: " const uint8_t MBC_ADDRESS_KEY = 58;
"TimeOuts: " const uint8_t MBC_CIFIELD_KEY = 59;
"Cycles: " const uint8_t MBC_USERDATA_KEY = 60;
"Period (ms): " const uint8_t SPACE_KEY = 61;
"Alpha: " const uint8_t MBC_FRAMES_KEY = 62;
"index: " const uint8_t MBC_MYFRAMES_KEY = 63;
"cal: " const uint8_t MBC_INVALID_FRAMES_KEY = 64;
"t: " const uint8_t MBC_INVALID_CHECKSUM_CNT_KEY = 65;
"ts: " const uint8_t MBC_ADDRESS_LONG_KEY = 66;
", " const uint8_t MBC_COLLISION_CNT_KEY = 67;
" enable : enable the calibration mode" const uint8_t R_KEY = 68;
" disable : disable the calibration mode" const uint8_t SET_R_KEY = 69;
" show : show parameters for calibration process" const uint8_t R_EQUALS_KEY = 70;
" r : set value of calibration resistor"
" start <0..3>: start calibration on channel"
" stop <10..3>: stop calibration on channel"
" enabled : "
" r_cal : "
"setTemperature: i="
"t="
"t_smoothed="
"CONF: "
"MODE: "
"Initializing EEPROM"
"State 0"
"Switching to State 1"
"Switching to State 10"
"State 9"
"Timeout: "
"State 10"
"No, no, we are in calibration mode, so directly switch to state 20"
"Switching to state 11"
"r_avg on channel "
"calibration factor: "
"Calibration stopped"
"Save calibration factor for channel "
": "
"HELP List this help for all commands"
"command not found"
"Thermometer configuration operations"
"Show thermometer measurement values"
"Thermometer calibration operations"
END RESOURCES
*/
const String& getResource(uint8_t key); const String& getResource(uint8_t key);

View File

@ -5,28 +5,37 @@
#include "thermometer.h" #include "thermometer.h"
#include "Config.h" #include "Config.h"
#include "spi.h" #include "spi.h"
#include "meterBusClient.h"
// #define ENABLE_CONFIGURATION_INVALID_CMD 1 const unsigned char OK_LED_PIN = 2;
static CmdServer cmdServer(&Serial); static CmdServer cmdServer(&Serial);
#ifdef ENABLE_CONFIGURATION_INVALID_CMD
static ConfigInvalidateCmd configInvalidateCmd; static ConfigInvalidateCmd configInvalidateCmd;
#endif
static Uptime uptime; static Uptime uptime;
static Thermometer thermometer; static Thermometer thermometer;
static MeterBusClient meterBusClient;
void setup() { void setup() {
pinMode(OK_LED_PIN, OUTPUT);
digitalWrite(OK_LED_PIN, LOW);
// delay(5000);
Serial.begin(115200);
Config::initialize();
spiInit(); spiInit();
cmdServer.begin(); cmdServer.begin();
#ifdef ENABLE_CONFIGURATION_INVALID_CMD
configInvalidateCmd.registerYourself(&cmdServer); configInvalidateCmd.registerYourself(&cmdServer);
#endif
uptime.begin(&cmdServer); uptime.begin(&cmdServer);
thermometer.begin(&cmdServer); thermometer.begin(&cmdServer);
meterBusClient.begin(&cmdServer, &thermometer, &uptime);
digitalWrite(OK_LED_PIN, HIGH);
} }
@ -34,4 +43,5 @@ void loop() {
cmdServer.exec(); cmdServer.exec();
uptime.exec(); uptime.exec();
thermometer.exec(); thermometer.exec();
meterBusClient.exec();
} }

14
cmd.cpp
View File

@ -16,7 +16,8 @@ CmdServer::CmdServer(Stream *p_stream) :
} }
void CmdServer::begin() { void CmdServer::begin() {
((Serial_*)m_stream)->begin(9600); //((Serial*)m_stream)->begin(9600);
} }
void CmdServer::exec() { void CmdServer::exec() {
@ -24,8 +25,9 @@ void CmdServer::exec() {
bool done = false; bool done = false;
if (m_stream->available()) { if (m_stream->available()) {
char ch; int chi;
while ((ch = m_stream->read()) != -1) { while ((chi = m_stream->read()) != -1) {
char ch = (char) chi;
switch (state) { switch (state) {
case 0: case 0:
if ((ch != ' ') && (ch != '\n')) { if ((ch != ' ') && (ch != '\n')) {
@ -66,8 +68,8 @@ void CmdServer::registerCmd(Cmd *cmdObj) {
} }
void CmdServer::parseCommand() { void CmdServer::parseCommand() {
//m_client.println("cmd: " + cmd); //m_stream->println("cmd: " + cmd);
//m_client.println("params: " + params); //m_stream->println("params: " + params);
if (cmd.equalsIgnoreCase("help")) { if (cmd.equalsIgnoreCase("help")) {
for (uint8_t i = 0; i < cmdListIdx; i++) { for (uint8_t i = 0; i < cmdListIdx; i++) {
@ -78,7 +80,7 @@ void CmdServer::parseCommand() {
} else { } else {
bool found = false; bool found = false;
for (uint8_t i = 0; i < cmdListIdx; i++) { for (uint8_t i = 0; i < cmdListIdx; i++) {
// m_client.println("Check: " + cmdList[i]->getCmdName()); //m_stream->println("Check: " + cmdList[i]->getCmdName());
if (cmdList[i]->getCmdName().equalsIgnoreCase(cmd)) { if (cmdList[i]->getCmdName().equalsIgnoreCase(cmd)) {
found = true; found = true;
// m_client.println("cmd found"); // m_client.println("cmd found");

View File

@ -1,10 +1,11 @@
#include <avr/interrupt.h>
#include"fatal.h" #include"fatal.h"
#include <Arduino.h>
void fatal(uint8_t code) { void fatal(uint8_t code) {
cli(); // cli();
// do something with the code and somehow show that there is a problem // do something with the code and somehow show that there is a problem
Serial.print("Fatal: "); Serial.println(code);
while (1); while (1);
} }

393
meterBusClient.cpp Normal file
View File

@ -0,0 +1,393 @@
/*
* meterBusClient.cpp
*
* Created on: 08.03.2014
* Author: wn
*/
#include "meterBusClient.h"
const bool MBC_COMPILE_TIME_DEBUG = false;
String MeterBusClientConfig::exec(String params) {
String res = "done";
int space = params.indexOf(' ');
String p1 = "";
char pb1[128];
if (space != -1) {
params.toCharArray(pb1, 128, space+1);
}
if (params.startsWith("a ") && (space != -1)) {
unsigned int a = atoi(pb1);
m_meterBusClient->setAddress(a);
Serial.print("Address is now "); Serial.println(a);
Serial.print("MBC is at "); Serial.println((long) m_meterBusClient, 16);
} else if (params.startsWith("debug ") && (space != -1)) {
bool b = (strcmp(pb1, "on") == 0);
m_meterBusClient->setDebug(b);
} else if (params.startsWith("info ") && (space != -1)) {
bool b = (strcmp(pb1, "on") == 0);
m_meterBusClient->setInfo(b);
} else if (params.startsWith("show")) {
Serial.print(getResource(MBC_FRAMES_KEY)); Serial.print(m_meterBusClient->m_frameCnt); Serial.println();
Serial.print(getResource(MBC_MYFRAMES_KEY)); Serial.print(m_meterBusClient->m_myFrameCnt); Serial.println();
Serial.print(getResource(MBC_INVALID_FRAMES_KEY)); Serial.print(m_meterBusClient->m_invalidFrameCnt); Serial.println();
Serial.print(getResource(MBC_INVALID_CHECKSUM_CNT_KEY)); Serial.print(m_meterBusClient->m_invalidChecksum); Serial.println();
Serial.print(getResource(MBC_COLLISION_CNT_KEY)); Serial.print(m_meterBusClient->m_collisionCnt); Serial.println();
Serial.print(getResource(MBC_ADDRESS_LONG_KEY)); Serial.print(m_meterBusClient->getAddress()); Serial.println();
} else {
res = "subcommand not found";
}
return res;
}
MeterBusClient::MeterBusClient() : m_meterBusClientConfig(this), m_address(0),
m_frameCnt(0), m_accessCnt(0), m_myFrameCnt(0), m_invalidFrameCnt(0), m_invalidChecksum(0),
m_collisionCnt(0) {
}
void MeterBusClient::begin(CmdServer *cmdServer, Thermometer *thermometer, Uptime *uptime) {
Serial.print("I'm at "); Serial.println((long)this, 16);
m_meterBusClientConfig.registerYourself(cmdServer);
m_thermometer = thermometer;
m_uptime = uptime;
//Serial3.begin(1200);
//Serial3.begin(2400, SERIAL_8E1);
Serial3.begin(2400);
UART2_C1 |= UART_C1_PE | UART_C1_M;
setAddress(Config::getUChar(Config::METERBUSCLIENT_ADDRESS));
}
void MeterBusClient::setAddress(unsigned char a) {
Config::setUChar(Config::METERBUSCLIENT_ADDRESS, a);
m_address = a;
}
unsigned char MeterBusClient::getAddress() {
return m_address;
}
void MeterBusClient::setDebug(bool b) {
Config::setBool(Config::METERBUSCLIENT_DEBUG, b);
m_debug = b;
}
bool MeterBusClient::getDebug() {
return m_debug;
}
void MeterBusClient::setInfo(bool b) {
Config::setBool(Config::METERBUSCLIENT_INFO, b);
m_info = b;
}
bool MeterBusClient::getInfo() {
return m_info;
}
unsigned char MeterBusClient::getStatus() {
return 0;
}
unsigned char MeterBusClient::getAccessCnt() {
return m_accessCnt;
}
/*
* Single Character: E5h
*
* Short Frame:
* Start 10h
* C-Field
* A-Field
* Check-Sum
* Stop 16h
*
* Control Frame:
* Start 68h
* Length = 3
* Length
* Start 68h
* C-Field
* A-Field
* CI-Field
* Check-Sum
* Stop 16h
*
* Long Frame:
* Start 68h
* Length
* Length
* Start 68h
* C-Field
* A-Field
* CI-Field
* User-Data
* Check-Sum
* Stop 16h
*
* Frames:
* SND_NKE
* Short Frame, C: 40h
*
* REQ_UD2
* Short Frame, C: 5Bh
*/
bool isChecksumValid(MeterBusFrame frame) {
unsigned char ctrlsum = frame.aField + frame.cField + frame.ciField;
for (int i = 0; i < (frame.length - 3); i++) {
ctrlsum += frame.userData[i];
}
return (ctrlsum == frame.checksum);
}
bool MeterBusClient::handleFrame() {
bool res = false;
m_frameCnt++;
if (! isChecksumValid(m_frame)) {
Serial.println(getResource(MBC_INVALID_CHECKSUM_KEY));
m_invalidChecksum++;
} else if (m_frame.aField != getAddress()) {
if (MBC_COMPILE_TIME_DEBUG && getDebug()) { Serial.print(getResource(MBC_NOT_FOR_ME_KEY)); Serial.print((int)m_frame.aField, 16); Serial.println();}
} else {
m_myFrameCnt++;
// handle the frame
if (MBC_COMPILE_TIME_DEBUG && getDebug()) { Serial.print(getResource(MBC_START_DELIMITER_KEY)); Serial.println(m_frame.startDelimiter, 16);}
if (MBC_COMPILE_TIME_DEBUG && getDebug()) { Serial.print(getResource(MBC_LENGTH_KEY)); Serial.println(m_frame.length, 16);}
if (MBC_COMPILE_TIME_DEBUG && getDebug()) { Serial.print(getResource(MBC_CFIELD_KEY)); Serial.println(m_frame.cField, 16);}
if (MBC_COMPILE_TIME_DEBUG && getDebug()) { Serial.print(getResource(MBC_ADDRESS_KEY)); Serial.println(m_frame.aField, 16);}
if (MBC_COMPILE_TIME_DEBUG && getDebug()) { Serial.print(getResource(MBC_CIFIELD_KEY)); Serial.println(m_frame.ciField, 16);}
if (m_frame.length > 3) {
if (MBC_COMPILE_TIME_DEBUG && getDebug()) { Serial.print(getResource(MBC_USERDATA_KEY));}
for (unsigned char i = 0; i < (m_frame.length - 3); i++) {
if (MBC_COMPILE_TIME_DEBUG && getDebug()) { Serial.print(m_frame.userData[i], 16);}
if (MBC_COMPILE_TIME_DEBUG && getDebug()) { Serial.print(getResource(SPACE_KEY));}
}
if (MBC_COMPILE_TIME_DEBUG && getDebug()) { Serial.println();}
}
if (m_frame.startDelimiter == 0x10) {
if (m_frame.cField == 0x40) {
SND_NKE();
res = true;
} else if (m_frame.cField == 0x5b) {
m_accessCnt++;
REQ_UD2();
res = true;
} else {
Serial.println(getResource(MBC_UNHANDLED_FRAME_KEY));
}
}
}
return res;
}
typedef enum {
STATE_START, STATE_IDLE, STATE_SHORT_FRAME, STATE_LONG_CTRL_FRAME, STATE_HANDLE, STATE_INVALID, STATE_DONE,
STATE_DELAYED_RESPONSE, STATE_DELAY, STATE_RESPONSE, STATE_RECEIVE_ECHO
} e_meterBusClientState;
typedef enum {
SUBSTATE_LENGTH, SUBSTATE_LENGTH_REPEAT, SUBSTATE_START_REPEAT, SUBSTATE_C_FIELD, SUBSTATE_A_FIELD, SUBSTATE_CI_FIELD,
SUBSTATE_USERDATA, SUBSTATE_CHECKSUM, SUBSTATE_STOP
} e_meterBusClientSubState;
void MeterBusClient::exec() {
static e_meterBusClientState state = STATE_IDLE;
static e_meterBusClientSubState subState = SUBSTATE_LENGTH;
static unsigned char userDataCnt = 0;
static unsigned int echoReceiveCnt = 0;
static unsigned long receivedDoneTimestamp;
int chi = Serial3.read();
//if (chi != -1) {
// Serial.print("Received: "); Serial.println(chi, 16);
//}
char ch = (char) chi;
switch (state) {
case STATE_START:
m_frame.startDelimiter = 0;
m_frame.length = 0;
m_frame.cField = 0;
m_frame.aField = 0;
m_frame.ciField = 0;
//memset(m_frame.userData, 0, sizeof(m_frame.userData));
m_frame.valid = false;
state = STATE_IDLE;
break;
case STATE_IDLE:
if (chi != -1) {
if (ch == 0x10) {
m_frame.startDelimiter = 0x10;
state = STATE_SHORT_FRAME;
subState = SUBSTATE_C_FIELD;
} else if (ch == 0x68) {
m_frame.startDelimiter = 0x68;
state = STATE_LONG_CTRL_FRAME;
subState = SUBSTATE_LENGTH;
} else {
state = STATE_INVALID;
}
}
break;
case STATE_SHORT_FRAME:
if (chi != -1) {
if (subState == SUBSTATE_C_FIELD) {
m_frame.cField = ch;
subState = SUBSTATE_A_FIELD;
} else if (subState == SUBSTATE_A_FIELD) {
m_frame.aField = ch;
subState = SUBSTATE_CHECKSUM;
} else if (subState == SUBSTATE_CHECKSUM) {
m_frame.checksum = ch;
subState = SUBSTATE_STOP;
} else if (subState == SUBSTATE_STOP) {
if (ch == 0x16) {
m_frame.valid = true;
state = STATE_HANDLE;
} else {
state = STATE_INVALID;
}
}
}
break;
case STATE_LONG_CTRL_FRAME:
if (chi != -1) {
if (subState == SUBSTATE_LENGTH) {
m_frame.length = ch;
if ((m_frame.length < 3) || (m_frame.length > 252)) {
state = STATE_INVALID;
} else {
subState = SUBSTATE_LENGTH_REPEAT;
}
} else if (subState == SUBSTATE_LENGTH_REPEAT) {
if (ch == m_frame.length) {
subState = SUBSTATE_START_REPEAT;
} else {
state = STATE_INVALID;
}
} else if (subState == SUBSTATE_START_REPEAT) {
if (ch == 0x68) {
subState = SUBSTATE_C_FIELD;
} else {
state = STATE_INVALID;
}
} else if (subState == SUBSTATE_C_FIELD) {
m_frame.cField = ch;
subState = SUBSTATE_A_FIELD;
} else if (subState == SUBSTATE_A_FIELD) {
m_frame.aField = ch;
subState = SUBSTATE_CI_FIELD;
} else if (subState == SUBSTATE_CI_FIELD) {
m_frame.ciField = ch;
if (m_frame.length == 3) {
subState = SUBSTATE_CHECKSUM;
} else {
subState = SUBSTATE_USERDATA;
userDataCnt = 0;
}
} else if (subState == SUBSTATE_USERDATA) {
m_frame.userData[userDataCnt] = ch;
userDataCnt++;
if (userDataCnt >= (m_frame.length - 3)) {
subState = SUBSTATE_CHECKSUM;
}
} else if (subState == SUBSTATE_CHECKSUM) {
m_frame.checksum = ch;
subState = SUBSTATE_STOP;
} else if (subState == SUBSTATE_STOP) {
if (ch == 0x16) {
m_frame.valid = true;
state = STATE_HANDLE;
} else {
state = STATE_INVALID;
}
}
}
break;
case STATE_INVALID:
Serial.println("INVALID FRAME");
m_invalidFrameCnt++;
state = STATE_START;
break;
case STATE_HANDLE:
state = STATE_DONE;
if (m_frame.valid) {
receivedDoneTimestamp = millis();
if (handleFrame()) {
state = STATE_DELAY;
}
}
break;
case STATE_DELAY:
if ((receivedDoneTimestamp + RESPONSE_DELAY) < millis()) {
state = STATE_DELAYED_RESPONSE;
}
break;
case STATE_DELAYED_RESPONSE:
for (unsigned int i = 0; i < m_sendBufferLen; i++) {
Serial3.write(m_sendBuffer[i]);
}
echoReceiveCnt = 0;
state = STATE_RECEIVE_ECHO;
break;
case STATE_RECEIVE_ECHO:
if (chi != -1) {
//Serial.println("echo character");
if (ch == m_sendBuffer[echoReceiveCnt]) {
echoReceiveCnt++;
if (echoReceiveCnt == m_sendBufferLen) {
state = STATE_DONE;
}
} else {
m_collisionCnt++;
state = STATE_DONE;
}
}
break;
case STATE_DONE:
// may be another useful message
state = STATE_START;
break;
}
}

120
meterBusClient.h Normal file
View File

@ -0,0 +1,120 @@
/*
* meterBusClient.h
*
* Created on: 08.03.2014
* Author: wn
*/
#ifndef METERBUSCLIENT_H_
#define METERBUSCLIENT_H_
#include "cmd.h"
#include "Config.h"
#include "Resources.h"
#include "Thermometer.h"
#include "uptime.h"
const unsigned long RESPONSE_DELAY = 50;
class MeterBusClient;
class MeterBusClientConfig : public Cmd {
public:
MeterBusClientConfig(MeterBusClient *meterBusClient) : m_meterBusClient(meterBusClient) { };
virtual String getCmdName() { return "MBCC"; }
virtual String getHelp() { return getResource(MBC_CONFIG_HELP_KEY); }
virtual String exec(String params);
private:
MeterBusClient *m_meterBusClient;
};
struct MeterBusFrame {
/*
* Short Frame:
* Start 10h
* C-Field
* A-Field
* Check-Sum
* Stop 16h
*
* Long Frame:
* Start 68h
* Length
* Length
* Start 68h
* C-Field
* A-Field
* CI-Field
* User-Data
* Check-Sum
* Stop 16h
*
*/
unsigned char startDelimiter;
unsigned char length;
unsigned char cField;
unsigned char aField;
unsigned char ciField;
unsigned char userData[255];
unsigned char checksum;
bool valid;
};
class MeterBusClient {
public:
MeterBusClient();
void begin(CmdServer *cmdServer, Thermometer *thermometer, Uptime *uptime);
void exec();
friend class MeterBusClientConfig;
private:
MeterBusClientConfig m_meterBusClientConfig;
Thermometer *m_thermometer;
Uptime *m_uptime;
unsigned char m_address;
void setAddress(unsigned char address);
unsigned char getAddress();
bool handleFrame();
MeterBusFrame m_frame;
unsigned char m_sendBuffer[265];
unsigned int m_sendBufferLen;
void aSB(unsigned char v); // append to send buffer
void aSB(unsigned int v);
void aSB(unsigned long v);
void aSB(float v);
unsigned char calcSendChecksum();
void calcAndSetFrameLength();
unsigned long m_frameCnt;
unsigned char m_accessCnt;
unsigned long m_myFrameCnt;
unsigned long m_invalidFrameCnt;
unsigned long m_invalidChecksum;
unsigned long m_collisionCnt;
unsigned char getAccessCnt();
unsigned char getStatus();
bool m_debug;
bool getDebug();
void setDebug(bool b);
bool m_info;
bool getInfo();
void setInfo(bool b);
void SND_NKE();
void REQ_UD2();
};
#endif /* METERBUSCLIENT_H_ */

190
meterBusClientFrames.cpp Normal file
View File

@ -0,0 +1,190 @@
/*
* meterBusClientFrames.cpp
*
* Created on: 09.03.2014
* Author: wn
*/
#include "meterBusClient.h"
void MeterBusClient::aSB(unsigned char v) {
m_sendBuffer[m_sendBufferLen] = v;
m_sendBufferLen++;
}
void MeterBusClient::aSB(unsigned int v) {
// 16 bit
union {
unsigned int i;
unsigned char c[2];
} u;
u.i = v;
m_sendBuffer[m_sendBufferLen] = u.c[0];
m_sendBufferLen++;
m_sendBuffer[m_sendBufferLen] = u.c[1];
m_sendBufferLen++;
}
void MeterBusClient::aSB(unsigned long v) {
// 32 bit
union{
unsigned long l;
unsigned char c[4];
} u;
u.l = v;
m_sendBuffer[m_sendBufferLen] = u.c[0];
m_sendBufferLen++;
m_sendBuffer[m_sendBufferLen] = u.c[1];
m_sendBufferLen++;
m_sendBuffer[m_sendBufferLen] = u.c[2];
m_sendBufferLen++;
m_sendBuffer[m_sendBufferLen] = u.c[3];
m_sendBufferLen++;
}
void MeterBusClient::aSB(float v) {
// 32 bit
union{
float f;
unsigned char c[4];
} u;
u.f = v;
m_sendBuffer[m_sendBufferLen] = u.c[0];
m_sendBufferLen++;
m_sendBuffer[m_sendBufferLen] = u.c[1];
m_sendBufferLen++;
m_sendBuffer[m_sendBufferLen] = u.c[2];
m_sendBufferLen++;
m_sendBuffer[m_sendBufferLen] = u.c[3];
m_sendBufferLen++;
}
unsigned char MeterBusClient::calcSendChecksum() {
unsigned char checksum = 0;
for (unsigned int i = 4; i < m_sendBufferLen; i++) {
checksum += m_sendBuffer[i];
}
return checksum;
}
void MeterBusClient::calcAndSetFrameLength() {
unsigned char frameLength = m_sendBufferLen - 6;
m_sendBuffer[1] = frameLength;
m_sendBuffer[2] = frameLength;
}
void MeterBusClient::SND_NKE() {
m_sendBufferLen = 0;
aSB((unsigned char)0xE5);
}
void MeterBusClient::REQ_UD2() {
m_sendBufferLen = 0;
// frame header
aSB((unsigned char)0x68);
aSB((unsigned char)0x00);
aSB((unsigned char)0x00);
aSB((unsigned char)0x68);
// C
aSB((unsigned char)0x08);
// A
aSB(getAddress());
// CI
aSB((unsigned char)0x72);
// Header
aSB((unsigned long)0); // Ident
aSB((unsigned int)0); // Manu.
aSB((unsigned char)1); // Version
aSB((unsigned char)0); // Medium: other
aSB(getAccessCnt()); // Access
aSB(getStatus()); // Status
aSB((unsigned int)0); // Signatur
// Uptime
// DIF
aSB((unsigned char)0x01);
// VIF
aSB((unsigned char)0x24);
aSB(m_uptime->getSeconds());
// DIF
aSB((unsigned char)0x01);
// VIF
aSB((unsigned char)0x25);
aSB(m_uptime->getMinutes());
// DIF
aSB((unsigned char)0x01);
// VIF
aSB((unsigned char)0x26);
aSB(m_uptime->getHours());
// DIF
aSB((unsigned char)0x02);
// VIF
aSB((unsigned char)0x27);
aSB((unsigned int)m_uptime->getDays());
// Temperatur 1
// DIF
aSB((unsigned char)0x05);
// VIF
aSB((unsigned char)0x67);
// value
aSB(m_thermometer->getTemperature(0));
// Temperatur 2
// DIF
aSB((unsigned char)0x05);
// VIF
aSB((unsigned char)0x67);
// value
aSB(m_thermometer->getTemperature(1));
// Temperatur 3
// DIF
aSB((unsigned char)0x05);
// VIF
aSB((unsigned char)0x67);
// value
aSB(m_thermometer->getTemperature(2));
// Temperatur 4
// DIF
aSB((unsigned char)0x05);
// VIF
aSB((unsigned char)0x67);
// value
aSB(m_thermometer->getTemperature(3));
// Structured Manufacturer Data
// DIF
aSB((unsigned char)0x0f);
aSB(m_frameCnt);
aSB(m_myFrameCnt);
aSB(m_invalidFrameCnt);
aSB(m_invalidChecksum);
aSB(m_collisionCnt);
aSB(m_thermometer->getCalibrateFactor(0));
aSB(m_thermometer->getCalibrateFactor(1));
aSB(m_thermometer->getCalibrateFactor(2));
aSB(m_thermometer->getCalibrateFactor(3));
aSB(m_thermometer->getAlpha());
aSB(m_thermometer->getPeriodMeasure());
aSB(calcSendChecksum());
aSB((unsigned char)0x16);
calcAndSetFrameLength();
}

View File

@ -13,6 +13,6 @@ void spiInit() {
SPI.begin(); SPI.begin();
SPI.setBitOrder(MSBFIRST); SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV64); SPI.setClockDivider(SPI_CLOCK_DIV4);
SPI.setDataMode(SPI_MODE3); SPI.setDataMode(SPI_MODE3);
} }

View File

@ -63,8 +63,9 @@ String ThermValues::exec(String params) {
for (unsigned int i = 0; i < NUM_OF_CHANNELS; i++) { for (unsigned int i = 0; i < NUM_OF_CHANNELS; i++) {
m_stream->print(getResource(INDEX_KEY)); m_stream->print(i); m_stream->print(getResource(COMMA_SPACE_KEY)); m_stream->print(getResource(INDEX_KEY)); m_stream->print(i); m_stream->print(getResource(COMMA_SPACE_KEY));
m_stream->print(getResource(CAL_KEY)); m_stream->print(m_thermometer->getCalibrateFactor(i), 6); m_stream->print(getResource(COMMA_SPACE_KEY)); m_stream->print(getResource(CAL_KEY)); m_stream->print(m_thermometer->getCalibrateFactor(i), 6); m_stream->print(getResource(COMMA_SPACE_KEY));
m_stream->print(getResource(T_KEY)); m_stream->print(m_thermometer->m_temperature[i]); m_stream->print(getResource(COMMA_SPACE_KEY)); m_stream->print(getResource(R_KEY)); m_stream->print(m_thermometer->m_r[i], 2); m_stream->print(getResource(COMMA_SPACE_KEY));
m_stream->print(getResource(TS_KEY)); m_stream->print(m_thermometer->m_smoothedTemperature[i]); m_stream->print(getResource(T_KEY)); m_stream->print(m_thermometer->m_temperature[i], 2); m_stream->print(getResource(COMMA_SPACE_KEY));
m_stream->print(getResource(TS_KEY)); m_stream->print(m_thermometer->m_smoothedTemperature[i], 2);
m_stream->println(); m_stream->println();
} }
@ -72,7 +73,7 @@ String ThermValues::exec(String params) {
} }
ThermCalibrate::ThermCalibrate(Thermometer *thermometer) : m_thermometer(thermometer), m_enabled(false), ThermCalibrate::ThermCalibrate(Thermometer *thermometer) : m_thermometer(thermometer), m_enabled(false),
m_start_calibration(false), m_r_cal(1500.0) { m_start_highCalibration(false), m_start_zeroCalibration(false), m_r_cal(1000.0) {
} }
@ -97,15 +98,10 @@ String ThermCalibrate::exec(String params) {
m_stream->println(getResource(CALI_HELP_4_KEY)); m_stream->println(getResource(CALI_HELP_4_KEY));
m_stream->println(getResource(CALI_HELP_5_KEY)); m_stream->println(getResource(CALI_HELP_5_KEY));
m_stream->println(getResource(CALI_HELP_6_KEY)); m_stream->println(getResource(CALI_HELP_6_KEY));
} else if (params.startsWith("start ") && (space != -1) && m_enabled) { } else if (params.startsWith("start") && m_enabled) {
m_channel = atoi(pb1); m_start_highCalibration = true;
if ((m_channel + 1) > NUM_OF_CHANNELS) {
res = "Invalid channel number";
} else {
m_start_calibration = true;
}
} else if (params.startsWith("stop")) { } else if (params.startsWith("stop")) {
m_start_calibration = false; m_start_highCalibration = false;
} else if (params.startsWith("r ") && (space != -1)) { } else if (params.startsWith("r ") && (space != -1)) {
m_r_cal = atof(pb1); m_r_cal = atof(pb1);
} else if (params.equalsIgnoreCase("show")) { } else if (params.equalsIgnoreCase("show")) {
@ -121,7 +117,7 @@ Thermometer::Thermometer() : m_periodMillis(DEFAULT_PERIOD),
m_debug(DEBUG), m_info(INFO), m_debug(DEBUG), m_info(INFO),
thermConfig(this), thermValues(this), thermCalibrate(this), thermConfig(this), thermValues(this), thermCalibrate(this),
m_timeOutFailureCnt(0), m_cylceCnt(0), m_alpha(1.0), m_timeOutFailureCnt(0), m_cylceCnt(0), m_alpha(1.0),
m_calibrationMode(false) m_calibrationHighMode(false)
{ {
for (unsigned int i = 0; i < NUM_OF_CHANNELS; i++) { for (unsigned int i = 0; i < NUM_OF_CHANNELS; i++) {
m_lastSmoothedTemperature[i] = INVALID_TEMPERATURE; m_lastSmoothedTemperature[i] = INVALID_TEMPERATURE;
@ -181,6 +177,14 @@ float pt1000(float r) {
return (r / PT1000_R0 - 1) / PT1000_Coeff; return (r / PT1000_R0 - 1) / PT1000_Coeff;
} }
void Thermometer::setR(unsigned int index, float r) {
m_r[index] = r;
if (getDebug() || getInfo()) {
Serial.print(getResource(SET_R_KEY)); Serial.print(index); Serial.print(getResource(COMMA_SPACE_KEY));
Serial.print(getResource(R_EQUALS_KEY)); Serial.print(r, 2); Serial.println();
}
}
void Thermometer::setTemperature(unsigned int index, float t) { void Thermometer::setTemperature(unsigned int index, float t) {
m_temperature[index] = t; m_temperature[index] = t;
@ -198,6 +202,10 @@ void Thermometer::setTemperature(unsigned int index, float t) {
m_lastSmoothedTemperature[index] = m_smoothedTemperature[index]; m_lastSmoothedTemperature[index] = m_smoothedTemperature[index];
} }
float Thermometer::getTemperature(unsigned int index) {
return m_temperature[index];
}
void Thermometer::prepareAdc() { void Thermometer::prepareAdc() {
unsigned long oldRegValue = AD7190_GetRegisterValue(AD7190_REG_CONF, 3, 1); unsigned long oldRegValue = AD7190_GetRegisterValue(AD7190_REG_CONF, 3, 1);
oldRegValue &= ~(AD7190_CONF_CHAN(0xFF)); oldRegValue &= ~(AD7190_CONF_CHAN(0xFF));
@ -253,17 +261,6 @@ void Thermometer::begin(CmdServer *cmdServer) {
AD7190_Calibrate(AD7190_MODE_CAL_INT_FULL, AD7190_CH_AIN1P_AINCOM); AD7190_Calibrate(AD7190_MODE_CAL_INT_FULL, AD7190_CH_AIN1P_AINCOM);
if (! Config::isInitialized()) {
Serial.println(getResource(THERMOMETER_BEGIN_1_KEY));
Config::setFloat(Config::THERMOMETER_ALPHA, 1.0);
Config::setULong(Config::THERMOMETER_PERIOD, 1000);
for (int i = 0; i < 4; i++) {
Config::setFloat(Config::THERMOMETER_CAL[i], 1.0);
}
Config::setBool(Config::THERMOMETER_DEBUG, true);
Config::setBool(Config::THERMOMETER_INFO, true);
Config::setMagic();
}
setAlpha(Config::getFloat(Config::THERMOMETER_ALPHA)); setAlpha(Config::getFloat(Config::THERMOMETER_ALPHA));
setPeriodMeasure(Config::getULong(Config::THERMOMETER_PERIOD)); setPeriodMeasure(Config::getULong(Config::THERMOMETER_PERIOD));
@ -273,12 +270,7 @@ void Thermometer::begin(CmdServer *cmdServer) {
setDebug(Config::getBool(Config::THERMOMETER_DEBUG)); setDebug(Config::getBool(Config::THERMOMETER_DEBUG));
setInfo(Config::getBool(Config::THERMOMETER_INFO)); setInfo(Config::getBool(Config::THERMOMETER_INFO));
//setCalibrateFactor(0, 1.002999);
//setCalibrateFactor(1, 1.001804);
//setCalibrateFactor(2, 1.000794);
//setCalibrateFactor(3, 1.001071);
// prepare
prepareAdc(); prepareAdc();
} }
@ -356,9 +348,12 @@ void Thermometer::exec() {
SPI_Disable(AD7190_SLAVE_ID); SPI_Disable(AD7190_SLAVE_ID);
if (m_calibrationMode || thermCalibrate.m_start_calibration) { if (m_calibrationHighMode || thermCalibrate.m_start_highCalibration) {
Serial.println(getResource(CALIBRATION_MODE_HINT_KEY)); if (getDebug()) { Serial.println(getResource(CALIBRATION_MODE_HINT_KEY)); }
state = 20; state = 20;
} else if (m_calibrationZeroMode || thermCalibrate.m_start_zeroCalibration) {
Serial.println(getResource(CALIBRATION_ZEOR_MODE_HINT_KEY));
state = 21;
} else { } else {
for (unsigned int i = 0; i < NUM_OF_CHANNELS; i++) { for (unsigned int i = 0; i < NUM_OF_CHANNELS; i++) {
if (COMPILE_TIME_DEBUG && getDebug()) { Serial.print("i="); Serial.print(i); Serial.print(getResource(COMMA_SPACE_KEY)); } if (COMPILE_TIME_DEBUG && getDebug()) { Serial.print("i="); Serial.print(i); Serial.print(getResource(COMMA_SPACE_KEY)); }
@ -367,6 +362,7 @@ void Thermometer::exec() {
if (COMPILE_TIME_DEBUG && getDebug()) { Serial.print("calibrateFactor="); Serial.print(getCalibrateFactor(i), 6); Serial.print(getResource(COMMA_SPACE_KEY)); } if (COMPILE_TIME_DEBUG && getDebug()) { Serial.print("calibrateFactor="); Serial.print(getCalibrateFactor(i), 6); Serial.print(getResource(COMMA_SPACE_KEY)); }
float r = (((float)(m_n[i] - ((i == 3) ? 0 : m_n[i + 1]))) / ((float)N_MAX)) * R_REF * getCalibrateFactor(i); float r = (((float)(m_n[i] - ((i == 3) ? 0 : m_n[i + 1]))) / ((float)N_MAX)) * R_REF * getCalibrateFactor(i);
if (COMPILE_TIME_DEBUG && getDebug()) { Serial.print("r="); Serial.print(r); Serial.print(getResource(COMMA_SPACE_KEY)); } if (COMPILE_TIME_DEBUG && getDebug()) { Serial.print("r="); Serial.print(r); Serial.print(getResource(COMMA_SPACE_KEY)); }
setR(i, r);
float t = pt1000(r); float t = pt1000(r);
if (COMPILE_TIME_DEBUG && getDebug()) { Serial.print("t="); Serial.print(t); Serial.print(getResource(COMMA_SPACE_KEY)); } if (COMPILE_TIME_DEBUG && getDebug()) { Serial.print("t="); Serial.print(t); Serial.print(getResource(COMMA_SPACE_KEY)); }
if (COMPILE_TIME_DEBUG && getDebug()) { Serial.println(); } if (COMPILE_TIME_DEBUG && getDebug()) { Serial.println(); }
@ -391,47 +387,68 @@ void Thermometer::exec() {
break; break;
case 20: case 20:
if (thermCalibrate.m_start_calibration) { if (thermCalibrate.m_start_highCalibration) {
if (m_calibrationMode) { if (m_calibrationHighMode) {
// do the calibration stuff // do the calibration stuff
(thermCalibrate.m_turn)++;
for (unsigned int i = 0; i < NUM_OF_CHANNELS; i++) { for (unsigned int i = 0; i < NUM_OF_CHANNELS; i++) {
float r = (((float)(m_n[i] - ((i == 3) ? 0 : m_n[i + 1]))) / ((float)N_MAX)) * R_REF; float r = (((float)(m_n[i] - ((i == 3) ? 0 : m_n[i + 1]))) / ((float)N_MAX)) * R_REF;
Serial.print("t="); Serial.print(thermCalibrate.m_turn); Serial.print(", c="); Serial.print(i); if (COMPILE_TIME_DEBUG && getDebug()) { Serial.print("t="); Serial.print(thermCalibrate.m_turn); Serial.print(", c="); Serial.print(i); }
Serial.print(", r="); Serial.print(r, 6); Serial.print(", n="); Serial.print(m_n[i]); if (COMPILE_TIME_DEBUG && getDebug()) { Serial.print(", r="); Serial.print(r, 6); Serial.print(", n="); Serial.print(m_n[i]); }
if (i == thermCalibrate.m_channel) { thermCalibrate.m_r_sum[i] += r;
thermCalibrate.m_r_sum += r; float r_avg = thermCalibrate.m_r_sum[i] / thermCalibrate.m_turn;
} if (getDebug() || getInfo()) { Serial.print(thermCalibrate.m_turn); Serial.print(getResource(COMMA_SPACE_KEY)); Serial.print(getResource(STATE_20_MSG_1_KEY)); Serial.print(i); Serial.print(getResource(COLON_SPACE_KEY)); Serial.print(r_avg, 6); }
}
(thermCalibrate.m_turn)++;
float r_avg = thermCalibrate.m_r_sum / thermCalibrate.m_turn;
Serial.print(getResource(STATE_20_MSG_1_KEY)); Serial.print(thermCalibrate.m_channel); Serial.print(getResource(COLON_SPACE_KEY)); Serial.print(r_avg, 6);
float calFact = thermCalibrate.m_r_cal / r_avg; float calFact = thermCalibrate.m_r_cal / r_avg;
Serial.print(getResource(STATE_20_MSG_2_KEY)); Serial.print(calFact, 6); Serial.println(); if (getDebug() || getInfo()) { Serial.print(getResource(COMMA_SPACE_KEY)); Serial.print(getResource(STATE_20_MSG_2_KEY)); Serial.print(calFact, 6); Serial.println(); }
}
if ((thermCalibrate.m_turn) >= NUM_OF_CALIBRATION_CYCLES) {
thermCalibrate.m_start_highCalibration = false;
}
} else { } else {
thermCalibrate.m_preserved_alpha = m_alpha; thermCalibrate.m_preserved_alpha = m_alpha;
m_alpha = 1; m_alpha = 1;
thermCalibrate.m_preserved_period = m_periodMillis; thermCalibrate.m_preserved_period = m_periodMillis;
m_periodMillis = 500; m_periodMillis = CALIBRATION_CYCLE_TIME;
thermCalibrate.m_r_sum = 0.0; for (unsigned int i = 0; i < NUM_OF_CHANNELS; i++) {
thermCalibrate.m_r_sum[i] = 0.0;
}
thermCalibrate.m_turn = 0; thermCalibrate.m_turn = 0;
m_calibrationMode = true; m_calibrationHighMode = true;
} }
} else { } else {
// end calibrationMode // end calibrationMode
m_calibrationMode = false; m_calibrationHighMode = false;
m_alpha = thermCalibrate.m_preserved_alpha; m_alpha = thermCalibrate.m_preserved_alpha;
m_periodMillis = thermCalibrate.m_preserved_period; m_periodMillis = thermCalibrate.m_preserved_period;
for (unsigned int i = 0; i < NUM_OF_CHANNELS; i++) {
Serial.println(getResource(STATE_20_MSG_3_KEY)); Serial.println(getResource(STATE_20_MSG_3_KEY));
float r_avg = thermCalibrate.m_r_sum / thermCalibrate.m_turn; float r_avg = thermCalibrate.m_r_sum[i] / thermCalibrate.m_turn;
float calFact = thermCalibrate.m_r_cal / r_avg; float calFact = thermCalibrate.m_r_cal / r_avg;
Serial.print(getResource(STATE_20_MSG_4_KEY)); Serial.print(thermCalibrate.m_channel);
Serial.print(getResource(STATE_20_MSG_4_KEY)); Serial.print(i);
Serial.print(getResource(COLON_SPACE_KEY)); Serial.print(calFact, 6); Serial.println(); Serial.print(getResource(COLON_SPACE_KEY)); Serial.print(calFact, 6); Serial.println();
setCalibrateFactor(thermCalibrate.m_channel, calFact); setCalibrateFactor(i, calFact);
}
} }
state = 11; state = 11;
break; break;
case 21:
if (thermCalibrate.m_start_zeroCalibration) {
if (m_calibrationZeroMode) {
// do the calibration stuff
} else {
m_calibrationZeroMode = true;
}
} else {
// end calibrationMode
m_calibrationZeroMode = false;
}
state = 11;
break;
default: default:
fatal(FATAL_ILLEGAL_STATE); fatal(FATAL_ILLEGAL_STATE);

View File

@ -17,10 +17,12 @@ const bool INFO = true;
const unsigned long DEFAULT_PERIOD = 1000; const unsigned long DEFAULT_PERIOD = 1000;
const unsigned int NUM_OF_CHANNELS = 4; const unsigned int NUM_OF_CHANNELS = 4;
const unsigned long N_MAX = 0xffffff; const unsigned long N_MAX = 0xffffff;
const float R_REF = 6000.0; const float R_REF = 6200.0;
const float PT1000_R0 = 1000.0; const float PT1000_R0 = 1000.0;
const float PT1000_Coeff = 3.85e-3; const float PT1000_Coeff = 3.85e-3;
const unsigned long CONV_TIMEOUT = 0xfffff; const unsigned long CONV_TIMEOUT = 0xfffff;
const unsigned long NUM_OF_CALIBRATION_CYCLES = 250;
const unsigned long CALIBRATION_CYCLE_TIME = 10; // ms
@ -56,13 +58,13 @@ public:
private: private:
Thermometer *m_thermometer; Thermometer *m_thermometer;
bool m_enabled; bool m_enabled;
bool m_start_calibration; bool m_start_highCalibration;
bool m_start_zeroCalibration;
float m_r_cal; float m_r_cal;
float m_preserved_alpha; float m_preserved_alpha;
unsigned long m_preserved_period; unsigned long m_preserved_period;
unsigned int m_channel;
unsigned int m_turn; unsigned int m_turn;
float m_r_sum; float m_r_sum[NUM_OF_CHANNELS];
}; };
class Thermometer { class Thermometer {
@ -72,6 +74,10 @@ public:
void exec(); void exec();
friend class ThermConfig; friend class ThermConfig;
friend class ThermValues; friend class ThermValues;
float getTemperature(unsigned int index);
float getCalibrateFactor(unsigned int i);
unsigned long getPeriodMeasure();
float getAlpha();
private: private:
unsigned long m_periodMillis; unsigned long m_periodMillis;
@ -84,6 +90,7 @@ private:
unsigned long m_n[NUM_OF_CHANNELS]; unsigned long m_n[NUM_OF_CHANNELS];
float m_calibrateFactor[NUM_OF_CHANNELS]; float m_calibrateFactor[NUM_OF_CHANNELS];
float m_r[NUM_OF_CHANNELS];
float m_temperature[NUM_OF_CHANNELS]; float m_temperature[NUM_OF_CHANNELS];
float m_lastSmoothedTemperature[NUM_OF_CHANNELS]; float m_lastSmoothedTemperature[NUM_OF_CHANNELS];
float m_smoothedTemperature[NUM_OF_CHANNELS]; float m_smoothedTemperature[NUM_OF_CHANNELS];
@ -92,18 +99,17 @@ private:
float m_alpha; float m_alpha;
bool m_calibrationMode; bool m_calibrationHighMode;
bool m_calibrationZeroMode;
void startSingleConv(); void startSingleConv();
void prepareAdc(); void prepareAdc();
void setTemperature(unsigned int index, float t); void setTemperature(unsigned int index, float t);
void setR(unsigned int index, float r);
void setPeriodMeasure(unsigned long p); void setPeriodMeasure(unsigned long p);
unsigned long getPeriodMeasure();
void setAlpha(float a); void setAlpha(float a);
float getAlpha();
void setCalibrateFactor(unsigned int i, float c); void setCalibrateFactor(unsigned int i, float c);
float getCalibrateFactor(unsigned int i);
void setDebug(bool b); void setDebug(bool b);
bool getDebug(); bool getDebug();
void setInfo(bool b); void setInfo(bool b);

View File

@ -26,7 +26,7 @@ public:
uint8_t getSeconds() { return m_seconds; }; uint8_t getSeconds() { return m_seconds; };
uint8_t getMinutes() { return m_minutes; }; uint8_t getMinutes() { return m_minutes; };
uint8_t getHours() { return m_hours; }; uint8_t getHours() { return m_hours; };
uint8_t getDays() { return m_days; }; uint16_t getDays() { return m_days; };
private: private:
UptimeCmd m_uptimeCmd; UptimeCmd m_uptimeCmd;
uint8_t m_seconds; uint8_t m_seconds;