<pre style="font-family:monospace,monospace; font-size:1em; font-weight: bold;">
                           * ***
                         *  ****  *
                        *  *  ****
                       *  **   **
                      *  ***         ***    ***     ***    ***
              ***    **   **        * ***  **** *  * ***  **** *
             * ***   **   **           *** *****      *** *****
            *   ***  **   **            ***  **        ***  **
           **    *** **   **             ***            ***
           ********  **   **            * ***          * ***
           *******    **  **           *   ***        *   ***
           **          ** *      *    *     ***      *     ***
           ****    *    ***     *    *       *** *  *       *** *
            *******      *******    *         ***  *         ***
             *****         ***

                                A C++ Library for AVR and NodeMCU
          ~ tailored for micro LED displays and lighting effects ~
</pre>

<hr>

eCxx's SVN repository and distribution packages consists of Open Source Software library as well as Open Hardware schematic and PCB designs for AVR and NodeMCU.

The SVN repository and distribution packages also include some Java-based and Python-based utility applications.

[[download_button]]

<hr>

This library is tested using existing development boards and our customized development boards. The schematic and PCB design of our eCxx development boards are included in the SVN repository and release packages. Some of the eCxx development boards that have been tested are:

+ [ATmega1284P Development Board](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/ATmega1284P_DevBoard_v1.0.2a.png)
+ [NodeMCU Development Board](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/NodeMCU_DevBoard_v1.0.3b.png)

+ [IO Expander](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/IO_Expander_v1.0.1a.png)

+ [UART LCD Backpack](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/UART_LCD_Backpack_v1.0.0a.png)
+ [JTAG2UPDI and Serial Bridge](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/JTAG2UPDI_Serial_Bridge_Micro_ProMini_v1.0.1.png)

+ [ESP-01 AVR Uploader](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/ESP01_AVR_Uploader_v1.0.3a.png) (tested to work with  [ESP-LINK 2.2.3](https://github.com/jeelabs/esp-link/releases/tag/v2.2.3) and eCxx's own firmware in both 5V and 3.3V modes)

*Some features and bug fixes may can only be found in the source code within the SVN repository (they are not yet included in any released package).*

# Supported AVR MCUs

<table>
    <tr> <th>Generation                                </th> <th>MCU Group  </th> <th colspan="2">Verified using Real Hardware</th> </tr>
    <tr> <td rowspan="6">Original                      </td> <td>ATmega8    </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega8A   </td> <td>Yes</td>                       <td>★★   </td> </tr>
    <tr>                                                     <td>ATmega16   </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega32   </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega64   </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega128  </td> <td>   </td>                       <td>     </td> </tr>
    <tr> <td rowspan="4">Improved (Smaller Package)    </td> <td>ATmega48P  </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega88P  </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega168P </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega328P </td> <td>Yes</td>                       <td>★★★★★</td> </tr>
    <tr> <td rowspan="4">Improved (Smaller Package)    </td> <td>ATmega48PB </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega88PB </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega168PB</td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega328PB</td> <td>Yes</td>                       <td>★    </td> </tr>
    <tr> <td rowspan="4">Improved (Larger Package)     </td> <td>ATmega164P </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega324P </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega644P </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega1284P</td> <td>Yes</td>                       <td>★★   </td> </tr>
    <tr> <td rowspan="2">Largest Package               </td> <td>ATmega1280 </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega2560 </td> <td>Yes</td>                       <td>★★★★ </td> </tr>
    <tr> <td rowspan="4">With USB Device Module        </td> <td>ATmega16U4 </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega32U4 </td> <td>Yes</td>                       <td>★★★  </td> </tr>
    <tr>                                                     <td>AT90USB646 </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>AT90USB1286</td> <td>Yes</td>                       <td>★    </td> </tr>
    <tr> <td rowspan="4">With Configurable Custom Logic</td> <td>ATmega808  </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega1608 </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega3208 </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega4808 </td> <td>Yes</td>                       <td>★★★  </td> </tr>
    <tr> <td rowspan="4">With Configurable Custom Logic</td> <td>ATmega809  </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega1609 </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega3209 </td> <td>   </td>                       <td>     </td> </tr>
    <tr>                                                     <td>ATmega4809 </td> <td>Yes</td>                       <td>★    </td> </tr>
    <tr><td colspan="4">
        Note:
        <br><br>
        <ul>
            <li>The number of black stars (★) indicates how extensive eCxx has been tested on the respective AVR MCUs.</li>
            <li>Some of the AVR MCUs may have flash memories that are too small to support some of the test applications.</li>
        </ul>
    </td></tr>
</table>

# Supported ESP8266 Boards

All NodeMCU variants with:

+ ESP8266 (ESP-12E Module)
+ CPU frequency 80/160 MHz
+ Flash size 4 MB

All ESP-01 variants with:

+ CPU frequency 80 MHz
+ Flash size 1 MB

<hr>

## [Getting Started]
