Merge pull request #19 from davidgiven/long

Add support for long intervals
This commit is contained in:
David Given
2019-02-23 20:30:37 +01:00
committed by GitHub
21 changed files with 413 additions and 96 deletions

View File

@@ -32,7 +32,7 @@
<Data key="check_tolerance" value="True" />
<Data key="clock_version" value="v1" />
<Data key="derive_type" value="NAMED_FREQ" />
<Data key="desired_freq" value="16" />
<Data key="desired_freq" value="12" />
<Data key="desired_unit" value="6" />
<Data key="divider" value="2" />
<Data key="domain" value="DIGITAL" />
@@ -99,6 +99,30 @@
<Data key="sync_with_bus_clk" value="True" />
<Data key="user_set_domain" value="False" />
</Group>
<Group key="66f14071-bddd-4b4d-a9aa-a129cceaa7b6">
<Data key="check_tolerance" value="True" />
<Data key="clock_version" value="v1" />
<Data key="derive_type" value="NAMED_DIVIDER" />
<Data key="desired_freq" value="0" />
<Data key="desired_unit" value="15" />
<Data key="divider" value="0" />
<Data key="domain" value="DIGITAL" />
<Data key="enabled" value="True" />
<Data key="minus_accuracy" value="0.25" />
<Data key="minus_tolerance" value="5" />
<Data key="name" value="Clock_3" />
<Data key="named_src_direct_connect" value="True" />
<Data key="netlist_name" value="Clock_3" />
<Data key="placement" value="AUTO" />
<Data key="plus_accuracy" value="0.25" />
<Data key="plus_tolerance" value="5" />
<Data key="scope" value="LOCAL" />
<Data key="src_clk_id" value="75C2148C-3656-4d8a-846D-0CAE99AB6FF7" />
<Data key="src_clk_name" value="BUS_CLK" />
<Data key="start_on_reset" value="True" />
<Data key="sync_with_bus_clk" value="True" />
<Data key="user_set_domain" value="False" />
</Group>
<Group key="349ffa20-8576-4ac3-9a6f-34ef606de6cf">
<Data key="check_tolerance" value="True" />
<Data key="clock_version" value="v1" />
@@ -248,9 +272,9 @@
<Data key="clock_version" value="v1" />
<Data key="derive_type" value="BUILTIN" />
<Data key="desired_freq" value="0" />
<Data key="desired_unit" value="0" />
<Data key="desired_unit" value="15" />
<Data key="divider" value="0" />
<Data key="domain" value="DIGITAL" />
<Data key="domain" value="0" />
<Data key="enabled" value="False" />
<Data key="minus_accuracy" value="0" />
<Data key="minus_tolerance" value="0" />
@@ -270,7 +294,7 @@
<Data key="check_tolerance" value="True" />
<Data key="clock_version" value="v1" />
<Data key="derive_type" value="BUILTIN" />
<Data key="desired_freq" value="48" />
<Data key="desired_freq" value="64" />
<Data key="desired_unit" value="6" />
<Data key="divider" value="0" />
<Data key="domain" value="0" />
@@ -357,7 +381,7 @@
<Data key="desired_freq" value="0" />
<Data key="desired_unit" value="0" />
<Data key="divider" value="1" />
<Data key="domain" value="DIGITAL" />
<Data key="domain" value="0" />
<Data key="enabled" value="True" />
<Data key="master_divider_used" value="True" />
<Data key="minus_accuracy" value="0.25" />
@@ -492,6 +516,7 @@
<Data key="06c4d5d4-f15f-4b29-a1d0-c24b2e38b1ec" value="CounterClock" />
<Data key="24cd38f7-f472-4403-837f-86807c8f5333" value="PULSE_CLOCK" />
<Data key="63ed4137-0b09-4256-8a27-35c9a2653f1a" value="Clock_2" />
<Data key="66f14071-bddd-4b4d-a9aa-a129cceaa7b6" value="Clock_3" />
<Data key="349ffa20-8576-4ac3-9a6f-34ef606de6cf" value="Clock_1" />
<Data key="6616e828-6611-4893-a674-66c861d79d6c" value="SignalSamplingClock" />
<Data key="12664fc6-9d70-44b1-8a49-887a292e1b7f" value="Clock_3" />

View File

@@ -2027,20 +2027,20 @@
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_REG" persistent="">
<Hidden v="True" />
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
<dependencies>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_REG.c" persistent="Generated_Source\PSoC5\CAPTURE_REG.c">
<Hidden v="True" />
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_REG.h" persistent="Generated_Source\PSoC5\CAPTURE_REG.h">
<Hidden v="True" />
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="HEADER;;;;" />
<PropertyDeltas />
@@ -2686,27 +2686,27 @@
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_COUNTER" persistent="">
<Hidden v="False" />
<Hidden v="True" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
<dependencies>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_COUNTER.c" persistent="Generated_Source\PSoC5\CAPTURE_COUNTER.c">
<Hidden v="False" />
<Hidden v="True" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_COUNTER.h" persistent="Generated_Source\PSoC5\CAPTURE_COUNTER.h">
<Hidden v="False" />
<Hidden v="True" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="HEADER;;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_COUNTER_PM.c" persistent="Generated_Source\PSoC5\CAPTURE_COUNTER_PM.c">
<Hidden v="False" />
<Hidden v="True" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
@@ -2844,27 +2844,27 @@
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_TIMESTAMP" persistent="">
<Hidden v="False" />
<Hidden v="True" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
<dependencies>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_TIMESTAMP.h" persistent="Generated_Source\PSoC5\REPLAY_TIMESTAMP.h">
<Hidden v="False" />
<Hidden v="True" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="HEADER;;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_TIMESTAMP.c" persistent="Generated_Source\PSoC5\REPLAY_TIMESTAMP.c">
<Hidden v="False" />
<Hidden v="True" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_TIMESTAMP_PM.c" persistent="Generated_Source\PSoC5\REPLAY_TIMESTAMP_PM.c">
<Hidden v="False" />
<Hidden v="True" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
@@ -2933,6 +2933,105 @@
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
<filters />
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_DATA" persistent="">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
<dependencies>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_DATA.h" persistent="Generated_Source\PSoC5\REPLAY_DATA.h">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="HEADER;;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_DATA.c" persistent="Generated_Source\PSoC5\REPLAY_DATA.c">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_DATA_PM.c" persistent="Generated_Source\PSoC5\REPLAY_DATA_PM.c">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
<filters />
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_RESET" persistent="">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
<dependencies>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_RESET.h" persistent="Generated_Source\PSoC5\REPLAY_RESET.h">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="HEADER;;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_RESET.c" persistent="Generated_Source\PSoC5\REPLAY_RESET.c">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_RESET_PM.c" persistent="Generated_Source\PSoC5\REPLAY_RESET_PM.c">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
<filters />
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_RESET" persistent="">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
<dependencies>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_RESET.h" persistent="Generated_Source\PSoC5\CAPTURE_RESET.h">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="HEADER;;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_RESET.c" persistent="Generated_Source\PSoC5\CAPTURE_RESET.c">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_RESET_PM.c" persistent="Generated_Source\PSoC5\CAPTURE_RESET_PM.c">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="SOURCE_C;CortexM3;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
<filters />
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
@@ -2947,6 +3046,66 @@
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
</CyGuid_813b8d13-518a-4dc8-91ba-cda6042dfb52>
</CyGuid_d8451a8e-a4ea-4e21-aba8-966eaa7ea07d>
<CyGuid_4429d4ed-fe84-42d0-9e9f-19aee0ff4e7e type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtComponentSerialize" version="1">
<CyGuid_813b8d13-518a-4dc8-91ba-cda6042dfb52 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtPhysicalFolderSerialize" version="1">
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sampler" persistent="Sampler">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
<dependencies>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sampler.cysym" persistent="Sampler\Sampler.cysym">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="OTHER;;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sampler.v" persistent="Sampler\Sampler.v">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="OTHER;;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
<filters />
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
</CyGuid_813b8d13-518a-4dc8-91ba-cda6042dfb52>
</CyGuid_4429d4ed-fe84-42d0-9e9f-19aee0ff4e7e>
<CyGuid_4429d4ed-fe84-42d0-9e9f-19aee0ff4e7e type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtComponentSerialize" version="1">
<CyGuid_813b8d13-518a-4dc8-91ba-cda6042dfb52 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtPhysicalFolderSerialize" version="1">
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sequencer" persistent="Sequencer">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
<dependencies>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sequencer.cysym" persistent="Sequencer\Sequencer.cysym">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="OTHER;;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sequencer.v" persistent="Sequencer\Sequencer.v">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="OTHER;;;;" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
<filters />
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
</CyGuid_813b8d13-518a-4dc8-91ba-cda6042dfb52>
</CyGuid_4429d4ed-fe84-42d0-9e9f-19aee0ff4e7e>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
@@ -3253,6 +3412,6 @@
</ignored_deps>
</CyGuid_495451fe-d201-4d01-b22d-5d3f5609ac37>
<boot_component v="" />
<current_generation v="15" />
<current_generation v="23" />
</CyGuid_fec8f9e8-2365-4bdb-96d3-a4380222e01b>
</CyXmlSerializer>

View File

Binary file not shown.

View File

@@ -0,0 +1,54 @@
//`#start header` -- edit after this line, do not edit this line
`include "cypress.v"
//`#end` -- edit above this line, do not edit this line
// Generated on 02/21/2019 at 23:51
// Component: Sampler
module Sampler (
output reg interrupt,
output reg [7:0] result,
input clock,
input sample,
input reset
);
//`#start body` -- edit after this line, do not edit this line
reg [6:0] counter; // monotonically increasing counter
reg last_sample;
always @(posedge clock)
begin
if (reset)
begin
result <= 0;
interrupt <= 0;
counter <= 1;
end
else if (counter == 0)
begin
// Rollover.
result <= 8'h80;
interrupt <= 1;
counter <= 1;
end
else if (sample && !last_sample)
begin
// A sample happened since the last clock.
result[6:0] <= counter;
result[7] <= 0;
interrupt <= 1;
counter <= 1;
end
else
begin
counter <= counter + 1;
interrupt <= 0;
end
last_sample <= sample;
end
//`#end` -- edit above this line, do not edit this line
endmodule
//`#start footer` -- edit after this line, do not edit this line
//`#end` -- edit above this line, do not edit this line

View File

Binary file not shown.

View File

@@ -0,0 +1,45 @@
//`#start header` -- edit after this line, do not edit this line
`include "cypress.v"
//`#end` -- edit above this line, do not edit this line
// Generated on 02/22/2019 at 20:31
// Component: Sequencer
module Sequencer (
output reg interrupt,
output reg wdata,
input clock,
input [7:0] data,
input reset
);
//`#start body` -- edit after this line, do not edit this line
reg [6:0] counter;
always @(posedge clock)
begin
if (reset)
begin
counter <= 0;
interrupt <= 0;
wdata <= 0;
end
else if (counter == data[6:0])
begin
counter <= 1; // tick zero is this one
interrupt <= 1;
wdata <= ~data[7];
end
else
begin
counter <= counter + 1;
interrupt <= 0;
wdata <= 0;
end
end
//`#end` -- edit above this line, do not edit this line
endmodule
//`#start footer` -- edit after this line, do not edit this line
//`#end` -- edit above this line, do not edit this line

View File

Binary file not shown.

View File

@@ -90,7 +90,6 @@ static void start_motor(void)
homed = false;
}
if (DISKSTATUS_REG_Read() & DISKSTATUS_DSKCHG)
homed = false;
@@ -251,17 +250,18 @@ static void init_capture_dma(void)
CyDmaTdSetConfiguration(td[i], BUFFER_SIZE, td[nexti],
CY_DMA_TD_INC_DST_ADR | CAPTURE_DMA__TD_TERMOUT_EN);
CyDmaTdSetAddress(td[i], LO16((uint32)CAPTURE_COUNTER_STATICCOUNT_LSB_PTR), LO16((uint32)&dma_buffer[i]));
CyDmaTdSetAddress(td[i], LO16((uint32)&CAPTURE_REG_Status), LO16((uint32)&dma_buffer[i]));
}
}
static void cmd_read(struct read_frame* f)
{
SIDE_REG_Write(f->side);
seek_to(current_track);
seek_to(current_track);
/* Do slow setup *before* we go into the real-time bit. */
CAPTURE_RESET_Write(1);
wait_until_writeable(FLUXENGINE_DATA_IN_EP_NUM);
init_capture_dma();
@@ -276,6 +276,7 @@ static void cmd_read(struct read_frame* f)
dma_reading_from_td = -1;
dma_underrun = false;
int count = 0;
CAPTURE_RESET_Write(0);
CyDmaChSetInitialTd(dma_channel, td[dma_writing_to_td]);
CyDmaClearPendingDrq(dma_channel);
CyDmaChEnable(dma_channel, 1);
@@ -360,7 +361,7 @@ static void init_replay_dma(void)
CyDmaTdSetConfiguration(td[i], BUFFER_SIZE, td[nexti],
CY_DMA_TD_INC_SRC_ADR | REPLAY_DMA__TD_TERMOUT_EN);
CyDmaTdSetAddress(td[i], LO16((uint32)&dma_buffer[i]), LO16((uint32)REPLAY_TIMESTAMP_Control_PTR));
CyDmaTdSetAddress(td[i], LO16((uint32)&dma_buffer[i]), LO16((uint32)REPLAY_DATA_Control_PTR));
}
}
@@ -373,6 +374,7 @@ static void cmd_write(struct write_frame* f)
}
SIDE_REG_Write(f->side);
REPLAY_RESET_Write(1);
seek_to(current_track);
init_replay_dma();
@@ -410,6 +412,7 @@ static void cmd_write(struct write_frame* f)
writing = true;
ERASE_REG_Write(1); /* start erasing! */
REPLAY_RESET_Write(0); /* start writing! */
REPLAY_DMA_FINISHED_IRQ_Enable();
dma_underrun = false;
CyDmaChSetInitialTd(dma_channel, td[dma_reading_from_td]);
@@ -431,9 +434,8 @@ static void cmd_write(struct write_frame* f)
{
/* The USB stream has stopped early, so just fake data to keep the writer happy. */
uint8_t clock = 0;
for (int i=0; i<BUFFER_SIZE; i++)
dma_buffer[dma_writing_to_td][i] = clock += 0x30;
dma_buffer[dma_writing_to_td][i] = 0x80;
dma_writing_to_td = NEXT_BUFFER(dma_writing_to_td);
}
else
@@ -611,7 +613,6 @@ int main(void)
INDEX_IRQ_StartEx(&index_irq_cb);
CAPTURE_DMA_FINISHED_IRQ_StartEx(&capture_dma_finished_irq_cb);
REPLAY_DMA_FINISHED_IRQ_StartEx(&replay_dma_finished_irq_cb);
CAPTURE_COUNTER_Start();
DRIVE_REG_Write(0);
/* UART_Start(); */
USBFS_Start(0, USBFS_DWR_VDDD_OPERATION);

View File

@@ -21,8 +21,14 @@ static SettableFlag showClockHistogram(
nanoseconds_t Fluxmap::guessClock() const
{
uint32_t buckets[256] = {};
for (uint8_t interval : _intervals)
size_t cursor = 0;
while (cursor < bytes())
{
uint32_t interval = getAndIncrement(cursor);
if (interval > 0xff)
continue;
buckets[interval]++;
}
uint32_t max = *std::max_element(std::begin(buckets), std::end(buckets));
uint32_t min = *std::min_element(std::begin(buckets), std::end(buckets));
@@ -106,7 +112,7 @@ std::vector<bool> Fluxmap::decodeToBits(nanoseconds_t clockPeriod) const
std::vector<bool> bitmap(pulses);
unsigned count = 0;
int cursor = 0;
size_t cursor = 0;
nanoseconds_t timestamp = 0;
for (;;)
{
@@ -114,7 +120,7 @@ std::vector<bool> Fluxmap::decodeToBits(nanoseconds_t clockPeriod) const
{
if (cursor >= bytes())
goto abort;
uint8_t interval = (*this)[cursor++];
uint8_t interval = getAndIncrement(cursor);
timestamp += interval * NS_PER_TICK;
}

View File

@@ -11,12 +11,14 @@ Fluxmap& Fluxmap::appendBits(const std::vector<bool>& bits, nanoseconds_t clock)
if (bits[i])
{
unsigned delta = (now - duration()) / NS_PER_TICK;
while (delta > 255)
while (delta >= 0x80)
{
appendIntervals({ 255 });
delta -= 255;
appendByte(0x80);
delta -= 0x80;
}
appendIntervals({ (uint8_t)delta });
if (delta == 0x00)
delta++;
appendByte(delta);
}
}

View File

@@ -2,45 +2,77 @@
#include "fluxmap.h"
#include "protocol.h"
Fluxmap& Fluxmap::appendIntervals(const std::vector<uint8_t>& intervals)
uint32_t Fluxmap::getAndIncrement(size_t& index) const
{
return appendIntervals(&intervals[0], intervals.size());
uint32_t ticks = 0;
while (index < _bytes.size())
{
uint8_t b = _bytes[index++];
ticks += b;
if (!(b & 0x80))
break;
}
return ticks;
}
Fluxmap& Fluxmap::appendIntervals(const uint8_t* ptr, size_t len)
Fluxmap& Fluxmap::appendBytes(const std::vector<uint8_t>& bytes)
{
return appendBytes(&bytes[0], bytes.size());
}
Fluxmap& Fluxmap::appendBytes(const uint8_t* ptr, size_t len)
{
while (len--)
{
uint8_t interval = *ptr++;
_ticks += interval ? interval : 0x100;
_intervals.push_back(interval);
uint8_t byte = *ptr++;
_ticks += byte;
_bytes.push_back(byte);
}
_duration = _ticks * NS_PER_TICK;
return *this;
}
Fluxmap& Fluxmap::appendInterval(uint32_t ticks)
{
while (ticks >= 0x80)
{
appendByte(0x80);
ticks -= 0x80;
}
appendByte((uint8_t)ticks);
return *this;
}
void Fluxmap::precompensate(int threshold_ticks, int amount_ticks)
{
uint8_t junk = 0xff;
for (unsigned i=0; i<_intervals.size(); i++)
for (unsigned i=0; i<_bytes.size(); i++)
{
uint8_t& prev = (i == 0) ? junk : _intervals[i-1];
uint8_t& curr = _intervals[i];
uint8_t& prev = (i == 0) ? junk : _bytes[i-1];
uint8_t& curr = _bytes[i];
if (curr > (3*threshold_ticks))
continue;
if ((prev <= threshold_ticks) && (curr > threshold_ticks))
{
/* 01001; move the previous bit backwards. */
prev -= amount_ticks;
curr += amount_ticks;
if (prev >= (1+amount_ticks))
prev -= amount_ticks;
if (curr <= (0x7f-amount_ticks))
curr += amount_ticks;
}
else if ((prev > threshold_ticks) && (curr <= threshold_ticks))
{
/* 00101; move the current bit forwards. */
prev += amount_ticks;
curr -= amount_ticks;
if (prev <= (0x7f-amount_ticks))
prev += amount_ticks;
if (curr >= (1+amount_ticks))
curr -= amount_ticks;
}
}
}

View File

@@ -4,27 +4,27 @@
class Fluxmap
{
public:
uint8_t operator[](int index) const
{
return _intervals.at(index);
}
uint32_t getAndIncrement(size_t& index) const;
nanoseconds_t duration() const { return _duration; }
int bytes() const { return _intervals.size(); }
size_t bytes() const { return _bytes.size(); }
const std::vector<uint8_t> rawBytes() const { return _bytes; }
const uint8_t* ptr() const
{
if (!_intervals.empty())
return &_intervals.at(0);
if (!_bytes.empty())
return &_bytes.at(0);
return NULL;
}
Fluxmap& appendIntervals(const std::vector<uint8_t>& intervals);
Fluxmap& appendIntervals(const uint8_t* ptr, size_t len);
Fluxmap& appendInterval(uint32_t ticks);
Fluxmap& appendInterval(uint8_t interval)
Fluxmap& appendBytes(const std::vector<uint8_t>& bytes);
Fluxmap& appendBytes(const uint8_t* ptr, size_t len);
Fluxmap& appendByte(uint8_t byte)
{
return appendIntervals(&interval, 1);
return appendBytes(&byte, 1);
}
nanoseconds_t guessClock() const;
@@ -37,7 +37,7 @@ public:
private:
nanoseconds_t _duration = 0;
int _ticks = 0;
std::vector<uint8_t> _intervals;
std::vector<uint8_t> _bytes;
};
#endif

View File

@@ -39,4 +39,5 @@ private:
std::stringstream _stream;
};
#endif

View File

@@ -92,7 +92,7 @@ std::unique_ptr<Fluxmap> sqlReadFlux(sqlite3* db, int track, int side)
const uint8_t* blobptr = (const uint8_t*) sqlite3_column_blob(stmt, 0);
size_t bloblen = sqlite3_column_bytes(stmt, 0);
fluxmap->appendIntervals(blobptr, bloblen);
fluxmap->appendBytes(blobptr, bloblen);
}
sqlCheck(db, sqlite3_finalize(stmt));
return fluxmap;

View File

@@ -29,14 +29,10 @@ std::unique_ptr<Fluxmap> readStream(const std::string& path, unsigned track, uns
auto writeFlux = [&](uint32_t sclk)
{
int ticks = (double)sclk * TICKS_PER_SCLK;
while (ticks >= 0x100)
{
fluxmap->appendInterval(0);
ticks -= 0x100;
}
fluxmap->appendInterval((uint8_t)ticks);
fluxmap->appendInterval(ticks);
};
uint32_t extrasclks = 0;
for (;;)
{
int b = f.get(); /* returns -1 or UNSIGNED char */
@@ -64,7 +60,8 @@ std::unique_ptr<Fluxmap> readStream(const std::string& path, unsigned track, uns
{
/* Flux2: double byte value */
b = (b<<8) | f.get();
writeFlux(b);
writeFlux(extrasclks + b);
extrasclks = 0;
}
else if (b == 0x08)
{
@@ -82,23 +79,23 @@ std::unique_ptr<Fluxmap> readStream(const std::string& path, unsigned track, uns
f.get();
}
else if (b == 0x0b)
{ /* Ovl16: the next block is 0x10000 sclks longer than normal.
* FluxEngine can't handle long transitions, and implementing
* this is complicated, so we just bodge it.
*/
writeFlux(0x10000);
{
/* Ovl16: the next block is 0x10000 sclks longer than normal. */
extrasclks += 0x10000;
}
else if (b == 0x0c)
{
/* Flux3: triple byte value */
int ticks = f.get() << 8;
ticks |= f.get();
writeFlux(ticks);
writeFlux(extrasclks + ticks);
extrasclks = 0;
}
else if ((b >= 0x0e) && (b <= 0xff))
{
/* Flux1: single byte value */
writeFlux(b);
writeFlux(extrasclks + b);
extrasclks = 0;
}
else
Error() << fmt::format(

View File

@@ -43,8 +43,10 @@ static void usb_init()
Error() << "could not claim interface: " << usberror(i);
int version = usbGetVersion();
if (version > FLUXENGINE_VERSION)
Error() << "this version of the client is too old for this FluxEngine";
if (version != FLUXENGINE_VERSION)
Error() << "your FluxEngine firmware is at version " << version
<< " but the client is for version " << FLUXENGINE_VERSION
<< "; please upgrade";
}
static int usb_cmd_send(void* ptr, int len)
@@ -201,7 +203,7 @@ std::unique_ptr<Fluxmap> usbRead(int side, int revolutions)
int len = large_bulk_transfer(FLUXENGINE_DATA_IN_EP, buffer);
buffer.resize(len);
fluxmap->appendIntervals(buffer);
fluxmap->appendBytes(buffer);
await_reply<struct any_frame>(F_FRAME_READ_REPLY);
return fluxmap;
@@ -213,13 +215,8 @@ void usbWrite(int side, const Fluxmap& fluxmap)
/* Convert from intervals to absolute timestamps. */
std::vector<uint8_t> buffer(safelen);
uint8_t clock = 0;
for (unsigned i=0; i<safelen; i++)
{
clock += fluxmap[i];
buffer[i] = clock;
}
std::vector<uint8_t> buffer(fluxmap.rawBytes());
buffer.resize(safelen);
struct write_frame f = {
.f = { .type = F_FRAME_WRITE_CMD, .size = sizeof(f) },

View File

@@ -3,7 +3,7 @@
enum
{
FLUXENGINE_VERSION = 1,
FLUXENGINE_VERSION = 2,
FLUXENGINE_VID = 0x1209,
FLUXENGINE_PID = 0x6e00,

View File

@@ -1,5 +1,6 @@
#include "globals.h"
#include "flags.h"
#include "fluxmap.h"
#include "writer.h"
int main(int argc, const char* argv[])
@@ -7,7 +8,12 @@ int main(int argc, const char* argv[])
setWriterDefaultDest(":t=0-81:s=0-1");
Flag::parseFlags(argc, argv);
writeTracks(NULL);
writeTracks(
[](int physicalTrack, int physicalSide) -> std::unique_ptr<Fluxmap>
{
return std::unique_ptr<Fluxmap>();
}
);
return 0;
}

View File

@@ -62,15 +62,12 @@ int main(int argc, const char* argv[])
nanoseconds_t nextclock = clockPeriod;
nanoseconds_t now = 0;
int cursor = 0;
size_t cursor = 0;
nanoseconds_t seekto = seekFlag*1000000.0;
int ticks = 0;
while (cursor < fluxmap->bytes())
{
int interval = (*fluxmap)[cursor++];
if (interval == 0)
interval = 0x100;
ticks += interval;
ticks += fluxmap->getAndIncrement(cursor);
now = ticks * NS_PER_TICK;
if (now >= seekto)
@@ -81,10 +78,7 @@ int main(int argc, const char* argv[])
nanoseconds_t lasttransition = 0;
while (cursor < fluxmap->bytes())
{
int interval = (*fluxmap)[cursor++];
if (interval == 0)
interval = 0x100;
ticks += interval;
ticks += fluxmap->getAndIncrement(cursor);
nanoseconds_t transition = ticks*NS_PER_TICK;
nanoseconds_t next;

View File

@@ -51,7 +51,7 @@ static int charToInt(char c)
int main(int argc, const char* argv[])
{
setWriterDefaultDest(":t=0-77:s=0");
setWriterDefaultDest(":d=0:t=0-77:s=0");
Flag::parseFlags(argc, argv);
SectorSet allSectors;

View File

@@ -24,8 +24,6 @@ int main(int argc, const char* argv[])
Flag::parseFlags(argc, argv);
unsigned ticksPerInterval = (unsigned) (interval * TICKS_PER_US);
if (ticksPerInterval > 0xff)
Error() << "interval too long";
writeTracks(
[&](int physicalTrack, int physicalSide) -> std::unique_ptr<Fluxmap>
@@ -33,7 +31,7 @@ int main(int argc, const char* argv[])
std::unique_ptr<Fluxmap> fluxmap(new Fluxmap);
while (fluxmap->duration() < (sequenceLength*1000000.0))
fluxmap->appendIntervals({ (uint8_t)ticksPerInterval });
fluxmap->appendInterval(ticksPerInterval);
return fluxmap;
}