<h1>PicoBus.1</h1>
This page describes the PicoBus.1 object, its states and its transitions.

<h2>Bus state</h2>
The bus can be in several states
<dl>
 <dt>Unknown
  <dd>Initial state of the bus at power up
 <dt>Idle
  <dd>when no node has taken ownership of the bus
 <dt>Master election
   <dd>when one or more nodes are trying to take the bus ownership
 <dt>Bound
  <dd>when a master has bound the bus to a group nodes
</dl>

<h3>Unknown state</h3>
This is the initial state entered when a node power ups. In this state, the node must be quiet waiting for the following events:
<ul>
 <li>A break symbol is transmitted; in such case, the bus transitions to master election state.
 <li>A period of inactivity longer than 1ms; in such case, the bus transitions to the Idle state.
</ul>

<h3>Idle</h3>
This state is entered after a period of inactivity longer than 1ms.

In this state, no node owns the bus and any node can start a master election process sending a break command.

<h3>Master election</h3>
In this state zero, one or more nodes competes to become the master. After the break symbol, all the nodes in competition start sending its own address. Every time a 1 symbol is sent, the bus is checked for collisions. If another node has overwritten the 1 symbol with a 0 symbol, the node refrains to become the master and waits for the next election.

After the 32 bit address is sent correctly, the node becomes the master and sends another 32 bit address representing the target node or group and the bus becomes bound and a 8-bit CRC checksum.

If no node is ready to become master after 1ms, the bus changes to the idle state.

<h3>Bound state</h3>
In this state, the master is ready to send commands to a single node or a group of nodes.

The bus exits this state when:
<ul>
 <li>The master issues a break symbol, returning to the master election state.
 <li>After a 1ms of inactivity in the bus.
</ul>