Jump to content

Component: Lookup tables (Utility): Difference between revisions

From Flowcode Help
m Text replacement - "class="wikitable" style="width:60%; background-color:#FFFFFF;"" to "class="mtx-class-macrotable wikitable""
m Text replacement - "width="90%" style="background-color:#D8C9D8; color:#4B008D;"" to "width="90%" class="mtx-class-macrohead""
 
(2 intermediate revisions by the same user not shown)
Line 177: Line 177:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetFloat'''
| width="90%" class="mtx-class-macrohead" | '''GetFloat'''
|-
|-
| colspan="2" | Gets a float from the LUT 
| colspan="2" | Gets a float from the LUT 
Line 196: Line 196:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetInt'''
| width="90%" class="mtx-class-macrohead" | '''GetInt'''
|-
|-
| colspan="2" | Gets an integer from the LUT 
| colspan="2" | Gets an integer from the LUT 
Line 215: Line 215:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetLUTCount'''
| width="90%" class="mtx-class-macrohead" | '''GetLUTCount'''
|-
|-
| colspan="2" | Gets the number of individual data entries stored in the LUT. 
| colspan="2" | Gets the number of individual data entries stored in the LUT. 
Line 230: Line 230:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-prop-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''  
| width="90%" class="mtx-class-macrohead" | '''Properties'''  
|-
|-
|-
|-

Latest revision as of 14:23, 13 July 2026

Author Matrix Ltd
Version 1.8
Category Utility


Lookup tables component

A lookup-table component allowing an easy way to place arrays of static data into ROM memory. The LUT data is accessed directly allowing very low overhead when collecting the data.

Version information

Library Version, Component Version, Date, Author, Info
13, 1.7, 24-07-24, BR, Fixed LUT to allow more then 65535 values to be stored and used by the sim
14, 1.8, 11-09-24, BR, Added system watchdog disable around elements of code that could take a long time for a large LUT

Detailed description

No detailed description exists yet for this component

Examples

A look up table component is useful when including data into a program which may not be linear and therefore hard to calculate.


One example of this is a sine wave or working out a temperature based on the resistance of a thermistor.


For a simple example lets say we want to store a sine wave on board the microcontroller.


First of all we use Excel to generate the data for a sine wave to do this we work out the angles in degrees we want to reproduce, then convert the degrees to radians and then generate the Sine wave for the angle. the angle returned will be between -1 and 1 so we need to convert this to fit into the microcontroller's memory. The most efficient way is to store the value as a byte which means scaling up the output to 0 - 255 and removing the real portion of the number to give integer values.

File:SineWaveLUT.xlsx


Then using the file -> Save as menu in Excel we can export the data as a raw .CSV file.

File:SineWaveLUT.csv


The line in the CSV file we are interested in is the Integer Offset Data. We can then copy and paste this data into the integer property of the look up table component.


In this example Flowcode file we display the LUT data onto a graphical LCD display LUT Here is what you should expect to see on the glcd after running the simulation.






Macro reference

GetFloat

GetFloat
Gets a float from the LUT 
- ULONG Index
 
- FLOAT Return


GetInt

GetInt
Gets an integer from the LUT 
- ULONG Index
 
- ULONG Return


GetLUTCount

GetLUTCount
Gets the number of individual data entries stored in the LUT. 
- UINT Return


Property reference

Properties
Enabled
Determines if the LUT component is active. 
Storage Type
Controls the data type stored by the component. 
Floats
Comma seperated float data which is used to create the C code which is inserted into the ROM. 
Num Values
 
Embed Into C
Flag to decide if code should be generated to C or not If this is false then the LUT is simulation only  

Component Source Code

Please click here to download the component source project: FC_Comp_Source_LUT.fcfx

Please click here to view the component source code (Beta): FC_Comp_Source_LUT.fcfx