This tutorial discusses the concepts involved with compiling a finished program. To do this, Embrio needs to know how long each node in your program takes to execute on your target hardware, and with this data it creates a program execution timeline that ensures that all of the nodes in your project refresh at their target rate with high accuracy. Knowing timing data also means you can have an accurate understanding of how many milliseconds per second the processor will be running.

View discussion page on forum

With a full version of Embrio you can compile your programs to an Arduino so they can be run without a connection to your computer. The third button on the communicator panel is the compile button. To compile a program, Embrio needs to know how long each of the nodes used in your project take to execute on your target hardware. If there are any unknown timing values, the little clock icon next to the compile button will be black, otherwise it is grayed out. If you try to compile a program when there are any untimed nodes, a timing program will first be uploaded and timing data received, then the final program will be compiled and uploaded.

  • A - The compile and upload button, click it to upload your finished project to your Arduino.

  • B - The timing button. Becomes black when there are untimed nodes in your project. Click it to upload a timing program to your connected Arduino.

Timing data is available on the Profiler tab. On top of the profiler control are over view values for the project.

  • A - The total number of agents in your project.

  • B - The total number of node instances in your project. Function nodes count each node in the function.

  • C - To maximum number of milliseconds per second the processor will run. This is if all nodes were to update on every refresh, though many only update when their inputs change. Make sure this number stays well below 1000!

  • D - The total number of un-timed nodes in your project.

  • E - A sortable list of all of the agents in your project.

  • F - The total number of nodes in each agent, including nodes in function instances.

  • G - "Microseconds Per Update" - The total number of microseconds needed to update all nodes in this agent once.

  • H - How many times per second the nodes in this agent refresh.

  • I - "Microseconds Per Second" The total microseconds that this agents users per second.

  • J - How many un-timed nodes are in each agent.

The next tab shows data for all of the nodes in your project.

  • A - The node type. For nodes types that don't share timing data, like custom Arduino nodes, each node instance is listed.

  • B - The total number of instances of each node type in the project, including node copies in function instances.

  • C - "Microseconds Per Update" - How many microseconds the node type takes to update.

  • D - "Microseconds Per Seconds" - The total microseconds per second used by all instances of each node type.

View discussion page on forum