<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Inferno Embedded</title>
    <link>https://infernoembedded.com/</link>
    <description>Recent content on Inferno Embedded</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sat, 07 Nov 2026 21:20:00 +1100</lastBuildDate>
    <atom:link href="https://infernoembedded.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Vulcan&#39;s Trials</title>
      <link>https://infernoembedded.com/software/vulcans-trials/</link>
      <pubDate>Sat, 07 Nov 2026 00:00:00 +1100</pubDate>
      <guid>https://infernoembedded.com/software/vulcans-trials/</guid>
      <description>Vulkan GPU, NVIDIA CUDA &amp;amp; Multi-Core CPU Auto-Placer and Auto-Router for KiCad 8, 9, and 10.</description>
    </item>
    <item>
      <title>Antminer/Innosilicon Flat Mount Fan Shroud for 150mm duct</title>
      <link>https://infernoembedded.com/hardware/antminerinnosilicon-flat-mount-fan-shroud-150mm-duct/</link>
      <pubDate>Sat, 17 Mar 2018 11:05:41 +0000</pubDate>
      <guid>https://infernoembedded.com/hardware/antminerinnosilicon-flat-mount-fan-shroud-150mm-duct/</guid>
      <description>&lt;p&gt;This duct adapter variant has the duct offset, which allows the miner to sit flat on a surface, rather than requiring to be raised to allow clearance for the lower part of the duct.&lt;/p&gt;
&lt;p&gt;It is made from durable ABS plastic, and allows you to connect a 150mm flexible duct to your miner&amp;rsquo;s 120mm exhaust fan, allowing you to vent the hot air directly outside (or in winter, into your air conditioning ducts). For longer runs, I have found that a 150mm duct is the minimum required to allow airflow from the machine, anything smaller increases the backpressure, which leads to higher temperatures.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Antminer/Innosilicon 9 Vane Laminar Flow Fan Shroud for 150mm duct</title>
      <link>https://infernoembedded.com/hardware/antminerinnosilicon-9-vane-laminar-flow-fan-shroud-150mm-duct/</link>
      <pubDate>Wed, 14 Mar 2018 12:43:14 +0000</pubDate>
      <guid>https://infernoembedded.com/hardware/antminerinnosilicon-9-vane-laminar-flow-fan-shroud-150mm-duct/</guid>
      <description>&lt;p&gt;This is a 3d printed fan shroud that we designed and printed in-house. It is made from durable ABS plastic, and allows you to connect a 150mm flexible duct to your miner&amp;rsquo;s 120mm exhaust fan, allowing you to vent the hot air directly outside (or in winter, into your air conditioning ducts). For longer runs, I have found that a 150mm duct is the minimum required to allow airflow from the machine, anything smaller increases the backpressure, which leads to higher temperatures.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Antminer/Innosilicon Fan Shroud for 150mm duct</title>
      <link>https://infernoembedded.com/hardware/antminerinnosilicon-fan-shroud-150mm-duct/</link>
      <pubDate>Wed, 14 Mar 2018 12:28:00 +0000</pubDate>
      <guid>https://infernoembedded.com/hardware/antminerinnosilicon-fan-shroud-150mm-duct/</guid>
      <description>&lt;p&gt;This is a 3d printed fan shroud that we have designed and developed in-house. It is made from durable ABS plastic, and allows you to connect a 150mm flexible duct to your miner&amp;rsquo;s 120mm exhaust fan, allowing you to vent the hot air directly outside (or in winter, into your air conditioning ducts). For longer runs, I have found that a 150mm duct is the minimum required to allow airflow from the machine, anything smaller increases the backpressure, which leads to higher temperatures.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Antminer D3 L3&#43; Fan Cowl</title>
      <link>https://infernoembedded.com/hardware/antminer-d3-l3-fan-cowl/</link>
      <pubDate>Wed, 14 Mar 2018 12:10:56 +0000</pubDate>
      <guid>https://infernoembedded.com/hardware/antminer-d3-l3-fan-cowl/</guid>
      <description>&lt;p&gt;This is a cowl for the rear of the Antminer D3 &amp;amp; L3+ which is 165mm tall (please confirm your machines are suitable before ordering, if your machine height differs, let me know and I can modify the design for you).&lt;/p&gt;
&lt;p&gt;It allows all hot air from the rear of the machine to be extracted, including the upper vents which are not covered by the fan.&lt;/p&gt;
&lt;p&gt;This is designed to be used with one of our fan shrouds that allows either a 125mm or 150mm duct to be connected to the fan. It comes with longer screws sized specifically to allow the cowl, shroud &amp;amp; OEM fan to be installed without damaging the electronics. To install, remove the screws from the OEM fan, slide the cowl between the fan and the body, place the shroud on top (taking care to align the vanes if you are using our laminar flow shrouds), and finally, install the 4 replacement screws through the whole stack.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Antminer/Innosilicon Fan duct adaptor/shroud for 125mm duct</title>
      <link>https://infernoembedded.com/hardware/antminerinnosilicon-fan-duct-adaptorshroud-125mm-duct/</link>
      <pubDate>Mon, 12 Mar 2018 12:37:04 +0000</pubDate>
      <guid>https://infernoembedded.com/hardware/antminerinnosilicon-fan-duct-adaptorshroud-125mm-duct/</guid>
      <description>&lt;p&gt;This is a 3d printed fan shroud designed and 3d printed in-house. It is made from durable ABS plastic, and allows you to connect a 125mm flexible duct to your miner&amp;rsquo;s 120mm exhaust fan, allowing you to vent the hot air directly outside (or in winter, into your air conditioning ducts). I have found that a 125mm duct is the minimum required to allow airflow from the machine, anything smaller increases the backpressure, which leads to higher temperatures.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Intro to IoT using ESP8266, MQTT &amp; NodeRed</title>
      <link>https://infernoembedded.com/pages/intro-iot-using-esp8266-mqtt-nodered/</link>
      <pubDate>Wed, 28 Sep 2016 04:49:21 +0000</pubDate>
      <guid>https://infernoembedded.com/pages/intro-iot-using-esp8266-mqtt-nodered/</guid>
      <description>&lt;h1 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h1&gt;
&lt;p&gt;Note: Known-good versions of the prequisites are available is the git repository for this workshop.&lt;/p&gt;
&lt;h2 id=&#34;all&#34;&gt;All&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Download the Paho MQTT client from &lt;a href=&#34;http://www.eclipse.org/paho/clients/tool/&#34;&gt;http://www.eclipse.org/paho/clients/tool/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Download or clone a copy of the workshop repository to your home directory, from &lt;a href=&#34;https://github.com/InfernoEmbedded/esp-workshop&#34;&gt;https://github.com/InfernoEmbedded/esp-workshop&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you have a firewall enabled, allow traffic on port 1883 (MQTT)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install NodeJS 4 (not 3 or 5), saved in esp-workshop/windows_x64 - &lt;a href=&#34;https://nodejs.org/en/download/package-manager/&#34;&gt;https://nodejs.org/en/download/package-manager/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install NodeRed from &lt;a href=&#34;http://nodered.org/docs/getting-started/installation.html&#34;&gt;http://nodered.org/docs/getting-started/installation.html&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Flash the board with NodeMCU firmware (only required is your board does not already have the NodeMCU firmware installed)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Download and extract the latest ESP8266 NONOS SDK from &lt;a href=&#34;https://espressif.com/en/support/download/sdks-demos&#34;&gt;https://espressif.com/en/support/download/sdks-demos&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build the firmware using the Cloud build service &lt;a href=&#34;https://nodemcu-build.com&#34;&gt;https://nodemcu-build.com&lt;/a&gt;, Include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ADC&lt;/li&gt;
&lt;li&gt;bit&lt;/li&gt;
&lt;li&gt;DHT&lt;/li&gt;
&lt;li&gt;enduser_setup&lt;/li&gt;
&lt;li&gt;file&lt;/li&gt;
&lt;li&gt;GPIO&lt;/li&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;MQTT&lt;/li&gt;
&lt;li&gt;net&lt;/li&gt;
&lt;li&gt;node&lt;/li&gt;
&lt;li&gt;1Wire&lt;/li&gt;
&lt;li&gt;PWM&lt;/li&gt;
&lt;li&gt;timer&lt;/li&gt;
&lt;li&gt;UART&lt;/li&gt;
&lt;li&gt;WiFi&lt;/li&gt;
&lt;li&gt;Flash the firmware, this example uses the firmware included in the repository, but you may want your own (see above) instead: esptool.py &amp;ndash;port /dev/ttyUSB0 write_flash -fm dio -fs 32m 0x00000 ~/esp-workshop/nodemcu-master-15-modules-2016-07-22-03-05-09-float.bin 0x7c000 ~/esp-workshop/sdk/ESP8266_NONOS_SDK/bin/esp_init_data_default.bin&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>1-Wire and DS18B20 support added to Flame</title>
      <link>https://infernoembedded.com/news/1-wire-and-ds18b20-support-added-flame/</link>
      <pubDate>Sun, 27 Apr 2014 06:24:53 +0000</pubDate>
      <guid>https://infernoembedded.com/news/1-wire-and-ds18b20-support-added-flame/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve just ported Paul Stoffregen&amp;rsquo;s Arduino &lt;a href=&#34;http://www.pjrc.com/teensy/td_libs_OneWire.html&#34;&gt;OneWire library&lt;/a&gt; to Flame, and added support for the ubiquitous &lt;a href=&#34;http://www.maximintegrated.com/datasheet/index.mvp/id/2812&#34;&gt;Dallas Semiconductors DS18B20 1-Wire tempertature sensors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A new TemperatureListener interface has been added, as these sensors can take a long time to get a reading (750ms at 12 bit resolution). If you don&amp;rsquo;t want to use the listener interface, you can ask the device instance what it&amp;rsquo;s latest reading was.&lt;/p&gt;
&lt;p&gt;For an example on how to use it, see the &lt;a href=&#34;https://github.com/InfernoEmbedded/cgi-bin/gitweb.cgi?p=flame.git;a=blob;f=flame-tutorial-DS18B20/DS18B20.cpp&#34;&gt;Flame DS18B20 Tutorial&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>R2 Assembly Instructions</title>
      <link>https://infernoembedded.com/projects/mhvboard/tutorials/r2-assembly-instructions/</link>
      <pubDate>Sat, 28 Dec 2013 11:56:59 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/mhvboard/tutorials/r2-assembly-instructions/</guid>
      <description>&lt;h2 id=&#34;mhvboard-r2-assembly-instructions&#34;&gt;MHVBoard R2 Assembly Instructions&lt;/h2&gt;
&lt;h3 id=&#34;tools&#34;&gt;Tools&lt;/h3&gt;
&lt;p&gt;You will need the following tools to assemble your MHVBoard:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Soldering iron with a fine tip (25W will do)&lt;/li&gt;
&lt;li&gt;Solder (the PCB is ROHS compliant if you want to use lead-free solder, but lead based solder is easier to work with)&lt;/li&gt;
&lt;li&gt;Needle-nose pliers&lt;/li&gt;
&lt;li&gt;Side cutters&lt;/li&gt;
&lt;li&gt;Multimeter&lt;/li&gt;
&lt;li&gt;Blu-tack&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;pcb&#34;&gt;PCB&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&#34;MHVBoard R2 pcb&#34; loading=&#34;lazy&#34; src=&#34;https://infernoembedded.com/files/blank_pcb.jpg&#34;&gt;Carefully inspect both sides of your PCB for solder dags and scratches. If there are scratches on your board, use a multimeter set to continuity and refer to the &lt;a href=&#34;http://www.makehackvoid.com/group-projects/mhvboard-arduino-clone&#34;&gt;board layout&lt;/a&gt; to ensure that no traces have been damaged.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Useful Information</title>
      <link>https://infernoembedded.com/projects/mhvboard/useful-information/</link>
      <pubDate>Sat, 28 Dec 2013 06:45:11 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/mhvboard/useful-information/</guid>
      <description>&lt;h3 id=&#34;jp4-pinout&#34;&gt;JP4 pinout&lt;/h3&gt;
&lt;p&gt;The right angle connector has the following pinout (starting from the pin near JP1):&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;JP4 Pin&lt;/th&gt;
					&lt;th&gt;Arduino Shield Pin&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
					&lt;td&gt;D0, Serial RX, PCINT16&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;D1, Serial TX, PCINT17&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;D2, INT0, PCINT18&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;3, PWM&lt;/td&gt;
					&lt;td&gt;D3, OC2B, INT1, PCINT19&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;D4, XCK, T0, PCINT20&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;6&lt;/td&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;D5, OC0B, T1, PCINT21&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;7&lt;/td&gt;
					&lt;td&gt;6, PWM&lt;/td&gt;
					&lt;td&gt;D6, OC0A, AIN0, PCINT22&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;8&lt;/td&gt;
					&lt;td&gt;7&lt;/td&gt;
					&lt;td&gt;D7, AIN1, PCINT23&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;9&lt;/td&gt;
					&lt;td&gt;8&lt;/td&gt;
					&lt;td&gt;B0, CLKO, ICP1, PCINT0&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;10&lt;/td&gt;
					&lt;td&gt;9, PWM&lt;/td&gt;
					&lt;td&gt;B1, OC1A, PCINT1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;11&lt;/td&gt;
					&lt;td&gt;10, PWM&lt;/td&gt;
					&lt;td&gt;B2, SPI Slave Select, OC1B, PCINT2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;12&lt;/td&gt;
					&lt;td&gt;11, PWM&lt;/td&gt;
					&lt;td&gt;B3, SPI MOSI, OC2A, PCINT3&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;13&lt;/td&gt;
					&lt;td&gt;12&lt;/td&gt;
					&lt;td&gt;B4, SPI MISO, PCINT4&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;14&lt;/td&gt;
					&lt;td&gt;13&lt;/td&gt;
					&lt;td&gt;B5, SPI SCK, PCINT5&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;15&lt;/td&gt;
					&lt;td&gt;Ground&lt;/td&gt;
					&lt;td&gt;Ground&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;16&lt;/td&gt;
					&lt;td&gt;Aref&lt;/td&gt;
					&lt;td&gt;AREF, coupled via 100uH inductor and 100nF capactor&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;17&lt;/td&gt;
					&lt;td&gt;Analog 0&lt;/td&gt;
					&lt;td&gt;C0, ADC0, PCINT8&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;18&lt;/td&gt;
					&lt;td&gt;Analog 1&lt;/td&gt;
					&lt;td&gt;C1, ADC1, PCINT9&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;19&lt;/td&gt;
					&lt;td&gt;Analog 2&lt;/td&gt;
					&lt;td&gt;C2, ADC2, PCINT10&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;20&lt;/td&gt;
					&lt;td&gt;Analog 3&lt;/td&gt;
					&lt;td&gt;C3, ADC3, PCINT11&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;21&lt;/td&gt;
					&lt;td&gt;Analog 4&lt;/td&gt;
					&lt;td&gt;C4, ADC4, SDA, PCINT12&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;22&lt;/td&gt;
					&lt;td&gt;Analog 5&lt;/td&gt;
					&lt;td&gt;C5, ADC5, SCL, PCINT13&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;23&lt;/td&gt;
					&lt;td&gt;Vin&lt;/td&gt;
					&lt;td&gt;Vin (from the DC jack)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;24&lt;/td&gt;
					&lt;td&gt;+5V&lt;/td&gt;
					&lt;td&gt;+5V&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;25&lt;/td&gt;
					&lt;td&gt;Reset&lt;/td&gt;
					&lt;td&gt;Reset (active low), C6, PCINT14&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;h3 id=&#34;solder-jumpers&#34;&gt;Solder Jumpers&lt;/h3&gt;
&lt;p&gt;On the underside of the board are a number of solder jumpers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Troubleshooting</title>
      <link>https://infernoembedded.com/projects/mhvboard/troubleshooting/</link>
      <pubDate>Sat, 28 Dec 2013 06:41:02 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/mhvboard/troubleshooting/</guid>
      <description>&lt;p&gt;Here are some common problems you might encounter when using your MHVBoard.&lt;/p&gt;
&lt;h3 id=&#34;the-mhvboard-r2-does-not-appear-as-a-usb-device-for-uploading&#34;&gt;The MHVboard R2 does not appear as a USB device for uploading.&lt;/h3&gt;
&lt;p&gt;Connect the MHVboard to your computer with a USB cable. Make sure the upload jumper is installed on JP6, set the power jumper (JP5) to USB by placing the jumper over the pins 1 and 2 (pin 1 is near the resistors), then press the reset button. LED1 on Pin13 (placed between the USB connector and the power regulator) should blink three times and then turn off) and the MHVboard should be placed in programming mode and your computer should acknowledge that the USB device has been connected.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting Started in the Arduino Environment</title>
      <link>https://infernoembedded.com/projects/mhvboard/tutorials/getting-started-mhvboard-arduino-environment/</link>
      <pubDate>Sat, 28 Dec 2013 06:31:03 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/mhvboard/tutorials/getting-started-mhvboard-arduino-environment/</guid>
      <description>&lt;h2 id=&#34;getting-started-with-the-mhvboard-in-the-arduino-environment&#34;&gt;Getting Started with the MHVBoard in the Arduino Environment&lt;/h2&gt;
&lt;p&gt;The MHVBoard will work within the Arduino environment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install the &lt;a href=&#34;http://arduino.cc/en/Main/Software&#34;&gt;Arduino Environment&lt;/a&gt; version 1.0&lt;/li&gt;
&lt;li&gt;Download the MHVBoard enhancements at the bottom of this page and extract it over the top of your Arduino installation&lt;/li&gt;
&lt;li&gt;If you are running Windows, you will need to download the USBasp drivers, available from the author of &lt;a href=&#34;http://www.fischl.de/usbasp/&#34;&gt;USBasp&lt;/a&gt;. Linux &amp;amp; Mac machines do not need additional drivers.&lt;/li&gt;
&lt;li&gt;If you are running a 64 bit version of Windows, you will need to sign the drivers before installation:&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;a href=&#34;http://www.ngohq.com/home.php?page=dseo&#34;&gt;Driver Signature Enforcement Overrider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Extract the USBasp drivers&lt;/li&gt;
&lt;li&gt;Run Driver Signature Enforcement Overrider as Administrator&lt;/li&gt;
&lt;li&gt;Put your computer into Test Mode (this allows self-signed drivers to run)&lt;/li&gt;
&lt;li&gt;Sign all the DLL and SYS files in the extracted USBasp driver package&lt;/li&gt;
&lt;li&gt;Optionally, remove the watermarks from your system (Test Mode will show &amp;ldquo;test mode&amp;rdquo; in the bottom right of your desktop)&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;(R2 boards only) Connect the &amp;ldquo;Upload&amp;rdquo; jumper on the MHVBoard, move the power jumper to &amp;ldquo;USB&amp;rdquo; and connect it to your computer&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press the reset button on the MHVBoard to put it into Upload mode. The LED will flicker briefly to indicate that it has entered the bootloader&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you are running Windows, the first time you do this, a new device will be detected. Point the driver installer at the drivers you extracted/signed earlier.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Launch the Arduino Environment&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Write/load your sketch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose &amp;ldquo;MHVBoard&amp;rdquo; from the Boards menu&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Upload your sketch, your sketch will run automatically after uploading&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To re-enter the bootloader press reset again. As before, the LED will flicker to show it is ready for another upload&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>R7 Assembly Instructions</title>
      <link>https://infernoembedded.com/projects/mhvboard/tutorials/r7-assembly-instructions/</link>
      <pubDate>Sat, 28 Dec 2013 03:34:29 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/mhvboard/tutorials/r7-assembly-instructions/</guid>
      <description>&lt;h3 id=&#34;tools&#34;&gt;Tools&lt;/h3&gt;
&lt;p&gt;You will need the following tools to assemble your MHVBoard:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Soldering iron with a fine tip (25W will do)&lt;/li&gt;
&lt;li&gt;Solder (the PCB is ROHS compliant if you want to use lead-free solder, but lead based solder is easier to work with)&lt;/li&gt;
&lt;li&gt;Needle-nose pliers&lt;/li&gt;
&lt;li&gt;Side cutters&lt;/li&gt;
&lt;li&gt;Multimeter&lt;/li&gt;
&lt;li&gt;Blutac&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;packing-list&#34;&gt;Packing List&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;MHVBoard R7 Packing ListItem&lt;/th&gt;
					&lt;th&gt;Quantity&lt;/th&gt;
					&lt;th&gt;Location&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;10uF electrolytic capacitor&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;C1, C2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;22pF ceramic capacitor&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;C3, C4&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;100nF ceramic capacitor&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;C5, C6&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;10uF tantalum capacitor&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;C7&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;3.6V zener diode&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;D1, D2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;1N4001 silicon rectifier diode&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;D3&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;1N5817 Schottky diode&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;JP5 (not on silkscreen)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;28 pin narrow DIP IC socket&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;IC1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Atmega328P&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;IC1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;7805 5V voltage regulator&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;IC2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AMS1117 3.3V voltage regulator&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;IC3&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;1x8 female pin header&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;JP1, JP2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;1x6 female pin header&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;JP3, JP8&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;1x4 pin header&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;JP7&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2x3 pin header&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;ICSP (JP9)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;1x25 right angle pin header&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;JP4&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;10uH axial inductor&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;L1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;20MHz HC49/S crystal&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;Q1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;68Ohm resistor&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;R1, R2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;1MOhm resistor&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;R3&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;1.5KOhm resistor&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;R4&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;1k resistor&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;R5, R6&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;3mm LED (random colours)&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;LED1, LED2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;6x6mm pushbutton switch&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;S1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;5 pin microUSB connector&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;X1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2.1mm DC jack&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;J1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;micro USB cable&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;MHVBoard R7 PCB&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Once you have confirmed that you have all the components, you are ready to begin construction.&lt;/p&gt;</description>
    </item>
    <item>
      <title>mhvboard 7</title>
      <link>https://infernoembedded.com/projects/mhvboard/releases/7/</link>
      <pubDate>Fri, 27 Dec 2013 03:45:29 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/mhvboard/releases/7/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Remove upload jumper
&lt;ul&gt;
&lt;li&gt;Reroute traces away from the crystal&lt;/li&gt;
&lt;li&gt;Fix silkscreen for Arduino analog input&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/USBaspLoader.2010-07-27-mhvboard.zip&#34;&gt;USBaspLoader.2010-07-27-mhvboard.zip&lt;/a&gt; (175.1 KB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/MHVBoardR7.7z&#34;&gt;MHVBoardR7.7z&lt;/a&gt; (187.3 KB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Unipolar Stepper Motor</title>
      <link>https://infernoembedded.com/projects/flame-runtime/tutorials/unipolar-stepper-motor/</link>
      <pubDate>Fri, 27 Dec 2013 01:33:14 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/flame-runtime/tutorials/unipolar-stepper-motor/</guid>
      <description>&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;
&lt;p&gt;Driver a stepper motor back and forth.&lt;/p&gt;
&lt;h2 id=&#34;code&#34;&gt;Code&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define MHVLIB_NEED_PURE_VIRTUAL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Bring in the MHV IO header
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;MHV_io.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Bring in the Stepper driver
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;MHV_StepperMotorUnipolar.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Bring in the realtime clock driver
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;MHV_RTC.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Bring in the power management header
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;avr/power.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;avr/sleep.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Bring in the timer header
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;MHV_Timer8.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Program space header, saves RAM by storing constants in flash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;avr/pgmspace.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define ATTINY
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// A timer we will use to tick the RTC
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MHV_Timer8 &lt;span style=&#34;color:#a6e22e&#34;&gt;tickTimer&lt;/span&gt;(MHV_TIMER8_0);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MHV_TIMER_ASSIGN_1INTERRUPT(tickTimer, MHV_TIMER0_INTERRUPTS);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#else
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// A timer we will use to tick the RTC
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MHV_Timer8 &lt;span style=&#34;color:#a6e22e&#34;&gt;tickTimer&lt;/span&gt;(MHV_TIMER8_2);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MHV_TIMER_ASSIGN_1INTERRUPT(tickTimer, MHV_TIMER2_INTERRUPTS);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define ALARM_COUNT	4
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// The RTC object we will use
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MHV_RTC_CREATE (rtc, ALARM_COUNT);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// A timer trigger that will tick the RTC
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;rtcTrigger&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;data) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	rtc.tick1ms();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* We have a hard limit of 1000 steps/second due to the 1ms resolution of the RTC class
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * The motor &amp;amp; control circuitry have a lower limit due to their electrical &amp;amp; mechanical properties
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define MAX_SPEED 500
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define MIN_SPEED 100
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* The steps per rotation
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * For the 28BYJ48 geared stepper, this is 32 steps multiplied by a gear ratio of 64,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * multiplied by 2 since we are half stepping
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define STEPS_PER_ROTATION	(2*32*64)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* The stepper driver
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * Available modes are WAVE, FULL and HALF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MHV_StepperMotorUnipolar &lt;span style=&#34;color:#a6e22e&#34;&gt;stepper&lt;/span&gt;(rtc, MHV_STEPPER_MODE_HALF, MHV_PIN_B0);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* A class that tells the stepper what to do next
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * Note that moveComplete() is called every time the stepper driver has completed a move
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;StepperInstructions&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; MHV_StepperListener {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;private&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;bool&lt;/span&gt;	_forward;		&lt;span style=&#34;color:#75715e&#34;&gt;// The direction we are currently rotating
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;float&lt;/span&gt;	_speed;			&lt;span style=&#34;color:#75715e&#34;&gt;// The rotation speed (steps/second)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;bool&lt;/span&gt;	_speedUp;		&lt;span style=&#34;color:#75715e&#34;&gt;// True if we are increasing speed, false otherwise
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	StepperInstructions();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;moveComplete&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;int32_t&lt;/span&gt; position);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;StepperInstructions&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;StepperInstructions() &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	_forward(true),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	_speed(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	_speedUp(true) {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; StepperInstructions&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;moveComplete(&lt;span style=&#34;color:#66d9ef&#34;&gt;int32_t&lt;/span&gt; position) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	_forward &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;_forward;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	_speed &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; (_speedUp) &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (_speed &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; MAX_SPEED) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		_speed &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; MAX_SPEED;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		_speedUp &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; false;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	} &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;if&lt;/span&gt; (_speed &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; MIN_SPEED) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		_speed &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; MIN_SPEED;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		_speedUp &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; true;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;int32_t&lt;/span&gt; newPosition &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (_forward) &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; STEPS_PER_ROTATION : &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	stepper.rotate(_forward, _speed, newPosition);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;StepperInstructions stepperInstructions;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; NORETURN &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#75715e&#34;&gt;// Disable all peripherals and enable just what we need
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	power_all_disable();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#ifdef ATTINY
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	power_timer0_enable();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define PRESCALER	MHV_TIMER_PRESCALER_5_64
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#else
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	power_timer2_enable();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define PRESCALER	MHV_TIMER_PRESCALER_7_64
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	set_sleep_mode(SLEEP_MODE_IDLE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#75715e&#34;&gt;// Register the listener with the stepper driver to be notified when moves are complete
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	stepper.registerListener(stepperInstructions);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#75715e&#34;&gt;// Configure the tick timer to tick every 1ms (at 16MHz)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	tickTimer.setPeriods(PRESCALER, &lt;span style=&#34;color:#ae81ff&#34;&gt;249&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	tickTimer.setTriggers(rtcTrigger, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	tickTimer.enable();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	sei();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#75715e&#34;&gt;/* Start with a forward rotation of 1 revolution at 100 steps/second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;	 * Further instructions will be triggered from StepperInstructions::moveComplete
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;	 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	stepper.rotate(true, &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; STEPS_PER_ROTATION);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (;;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#75715e&#34;&gt;/* All the interesting things happen in events
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;		 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		rtc.handleEvents();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#75715e&#34;&gt;// Sleep until an interrupt occurs
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		sleep_mode();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	UNREACHABLE;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;hardware&#34;&gt;Hardware&lt;/h2&gt;
&lt;p&gt;To complete this tutorial, you need a unipolar stepper motor and 4 N channel MOSFETs with internal bypass diodes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blinking LED</title>
      <link>https://infernoembedded.com/projects/flame-runtime/tutorials/blinking-led/</link>
      <pubDate>Fri, 27 Dec 2013 01:24:36 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/flame-runtime/tutorials/blinking-led/</guid>
      <description>&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;Blink an LED connected to Arduino pin 13.&lt;/p&gt;
&lt;h3 id=&#34;code&#34;&gt;Code&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Bring in the MHV IO header
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;MHV_io.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Bring in the AVR delay header (needed for _delay_ms)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;util/delay.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;avr/power.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Disable all peripherals and enable just what we need
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	power_all_disable();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Enable output on pin 13 of the Arduino - this normally has an LED connected
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	mhv_setOutput(MHV_ARDUINO_PIN_13);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; (true) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Turn off the LED
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		mhv_pinOff(MHV_ARDUINO_PIN_13);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Sleep for 1/3 sec
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		_delay_ms(&lt;span style=&#34;color:#ae81ff&#34;&gt;333&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Turn on the LED
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		mhv_pinOn(MHV_ARDUINO_PIN_13);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Sleep for 1/3 sec
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		_delay_ms(&lt;span style=&#34;color:#ae81ff&#34;&gt;333&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Main must return an int, even though we never get here
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;&lt;/h3&gt;
&lt;h3 id=&#34;how-it-works&#34;&gt;How it works&lt;/h3&gt;
&lt;h4 id=&#34;line-2&#34;&gt;Line 2&lt;/h4&gt;
&lt;p&gt;The&lt;a href=&#34;http://www.makehackvoid.com/docs/mhvlib/_m_h_v__io_8h.html&#34;&gt; MHV_io.h&lt;/a&gt; header contains basic I/O functionality for MHVLib. It is needed for mhv_setOutput(), mhv_pinOff() and mhv_pinOn().&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building with Makefiles</title>
      <link>https://infernoembedded.com/projects/flame-runtime/tutorials/building-with-makefiles/</link>
      <pubDate>Thu, 26 Dec 2013 08:23:11 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/flame-runtime/tutorials/building-with-makefiles/</guid>
      <description>&lt;p&gt;The Flame Runtime can be built from the command line using GNU make.&lt;/p&gt;
&lt;h2 id=&#34;getting-a-toolchain&#34;&gt;Getting a Toolchain&lt;/h2&gt;
&lt;p&gt;To do so, you should have an AVR toolchain installed. Windows, Linux &amp;amp; MacOSX users are encouraged to use &lt;a href=&#34;https://infernoembedded.com/projects/avr-tools&#34;&gt;Inferno Embedded AVR Tools&lt;/a&gt;, as this is the toolchain Flame is tested with.&lt;/p&gt;
&lt;h2 id=&#34;preparing-to-build&#34;&gt;Preparing to Build&lt;/h2&gt;
&lt;p&gt;After cloning the git repository (or extracting the release archive), edit the env script in the top level of the package, and configure it to suit your installation. As shipped, it expects the AVR toolchain to be in /usr/local/mhvavrtools, and will add this to the path.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Eclipse</title>
      <link>https://infernoembedded.com/pages/installing-eclipse/</link>
      <pubDate>Thu, 26 Dec 2013 03:28:34 +0000</pubDate>
      <guid>https://infernoembedded.com/pages/installing-eclipse/</guid>
      <description>&lt;h2 id=&#34;eclipse-install&#34;&gt;Eclipse Install&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Download and extract the latest version of Eclipse Classic for your platform from &lt;a href=&#34;http://www.eclipse.org/downloads/&#34;&gt;http://www.eclipse.org&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Install a recent AVR Toolchain. Windows &amp;amp; OSX users should use &lt;a href=&#34;https://infernoembedded.com/projects/avr-tools&#34;&gt;Inferno Embedded AVR Tools&lt;/a&gt;, as should Linux users if their distro does not include GCC-4.8.&lt;/li&gt;
&lt;li&gt;Install &lt;a href=&#34;http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc&#34;&gt;Doxygen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;running-eclipse-for-the-first-time&#34;&gt;Running Eclipse for the first time&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Download and extract workspace.7z from the bottom of this page. This will give you an Eclipse workspace that is preconfigured with extensive syntax highlighting.&lt;/li&gt;
&lt;li&gt;Launch Eclipse, and select your new workspace&lt;/li&gt;
&lt;li&gt;Extract the eclipse-updatesites.7z archive from the bottom of this page&lt;/li&gt;
&lt;li&gt;We will now be installing the following Eclipse plugins:
&lt;ul&gt;
&lt;li&gt;AnyEdit Tools - cleans up whitespace on save&lt;/li&gt;
&lt;li&gt;Eclox - provides Doxygen parsing&lt;/li&gt;
&lt;li&gt;MultiClipboard - provides support for multiple clipboard&lt;/li&gt;
&lt;li&gt;EGit - manage Git repositories within Eclipse&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click on &amp;ldquo;Help&amp;rdquo;, &amp;ldquo;Install New Software&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Click on &amp;ldquo;Available Software Sites&amp;rdquo;, &amp;ldquo;Import&amp;rdquo;, then select the eclipse-updatesites.xml you extracted earlier&lt;/li&gt;
&lt;li&gt;Exit and restart Eclipse&lt;/li&gt;
&lt;li&gt;Click on &amp;ldquo;Help&amp;rdquo;, &amp;ldquo;Install New Software&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Select the &amp;ldquo;Anyedit&amp;rdquo; update site, &amp;ldquo;Eclipse-3.5-3.7 Plugins&amp;rdquo;, and install &amp;ldquo;AnyEditTools&amp;rdquo;. Restart when prompted&lt;/li&gt;
&lt;li&gt;Click on &amp;ldquo;Help&amp;rdquo;, &amp;ldquo;Install New Software&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Select the &amp;ldquo;AVR Eclipse&amp;rdquo; update site, then &amp;ldquo;AVR Eclipse Plugin&amp;rdquo;. Restart when prompted&lt;/li&gt;
&lt;li&gt;Click on &amp;ldquo;Window&amp;rdquo;, &amp;ldquo;Preferences&amp;rdquo;, &amp;ldquo;AVR&amp;rsquo;, &amp;ldquo;Paths&amp;rdquo; and configure your AVR toolchain. If you are using Inferno Embedded AVR Tools, you should set up the following custom paths (examples are for a 64 bit Windows install):&lt;/li&gt;
&lt;li&gt;Click on &amp;ldquo;Help&amp;rdquo;, &amp;ldquo;Install New Software&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Select the &amp;ldquo;Eclox&amp;rdquo; update site, then Eclox&amp;rdquo;. Restart when prompted&lt;/li&gt;
&lt;li&gt;Click on &amp;ldquo;Help&amp;rdquo;, &amp;ldquo;Install New Software&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Select the &amp;ldquo;Multi Clipboard&amp;rdquo; update site, then Multi Clipboard. Restart when prompted&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;importing-flame&#34;&gt;Importing Flame&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;In Eclipse, select File, Import, Git, Projects from Git, Clone URI, then enter as the uri: &lt;a href=&#34;https://github.com/InfernoEmbedded/flame.git&#34;&gt;https://github.com/InfernoEmbedded/flame.git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Select &amp;ldquo;master&amp;rdquo; as the repository to clone&lt;/li&gt;
&lt;li&gt;Eclipse will spend a while cloning the repository andindexing all the code, then you are ready to compile&lt;/li&gt;
&lt;li&gt;Select all the projects in Project Explorer (or just the projects you care about), right click and select &amp;ldquo;Build Configurations&amp;rdquo;, &amp;ldquo;Set Active&amp;rdquo;, &amp;ldquo;ATmega328P_20MHz&amp;rdquo; (for the MHVBoard), or whatever is suitable for your target platform&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;building-flame&#34;&gt;Building Flame&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Right click on &amp;ldquo;flame&amp;rdquo; in &amp;ldquo;Project Explorer&amp;rdquo;, then select &amp;ldquo;Build Configurations&amp;rdquo;, &amp;ldquo;Set Active&amp;rdquo;, and choose the build configuration you need. &lt;a href=&#34;http://www.makehackvoid.com/group-projects/mhvboard-arduino-clone&#34;&gt;MHVBoard&lt;/a&gt; R2/R7 users should choose ATmega328p-20MHz&lt;/li&gt;
&lt;li&gt;Right click on &amp;ldquo;mhvlib&amp;rdquo; and select &amp;ldquo;Build Project&amp;rdquo;&lt;/li&gt;
&lt;li&gt;The same procedure can be used to build any of the tutorial projects&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;uploading-to-the-microcontroller&#34;&gt;Uploading to the Microcontroller&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Build your project (see above)&lt;/li&gt;
&lt;li&gt;Right click on the project in &amp;ldquo;Project Explorer&amp;rdquo;, select &amp;ldquo;Properties&amp;rdquo;, &amp;ldquo;AVR&amp;rdquo;, &amp;ldquo;AVRDude&amp;rdquo; and select a programmer configuration from the Programmer tab (not the configuration selection on top, which allows you to have multiple configs, we use this to support different microcontrollers)&lt;/li&gt;
&lt;li&gt;You can create a new programmer configuration by selecting &amp;ldquo;New&amp;rdquo;, and filling out the details from the table below. The supplied workspace already has a few common programmers setups added&lt;/li&gt;
&lt;li&gt;If you are using an MHVBoard (or other bootloader that needs an explicit reset), reset your device&lt;/li&gt;
&lt;li&gt;Right click on the project in &amp;ldquo;Project Explorer&amp;rdquo;, select &amp;ldquo;AVR&amp;rdquo;, &amp;ldquo;Upload Project to Target Device&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Name&lt;/th&gt;
					&lt;th&gt;Programmer&lt;/th&gt;
					&lt;th&gt;Speed&lt;/th&gt;
					&lt;th&gt;Port&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;MHVBoard R2/R7&lt;/td&gt;
					&lt;td&gt;usbasp&lt;/td&gt;
					&lt;td&gt;blank&lt;/td&gt;
					&lt;td&gt;blank&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Optiboot, Arduino Mini w/ ATmega328&lt;/td&gt;
					&lt;td&gt;stk500&lt;/td&gt;
					&lt;td&gt;115,200&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Arduino Uno, Arduino Ethernet&lt;/td&gt;
					&lt;td&gt;Arduino&lt;/td&gt;
					&lt;td&gt;115,200&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;&amp;lt;your serial port&amp;gt;&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Arduino Duemilanove w/ ATmega328, Arduino Nano w/ ATmega328, Arduino Mega, Arduino Fio, Lilypad Arduino w/ ATmega328, Arduino Pro/Pro Mini w/ ATmega328&lt;/td&gt;
					&lt;td&gt;Arduino&lt;/td&gt;
					&lt;td&gt;57,600&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Arduino Duemilanove w/ ATmega168, Diecimila, Arduino Nano w/ ATmega168, Arduino Mini w/ ATmega168, Arduino BT, Lilypad Arduino w/ ATmega168, Arduino Pro/Pro Mini w/ ATmega168, Arduino NG&lt;/td&gt;
					&lt;td&gt;Arduino&lt;/td&gt;
					&lt;td&gt;19,200&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Arduino Mega 2560/ Mega ADK&lt;/td&gt;
					&lt;td&gt;stk500v2&lt;/td&gt;
					&lt;td&gt;115,200&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;updating-flame&#34;&gt;Updating Flame&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;To fetch the latest version of Flame from the git repository, issue a &amp;ldquo;git pull&amp;rdquo; in the flame directory&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;useful-information&#34;&gt;Useful Information&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Keyboard shortcuts can be configured in Windows, Preferences, General, Keys&lt;/li&gt;
&lt;li&gt;Syntax highlighting can be configured in Windows, Preferences, C/C++, Editor, Syntax Coloring&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/workspace.7z&#34;&gt;workspace.7z&lt;/a&gt; (667.8 KB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/eclipse-updatesites.7z&#34;&gt;eclipse-updatesites.7z&lt;/a&gt; (0.5 KB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>avrtools 20131017</title>
      <link>https://infernoembedded.com/projects/avr-tools/releases/20131017/</link>
      <pubDate>Thu, 17 Oct 2013 08:58:37 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/avr-tools/releases/20131017/</guid>
      <description>&lt;p&gt;Use the latest stable versions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make 4.0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use the latest development versions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Binutils 2.24.51&lt;/li&gt;
&lt;li&gt;GCC 4.8-20131010&lt;/li&gt;
&lt;li&gt;AVR LibC 1.8.0-dev&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Statically link gettext &amp;amp; iconv on Win32&lt;/p&gt;
&lt;p&gt;Enable loop optimisations in GCC&lt;/p&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/MHV_AVR_Tools_20131101.exe&#34;&gt;MHV_AVR_Tools_20131101.exe&lt;/a&gt; (26.47 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-osx_x64-20131017.runme&#34;&gt;mhvavrtools-osx_x64-20131017.runme&lt;/a&gt; (16.07 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-linux_x64-20131017.runme&#34;&gt;mhvavrtools-linux_x64-20131017.runme&lt;/a&gt; (21.32 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-linux_x86-20131017.runme&#34;&gt;mhvavrtools-linux_x86-20131017.runme&lt;/a&gt; (20.84 MB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>avrtools 20120709</title>
      <link>https://infernoembedded.com/projects/avr-tools/releases/20120709/</link>
      <pubDate>Tue, 09 Jul 2013 13:26:09 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/avr-tools/releases/20120709/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Bump to GCC 4.7.1 and Binutils 2.22.52.20120702 (development snapshot)
&lt;ul&gt;
&lt;li&gt;Enable LTO&lt;/li&gt;
&lt;li&gt;Enable XMega microcontrollers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/MHV_AVR_Tools_20120709.exe&#34;&gt;MHV_AVR_Tools_20120709.exe&lt;/a&gt; (20.13 MB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>avrtools 20121007</title>
      <link>https://infernoembedded.com/projects/avr-tools/releases/20121007/</link>
      <pubDate>Sun, 07 Oct 2012 12:20:42 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/avr-tools/releases/20121007/</guid>
      <description>&lt;p&gt;Update to GCC 4.7.2&lt;/p&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/MHV_AVR_Tools_20121007.exe&#34;&gt;MHV_AVR_Tools_20121007.exe&lt;/a&gt; (20.37 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-osx_x64-20121007.runme&#34;&gt;mhvavrtools-osx_x64-20121007.runme&lt;/a&gt; (14.38 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-linux_x64-20121007.runme&#34;&gt;mhvavrtools-linux_x64-20121007.runme&lt;/a&gt; (17.98 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-linux_x86-20121007.runme&#34;&gt;mhvavrtools-linux_x86-20121007.runme&lt;/a&gt; (17.23 MB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>avrtools 20120329</title>
      <link>https://infernoembedded.com/projects/avr-tools/releases/20120329/</link>
      <pubDate>Thu, 29 Mar 2012 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/avr-tools/releases/20120329/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Update to GCC 4.7.0
&lt;ul&gt;
&lt;li&gt;Add AVR-GDB&lt;/li&gt;
&lt;li&gt;Add SimAVR&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/MHV_AVR_Tools_20120329.exe&#34;&gt;MHV_AVR_Tools_20120329.exe&lt;/a&gt; (28.77 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-linux_x64-20120329.runme&#34;&gt;mhvavrtools-linux_x64-20120329.runme&lt;/a&gt; (14.37 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-linux_x86-20120329.runme&#34;&gt;mhvavrtools-linux_x86-20120329.runme&lt;/a&gt; (13.56 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-osx_x64-20120329.runme&#34;&gt;mhvavrtools-osx_x64-20120329.runme&lt;/a&gt; (14.10 MB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>avrtools 20120122</title>
      <link>https://infernoembedded.com/projects/avr-tools/releases/20120122/</link>
      <pubDate>Sun, 22 Jan 2012 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/avr-tools/releases/20120122/</guid>
      <description>&lt;p&gt;All files supplied are self-extracting - under *nix machines, set the permissions to execute and run them to extract.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix missing library problems in previous release&lt;/li&gt;
&lt;li&gt;Add MacOSX support&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/MHV_AVR_Tools_20120122.exe&#34;&gt;MHV_AVR_Tools_20120122.exe&lt;/a&gt; (23.29 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-linux_x64-20120122.7z&#34;&gt;mhvavrtools-linux_x64-20120122.7z&lt;/a&gt; (23.32 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-linux_x86-20120122.7z&#34;&gt;mhvavrtools-linux_x86-20120122.7z&lt;/a&gt; (22.76 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-OSX_x64-20120122.7z&#34;&gt;mhvavrtools-OSX_x64-20120122.7z&lt;/a&gt; (9.97 MB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>flame 20111227</title>
      <link>https://infernoembedded.com/projects/flame-runtime/releases/20111227/</link>
      <pubDate>Tue, 27 Dec 2011 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/flame-runtime/releases/20111227/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Use object references instead of pointers where applicable
&lt;ul&gt;
&lt;li&gt;Add WS2801 LED driver &amp;amp; RGB pixel types&lt;/li&gt;
&lt;li&gt;Add Unipolar stepper motor driver&lt;/li&gt;
&lt;li&gt;Ensure all tutorials use NORETURN/UNREACHABLE&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvlib-20111227.7z&#34;&gt;mhvlib-20111227.7z&lt;/a&gt; (532.9 KB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>avrtools 20111222</title>
      <link>https://infernoembedded.com/projects/avr-tools/releases/20111222/</link>
      <pubDate>Thu, 22 Dec 2011 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/avr-tools/releases/20111222/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Update to latest GCC 4. snapshot
&lt;ul&gt;
&lt;li&gt;Statically link GCC dependancies&lt;/li&gt;
&lt;li&gt;Include the correct libusb-win32 package so avrdude will launch&lt;/li&gt;
&lt;li&gt;Add preliminary support for Linux&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;errata&#34;&gt;Errata&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The libiconv-2.dll file is missing from the Win32 installation.&lt;/li&gt;
&lt;li&gt;AVR LibC is missing some symbols.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To resolve these issues, extract the attached errata archive into C:\Program Files (x86)\MHV AVR Tools&lt;/p&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/MHV_AVR_Tools_20111222.exe&#34;&gt;MHV_AVR_Tools_20111222.exe&lt;/a&gt; (23.60 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-win32-20111122-errata.7z&#34;&gt;mhvavrtools-win32-20111122-errata.7z&lt;/a&gt; (782.9 KB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-linux_x64-20111222.7z&#34;&gt;mhvavrtools-linux_x64-20111222.7z&lt;/a&gt; (23.22 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-linux_x86-20111222.7z&#34;&gt;mhvavrtools-linux_x86-20111222.7z&lt;/a&gt; (22.67 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-OSX_x64-20120122_0.7z&#34;&gt;mhvavrtools-OSX_x64-20120122.7z&lt;/a&gt; (9.97 MB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>flame 20111109</title>
      <link>https://infernoembedded.com/projects/flame-runtime/releases/20111109/</link>
      <pubDate>Wed, 09 Nov 2011 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/flame-runtime/releases/20111109/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Add VUSB console, allows text output from V-USB devices (such as the &lt;a href=&#34;http://www.makehackvoid.com/group-projects/mhvboard-arduino-clone&#34;&gt;MHVBoard&lt;/a&gt;) over USB. Requires &lt;a href=&#34;http://www.pjrc.com/teensy/hid_listen.html&#34;&gt;Paul Stoffregen&amp;rsquo;s HID Listen&lt;/a&gt; program to receive the output.
&lt;ul&gt;
&lt;li&gt;Extended Device_TX with new methods that utilise dynamic memory: printf(), and write(Xint(8|16|32)_t). The following classes inherit from Device_TX and will be able to use the new methods:
&lt;ul&gt;
&lt;li&gt;MHV_Display* (all display classes)&lt;/li&gt;
&lt;li&gt;MHV_HardwareSerial (serial port driver)&lt;/li&gt;
&lt;li&gt;MHV_VusbConsole (USB console mentioned above)&lt;/li&gt;
&lt;li&gt;MHV_VusbTypist (USB Keyboard driver with Device_TX support)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvlib-20111109.7z&#34;&gt;mhvlib-20111109.7z&lt;/a&gt; (1.14 MB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>avrtools 20111106</title>
      <link>https://infernoembedded.com/projects/avr-tools/releases/20111106/</link>
      <pubDate>Sun, 06 Nov 2011 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/avr-tools/releases/20111106/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Upgrade to GCC 4.6.2 (fixes some long standing AVR bugs)
&lt;ul&gt;
&lt;li&gt;Upgrade to AVR LibC 1.7.2rc2252&lt;/li&gt;
&lt;li&gt;Upgrade to AVRDUDE 5.11.1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/MHV_AVR_Tools_20111106.exe&#34;&gt;MHV_AVR_Tools_20111106.exe&lt;/a&gt; (19.85 MB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>flame 20111011</title>
      <link>https://infernoembedded.com/projects/flame-runtime/releases/20111011/</link>
      <pubDate>Tue, 11 Oct 2011 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/flame-runtime/releases/20111011/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Add Doxygen documentation
&lt;ul&gt;
&lt;li&gt;Address Doxygen warnings&lt;/li&gt;
&lt;li&gt;Minor optimisations (flash usage in RTC class)&lt;/li&gt;
&lt;li&gt;New Class: MHV-VusbTypist - allows strings to be sent to an emulated USB keyboard&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvlib-20111011.7z&#34;&gt;mhvlib-20111011.7z&lt;/a&gt; (1.15 MB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>flame 20110929</title>
      <link>https://infernoembedded.com/projects/flame-runtime/releases/20110929/</link>
      <pubDate>Thu, 29 Sep 2011 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/flame-runtime/releases/20110929/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Illustrate AVR LibC power saving in all tutorials
&lt;ul&gt;
&lt;li&gt;Add new event driven classes: PinChangeManager and ADC&lt;/li&gt;
&lt;li&gt;Add event functionality to Device_RX and RTC&lt;/li&gt;
&lt;li&gt;Port Arduino PID class to MHVlib&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvlib-20110929.7z&#34;&gt;mhvlib-20110929.7z&lt;/a&gt; (112.2 KB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>flame 20110920</title>
      <link>https://infernoembedded.com/projects/flame-runtime/releases/20110920/</link>
      <pubDate>Tue, 20 Sep 2011 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/flame-runtime/releases/20110920/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Bug fixes
&lt;ul&gt;
&lt;li&gt;Added HD44780 via Shift Register driver&lt;/li&gt;
&lt;li&gt;Added Voltage Regulator&lt;/li&gt;
&lt;li&gt;Added EEPROM support&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvlib-20110920.7z&#34;&gt;mhvlib-20110920.7z&lt;/a&gt; (106.9 KB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>avrtools 20110306</title>
      <link>https://infernoembedded.com/projects/avr-tools/releases/20110306/</link>
      <pubDate>Sun, 06 Mar 2011 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/avr-tools/releases/20110306/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;GCC updated to 4.5.2
&lt;ul&gt;
&lt;li&gt;AVR LibC Updated to 1.7.1 (fixes delay bug)&lt;/li&gt;
&lt;li&gt;Included GNU Win32 utilities (rm, touch, echo &amp;amp; friends)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/MHV_AVR_Tools_20110306.exe&#34;&gt;MHV_AVR_Tools_20110306.exe&lt;/a&gt; (16.67 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/devenv.20110306.7z&#34;&gt;devenv.20110306.7z&lt;/a&gt; (1.6 KB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvavrtools-src.20110306.7z&#34;&gt;mhvavrtools-src.20110306.7z&lt;/a&gt; (36.1 KB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>flame 20110110</title>
      <link>https://infernoembedded.com/projects/flame-runtime/releases/20110110/</link>
      <pubDate>Mon, 10 Jan 2011 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/flame-runtime/releases/20110110/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Add HD44780 support&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvlib-20110110.7z&#34;&gt;mhvlib-20110110.7z&lt;/a&gt; (67.1 KB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>flame 20101231</title>
      <link>https://infernoembedded.com/projects/flame-runtime/releases/20101231/</link>
      <pubDate>Fri, 31 Dec 2010 00:20:47 +0000</pubDate>
      <guid>https://infernoembedded.com/projects/flame-runtime/releases/20101231/</guid>
      <description>&lt;p&gt;Relocate async writing from HardwareSerial to Device_TX. HardwareSerial &amp;amp; Display_Monochrome implement this, and all subclasses now support async text support.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Heads up!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As a result of the above change, the asyncWrite() calls to HardwareSerial are no longer supported, and instead are replaced by write() calls inherited from Device_TX.&lt;/p&gt;
&lt;h3 id=&#34;downloads&#34;&gt;Downloads&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://infernoembedded.com/files/project/mhvlib-20101231.7z&#34;&gt;mhvlib-20101231.7z&lt;/a&gt; (62.5 KB)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
