{"id":16181,"date":"2022-09-30T13:48:14","date_gmt":"2022-09-30T13:48:14","guid":{"rendered":"https:\/\/wolles-elektronikkiste.de\/?p=16181"},"modified":"2024-10-26T16:01:07","modified_gmt":"2024-10-26T16:01:07","slug":"using-megatinycore","status":"publish","type":"post","link":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore","title":{"rendered":"Using megaTinyCore"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">About this post<\/h2>\n\n<p>Some time ago, I had reported about programming ATtiny MCUs using the ATTinyCore package (<a href=\"https:\/\/wolles-elektronikkiste.de\/en\/programming-attiny-with-arduino-code\" target=\"_blank\" rel=\"noopener\">link<\/a> to the post). However, ATtinyCore covers only a part of the ATtiny family. The representatives of the tinyAVR<sup>\u00ae<\/sup> series 0, 1 and 2, which <a href=\"https:\/\/www.microchip.com\/\" target=\"_blank\" rel=\"noopener\">Microchip<\/a> has launched in recent years, are missing. They differ fundamentally in some aspects from the other members of the ATtiny family. You can program these newer ATtinys with Arduino code using the <a href=\"https:\/\/github.com\/SpenceKonde\/megaTinyCore\" target=\"_blank\" rel=\"noopener\">megaTinyCore<\/a> package from <a href=\"https:\/\/github.com\/SpenceKonde\" target=\"_blank\" rel=\"noopener\">Spence Konde<\/a>.<\/p>\r\n<p>Probably the most considerable difference in dealing with these newer microcontrollers is programming via UPDI (Unified Program and Debug Interface). This is a proprietary programming and debug interface from Microchip that requires only a single wire. I present several options for uploading sketches via UPDI using the Arduino IDE. This is what you can expect:<\/p>\r\n<ul>\r\n<li><a href=\"#megaTinyCore_family\">The megaTinyCore family<\/a><\/li>\r\n<li><a href=\"#prep\">Preparations<\/a><\/li>\r\n<li><a href=\"#three_upload_options\">Uploading sketches with megaTinyCore &#8211; 3 options<\/a>\r\n<ul>\r\n<li><a href=\"#arduino_as_updi_programmer\">Arduino as UPDI Programmer<\/a><\/li>\r\n<li><a href=\"#usb2ttl_adaper_as_updi\">USB-to-TTL adapter as UPDI programmer<\/a><\/li>\r\n<li><a href=\"#atmel-ice_as_updi_programmer\">Atmel-ICE as UPDI Programmer<\/a><\/li>\r\n<\/ul>\r\n<\/li>\r\n<li><a href=\"#upload_per_optiboot\">Uploading sketches via Optiboot bootloader<\/a>\r\n<ul>\r\n<li><a href=\"#optiboot_w_o_reset\">Optiboot without reset pin &#8211; for all tinyAVR series<\/a><\/li>\r\n<li><a href=\"#optiboot_w_reset\">Optiboot with reset pin &#8211; only for the tinyAVR 2 series<\/a><\/li>\r\n<\/ul>\r\n<\/li>\r\n<li><a href=\"#serial_monitor_w_o_optiboot\">Using the Serial Monitor without Optiboot<\/a><\/li>\r\n<li><a href=\"#outlook\">Outlook<\/a><\/li>\r\n<\/ul>\r\n\n<h2 class=\"wp-block-heading\" id=\"megaTinyCore_family\">The megaTinyCore family<\/h2>\n\n<p>The megaTinyCore family is quite large. Here is first an overview which covers some selected features:<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/tinyAVR_tech_overview-1024x871.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"871\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/tinyAVR_tech_overview-1024x871.png\" alt=\"\" class=\"wp-image-22161\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/tinyAVR_tech_overview-1024x871.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/tinyAVR_tech_overview-300x255.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/tinyAVR_tech_overview-768x654.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/tinyAVR_tech_overview.png 1248w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">megaTinyCore compatible tinyAVR series 0, 1 and 2 <\/figcaption><\/figure>\n\n<p>The name of the ATtinys reveals a few of their properties:<\/p>\r\n<ul>\r\n<li>From the first or the first two digits you can derive the size of the program memory in kilobytes.<\/li>\r\n<li>The penultimate digit indicates the tinyAVR series.<\/li>\r\n<li>The last digit will tell you the number of pins:\r\n<ul>\r\n<li>ATtinyxx<strong>7<\/strong>: 24 pins<\/li>\r\n<li>ATtinyxx<strong>6<\/strong>: 20 pins<\/li>\r\n<li>ATtinyxx<strong>4<\/strong>: 14 pins<\/li>\r\n<li>ATtinyxx2: <strong>8<\/strong> pins<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<p>See the megaTinyCore documentation <a href=\"https:\/\/github.com\/SpenceKonde\/megaTinyCore\" target=\"_blank\" rel=\"noopener\">here on GitHub<\/a> for more detailed information about the series and subgroups, including pinout schemes.<\/p>\r\n\n<p>However, the subject of this article is mainly the programming about the use of megaTinyCore and less the technical data.<\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"prep\">Preparations<\/h2>\n\n<h3 class=\"wp-block-heading\">Acquisition of the microcontrollers<\/h3>\n\n<p>The availability of tinyAVR series 0, 1 and 2 representatives is currently limited. In some cases there are long delivery times. I found some of the tinyAVR MCUs mainly on eBay, with a wide price range. For this article, I tried the ATtiny1614, ATtiny1626 and ATtiny3226. Not because I find these three particularly attractive, but because they are the ones I could get at a reasonable price.<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/attiny_1614_1626_3226-1024x256.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"256\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/attiny_1614_1626_3226-1024x256.jpg\" alt=\"Examples of megaTinyCore compatible microcontrollers: ATtiny3226, ATtiny1626 and ATtiny1614\" class=\"wp-image-15772\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/attiny_1614_1626_3226-1024x256.jpg 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/attiny_1614_1626_3226-300x75.jpg 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/attiny_1614_1626_3226-768x192.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/attiny_1614_1626_3226-1536x385.jpg 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/attiny_1614_1626_3226-2048x513.jpg 2048w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/attiny_1614_1626_3226-1320x331.jpg 1320w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Examples of megaTinyCore compatible microcontrollers: ATtiny3226, ATtiny1626 and ATtiny1614<\/figcaption><\/figure>\n\n<p>The tinyAVRs of the series 0, 1 and 2 are not available as PDIP, i.e. you cannot plug them directly into a breadboard. Fortunately, there are adapter PCB boards available. On the net, you can find many instructions how to solder SOIC (1.27 mm pin spacing) or SSOP components (0.65 mm pin spacing).<\/p>\r\n\n<p>If you don&#8217;t like this fine work you can buy development boards in the <a href=\"https:\/\/www.tindie.com\/\" target=\"_blank\" rel=\"noopener\">Tindie Shop<\/a>, here for example the <a href=\"https:\/\/www.tindie.com\/products\/drazzy\/attiny322416141604-dev-board-arduino-compatible\/?pt=ac_prod_search\" target=\"_blank\" rel=\"noopener\">ATtiny3224\/1614\/1604<\/a> versions. However, the store is located in the USA. The shipping costs of approx. 16 US$ are correspondingly high. I have not seen such boards elsewhere, but that I expect this to change eventually. <\/p>\r\n\n<h3 class=\"wp-block-heading\">Preparation of the Arduino IDE for megaTinyCore<\/h3>\n\n<p>First you have to implement megaTinyCore in the Arduino IDE. To do this, go to File \u2192 Preferences. Click on the icon behind &#8220;Additional Boards Manager URLs&#8221; and enter &#8220;<strong>https:\/\/descartes.net\/package_drazzy.com_index.json<\/strong>&#8221; in a separate line (<strong>the original board manager URL that you find in the installation instructions on GitHub does not work anymore!)<\/strong><\/p>\r\n\n<p>Close the windows by clicking &#8220;OK&#8221;.<\/p>\r\n<p>Now navigate to Tools \u2192 Board \u2192 Boards Manager. Search for the megaTinyCore package from Spence Konde and install it:<\/p>\r\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_select.png\"><img loading=\"lazy\" decoding=\"async\" width=\"786\" height=\"443\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_select.png\" alt=\"Installation of the megaTinyCore package\" class=\"wp-image-15505\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_select.png 786w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_select-300x169.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_select-768x433.png 768w\" sizes=\"auto, (max-width: 786px) 100vw, 786px\" \/><\/a><figcaption class=\"wp-element-caption\">Installation of the megaTinyCore package<\/figcaption><\/figure>\n\n<p>If everything worked out, you will find a large selection of ATtinys in your Arduino IDE:<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_options-1024x544.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"544\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_options-1024x544.png\" alt=\"Large megaTinyCore selection\" class=\"wp-image-15507\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_options-1024x544.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_options-300x159.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_options-768x408.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/megaTinyCore_options.png 1036w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Large megaTinyCore selection<\/figcaption><\/figure>\n\n<h2 class=\"wp-block-heading\" id=\"three_upload_options\">Uploading sketches with megaTinyCore &#8211; 3 options<\/h2>\n\n<p>Programming via UPDI requires suitable programmers. Unfortunately, there is not yet much choice for &#8220;off the shelf&#8221; models. The good news, however, is that you can make do with inexpensive components.<\/p>\r\n\n<h3 class=\"wp-block-heading\" id=\"arduino_as_updi_programmer\">Option 1: The Arduino as UPDI Programmer<\/h3>\n\n<h4 class=\"wp-block-heading\">Preparing the Arduino<\/h4>\n\n<p>First, we turn an Arduino UNO or Arduino Nano into a UPDI programmer. I guess it also works with other Arduino boards, but I haven&#8217;t tried that. The following steps must be performed:<\/p>\r\n\n<ol>\r\n<li>Get jtag2udpi <a href=\"https:\/\/github.com\/ElTangas\/jtag2updi\" target=\"_blank\" rel=\"noopener\">here<\/a> from GitHub. To do this, follow the link, click on the green button &#8220;Code&#8221; and then on &#8220;Download ZIP&#8221;.<\/li>\r\n<li>Save the ZIP file somewhere on your computer and unzip it.<\/li>\r\n<li>In the folder jtag2updi-master you will find the subfolder source, which you rename to jtag2updi.<\/li>\r\n<li>Move the folder jtag2updi into your Arduino Sketch folder. You can now delete the zip file and the folder jtag2updi-master.<\/li>\r\n<li>Open the file jtag2updi.ino, which you can find in the folder jtag2updi, with the Arduino IDE. The sketch itself is empty (see below), but the relevant files are in the same folder and are processed automatically.<\/li>\r\n<li>Upload the sketch to your Arduino. Of course, you have to set the Arduino of your choice as board.<\/li>\r\n<\/ol>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/jtag2updi_ino-1024x133.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"133\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/jtag2updi_ino-1024x133.png\" alt=\"Blank jtag2updi sketch\" class=\"wp-image-15510\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/jtag2updi_ino-1024x133.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/jtag2updi_ino-300x39.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/jtag2updi_ino-768x100.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/jtag2updi_ino.png 1289w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Blank jtag2updi sketch<\/figcaption><\/figure>\n\n<p>Now your Arduino is ready to be used as UPDI programmer.<\/p>\r\n\n<h4 class=\"wp-block-heading\">Wiring<\/h4>\n\n<p>Connecting ATtinys to your new UPDI programmer is easy. Connect GND to GND and VCC to VCC. Place a 10 \u00b5F capacitor between GND and reset of the Arduino. Connect the Arduino pin 6 via a 470 k\u03a9 resistor to the UPDI pin of the ATtiny. At <a href=\"https:\/\/github.com\/ElTangas\/jtag2updi\" target=\"_blank\" rel=\"noopener\">jtag2updi<\/a> on GitHub a 4.7 k\u03a9 resistor is applied. That also worked for me.<\/p>\r\n\r\n<p>For the ATtiny1614 used here, the UPDI pin is pin 10. You can find out the UPDI pin of your ATtiny in the datasheet, or just have a look at the pinout schemes on GitHub. Follow this <a href=\"https:\/\/github.com\/SpenceKonde\/megaTinyCore#supported-parts-click-link-for-pinout-diagram-and-details\" target=\"_blank\" rel=\"noopener\">link<\/a> and click on the group which contains your ATtiny.<\/p>\r\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/arduino_nano_updi_programmer.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"533\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/arduino_nano_updi_programmer.png\" alt=\"Arduino Nano as UPDI Programmer\" class=\"wp-image-17339\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/arduino_nano_updi_programmer.png 1000w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/arduino_nano_updi_programmer-300x160.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/arduino_nano_updi_programmer-768x409.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><figcaption class=\"wp-element-caption\">Arduino Nano as UPDI Programmer<\/figcaption><\/figure>\n<\/div>\n<p>For convenience: <a href=\"https:\/\/www.hackster.io\/john-bradnam\/create-your-own-updi-programmer-1e55f1\" target=\"_blank\" rel=\"noopener\">Here<\/a> you find a nice idea how to convert the Arduino Nano to a ready-to-use UPDI programmer.<\/p>\r\n\n<h4 class=\"wp-block-heading\">Upload<\/h4>\n\n<p>Select the ATtiny in the Arduino IDE under Tools \u2192&nbsp; Board \u2192 megaTinyCore. There are versions with and one without Optiboot bootloader. Take the one without Optiboot. If you know what you&#8217;re doing, you can make all sorts of fine adjustments. If not, then use the default settings.&nbsp;<\/p>\r\n<p>Set jtag2updi as programmer. Now you can upload sketches to your ATtiny. To try it out, I usually take a blink sketch.&nbsp;<\/p>\r\n\n<h3 class=\"wp-block-heading\" id=\"usb2ttl_adaper_as_updi\">Option 2: USB-to-TTL adapter as UPDI programmer<\/h3>\n\n<p>The second option I want to present uses a USB-to-TTL adapter as a UPDI programmer. You can get such a device for a few euros in online stores like Amazon or AliExpress. Most of these adapters have an FTDI FT232 or a CH340 chip. Spence Konde recommends the models with the CH340 chip. Check <a href=\"https:\/\/github.com\/SpenceKonde\/AVR-Guidance\/blob\/master\/UPDI\/jtag2updi.md#wiring-the-hardware\" target=\"_blank\" rel=\"noopener\">here<\/a> if you want to know more about this topic. I tried the non-recommended version with FT232 chip and it worked perfectly fine right away. In addition, I could not reproduce the speed problems described by Spence Konde.<\/p>\r\n<p>If you want to use the Optiboot bootloader (below), then I recommend a USB-to-TTL adapter with DTR pin.&nbsp;<\/p>\r\n\n<p>The wiring is also not particularly complicated. All you need is a Schottky diode and a 470 \u03a9 resistor. I have found different specifications for the diode. Partly Schottky diodes were used, but partly also &#8220;normal&#8221; diodes.<\/p>\r\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/ftdi_ft232_based_updi_programmer.png\"><img loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"474\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/ftdi_ft232_based_updi_programmer.png\" alt=\"USB-to-TTL FTDI adapter as UPDI programmer\" class=\"wp-image-17301\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/ftdi_ft232_based_updi_programmer.png 950w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/ftdi_ft232_based_updi_programmer-300x150.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/ftdi_ft232_based_updi_programmer-768x383.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/09\/ftdi_ft232_based_updi_programmer-860x430.png 860w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/a><figcaption class=\"wp-element-caption\">USB-to-TTL FTDI adapter as UPDI programmer<\/figcaption><\/figure>\n<\/div>\n<p>So, it does not necessarily have to be the 1N4148 diode shown here. For me, it also worked with the Schottky diode SB360, which is oversized for this purpose. Alternatively, to the diode you can use a resistor. I successfully tried with 4.7 k\u03a9. However, depending on the adapter you use, there may also be a few pitfalls. I recommend: Try it first and if there are problems, see what Spence Konde writes about these issues <a href=\"https:\/\/github.com\/SpenceKonde\/AVR-Guidance\/blob\/master\/UPDI\/jtag2updi.md#serial-adapter-requirements\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\r\n<p>As a programmer, you choose one of the SerialUPDI options. Test which speed (baud rate) works for you.&nbsp;<\/p>\r\n<p><a href=\"https:\/\/github.com\/wagiminator\/AVR-Programmer\/tree\/master\/SerialUPDI_Programmer\" target=\"_blank\" rel=\"noopener\">Here<\/a> on GitHub, you can find a design for a nice little UPDI programmer. I have found a commercially available SerialUPDI programmer so far only <a href=\"https:\/\/www.tindie.com\/products\/mcudude\/serialupdi-programmer\/\" target=\"_blank\" rel=\"noopener\">here.<\/a><\/p>\r\n\n<h3 class=\"wp-block-heading\" id=\"atmel-ice_as_updi_programmer\">Option 3: Atmel-ICE as UPDI programmer<\/h3>\n\n<p>By far the simplest, but also most expensive variant is programming with the ATATMEL-ICE (short: Atmel-ICE). Depending on the configuration, you will have to pay between 100 and 200 Euros. But for this, you get a good programmer, which can handle UPDI, JTAG, ISP, debugWIRE and some more protocols.<\/p>\r\n<p>If you use the Atmel-ICE as UPDI programmer, then three of its connector pins remain unused. The UPDI pin is where the MISO pin is normally assigned.<\/p>\r\n\n<div class=\"wp-block-columns are-vertically-aligned-bottom is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-bottom is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-bottom is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n\n<p>Connect VCC to VCC, GND to GND and UPDI to UPDI. However, VCC of the Atmel ICE does not provide a supply voltage, but is only used to check whether the voltage level is sufficient. Hence, you still need a separate voltage source.<\/p>\r\n<p>Then choose the Atmel-ICE as programmer and upload your sketches. It&#8217;s as simple as that.<\/p>\r\n\n<h3 class=\"wp-block-heading\">Update Dec 23: further UPDI programmers are available<\/h3>\n\n<p>Meanwhile there are mor UPDI programmers available. I have bought the <a href=\"https:\/\/www.diamex.de\/dxshop\/EXA-PROG-AVR-ISP-und-UPDI-STM32-NXP-ESP\" target=\"_blank\" rel=\"noopener\">EXA-PROG from Diamex<\/a> and it works fine. In addition to UPDI, it also masters a range of other programming methods. It costs ~ 30 Euros (Dec 23).<\/p>\r\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2023\/12\/Diamex-1024x609.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"609\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2023\/12\/Diamex-1024x609.webp\" alt=\"Diamex EXA-PROG Programmer\" class=\"wp-image-19658\" style=\"width:391px;height:auto\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2023\/12\/Diamex-1024x609.webp 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2023\/12\/Diamex-300x178.webp 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2023\/12\/Diamex-768x456.webp 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2023\/12\/Diamex-1536x913.webp 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2023\/12\/Diamex-1320x785.webp 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2023\/12\/Diamex.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Diamex EXA-PROG Programmer<\/figcaption><\/figure>\n\n<p>I found another programmer, the microUPDProgrammer from MCUdude, <a href=\"https:\/\/www.tindie.com\/products\/mcudude\/microupdi-programmer\/\" target=\"_blank\" rel=\"noopener\">here<\/a> on Tindie-Shop. It is even cheaper but limited to UPDI.<\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"upload_per_optiboot\">Uploading sketches via Optiboot bootloader<\/h2>\n\n<p>As an alternative to UPDI you can also upload your sketches to the megaTinyCore MCUs via RX\/TX using the Optiboot bootloader. For this, you use a USB-to-serial adapter again. The advantage is that the adapter can serve both as a programming device and as a connection to the serial monitor. The disadvantage of this method is the memory space needed by the bootloader (approx. 500 bytes) and possibly a delay during the boot process (see below).<\/p>\r\n<p>But first you have to burn the Optiboot bootloader (just once) via UPDI. There is no way around this step. To do this, go to Tools \u2192 Board and select the desired ATtiny with &#8220;w\/Optiboot&#8221; and the UPDI Programmer. If your ATtiny has several UART interfaces, then you can set which of them should be used for Optiboot.<\/p>\r\n\n<h3 class=\"wp-block-heading\" id=\"optiboot_w_o_reset\">Optiboot without reset pin &#8211; for all tinyAVR series<\/h3>\n\n<p>This is how the setting for an ATtiny1614 might look like:<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/optiboot_bootloader-1024x501.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"501\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/optiboot_bootloader-1024x501.png\" alt=\"Example: ATtiny1614 with Optiboot bootloader\" class=\"wp-image-15524\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/optiboot_bootloader-1024x501.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/optiboot_bootloader-300x147.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/optiboot_bootloader-768x376.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/optiboot_bootloader.png 1088w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Example: ATtiny1614 with Optiboot bootloader<\/figcaption><\/figure>\n\n<p>After you have burned the bootloader, you remove the UPDI programmer and connect the USB-to-serial adapter. For this, you connect RX of the adapter with TX of the ATtiny and TX of the adapter with RX of the ATtiny. You can find the pinout schematics on GitHub as part of the megaTinyCore library if you are not sure about the pins.<\/p>\r\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"437\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer.png\" alt=\"Program upload via Optiboot - Example ATtiny1614\" class=\"wp-image-15526\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer.png 1000w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer-300x131.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer-768x336.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><figcaption class=\"wp-element-caption\">Program upload via Optiboot &#8211; Example ATtiny1614<\/figcaption><\/figure>\n\n<p>Choose the port for the adapter and upload the first sketch. If you want to upload another sketch later, you will have to power on the ATtiny only eight seconds before. This is the period the ATtiny waits during its boot process for sketches to be uploaded. Unfortunately, you will have to wait the same amount of time for your sketches to start.<\/p>\r\n<p>If the eight seconds should annoy you, you can also limit the time to one second. This setting must be selected when burning the bootloader:<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/boot_delay_1s_optiboot-1024x78.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"78\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/boot_delay_1s_optiboot-1024x78.png\" alt=\"Optiboot option with one second waiting time\" class=\"wp-image-15676\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/boot_delay_1s_optiboot-1024x78.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/boot_delay_1s_optiboot-300x23.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/boot_delay_1s_optiboot-768x58.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/boot_delay_1s_optiboot-1320x100.png 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/08\/boot_delay_1s_optiboot.png 1372w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Optiboot option with one second waiting time<\/figcaption><\/figure>\n\n<p>However, with a delay of only one second, it is somewhat of a challenge to supply power to the ATtiny at the right moment.<\/p>\r\n<p><strong>Be aware<\/strong>: The other two setting options disable UPDI. I.e. you can no longer change settings for which you have to burn the bootloader. Only a high-voltage UPDI programmer could reverse this.<\/p>\r\n\n<h3 class=\"wp-block-heading\" id=\"optiboot_w_reset\">Optiboot with reset pin &#8211; only for tinyAVR 2 series<\/h3>\n\n<p>With the MCUs of the tinyAVR 2 series it is possible to set up an alternative reset pin <em>and<\/em> preserve the UDPI functionality. This allows convenient programming using the DTR pin of the USB-to-serial adapter. I show this with the example of the ATtiny1626. Note, however, that not every USB-to-serial adapter has such a DTR pin.<\/p>\r\n<p>In the Arduino IDE, select your ATtiny in Tools \u2192 Boards. Again, take the variant with Optiboot. Then set the UPDI programmer of your choice. In Tools, you will find the menu item &#8220;UPDI\/alt-RST pins and Optiboot Entry (&#8230;)&#8221;. There you select the following marked entry (example ATtiny 1626):<\/p>\r\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/attiny1626_optiboot_w_rst_pin.png\"><img loading=\"lazy\" decoding=\"async\" width=\"639\" height=\"116\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/attiny1626_optiboot_w_rst_pin.png\" alt=\"Setting: Optiboot with reset to PB4, 1 second waiting time\" class=\"wp-image-15532\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/attiny1626_optiboot_w_rst_pin.png 639w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/attiny1626_optiboot_w_rst_pin-300x54.png 300w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/a><figcaption class=\"wp-element-caption\">Setting: Optiboot with reset to PB4, 1 second waiting time<\/figcaption><\/figure>\n<\/div>\n<p>Now burn the bootloader with your UPDI programmer. The UPDI pin of the ATtiny1626 is pin 16 (GPIO17 \/ PA0).<\/p>\r\n<p>Then connect your USB-to-serial adapter to the ATtiny. For the ATtiny1626, the circuit looks like this:<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer_w_DTR-Kopie-1024x512.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer_w_DTR-Kopie-1024x512.png\" alt=\"Program upload via Optiboot and DTR - Example: ATtiny1626\" class=\"wp-image-15534\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer_w_DTR-Kopie-1024x512.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer_w_DTR-Kopie-300x150.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer_w_DTR-Kopie-768x384.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer_w_DTR-Kopie-860x430.png 860w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/ftdi232_as_optiboot_programmer_w_DTR-Kopie.png 1103w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Program upload via Optiboot and DTR &#8211; Example: ATtiny1626<\/figcaption><\/figure>\n\n<p>For other ATtinys, look into the pinout scheme to find the correct RST, TX and RX pin.<\/p>\r\n<p>Select the port of the adapter and you can upload sketches without reconnecting or similar.<\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"serial_monitor_w_o_optiboot\">Using the Serial Monitor with megaTinyCore without Optiboot<\/h2>\n\n<p>You may not necessarily want to sacrifice approx. 500 bytes of flash memory for the bootloader, and still use the serial monitor. This is not a problem. To do this, connect your programmer and the USB-to-serial adapter to the ATtiny. At the adapter you only need to connect RX, TX and GND. Also connect VCC of the adapter if you want to use it as power supply.<\/p>\r\n<p>If you use the Arduino or a USB-to-serial adapter as UPDI programmer and combine them with a USB-to-serial adapter for the serial connection, then two selectable ports appear under Tools \u2192 Port. When uploading, you must choose the port of the programmer and switch to the other port to use the serial monitor. When using an ATMEL-ICE, there is no problem because it does not show up as a serial port.<\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"outlook\">Outlook<\/h2>\n\n<p>In this post, I have only discussed the options of program upload with megaTinyCore. I have only mentioned the technical features and functions of the tinyAVRs in passing. In a later post, I will pick out one or two representatives and go into this aspect in more detail.<\/p>\r\n\n<h2 class=\"wp-block-heading\">Acknowledgement<\/h2>\n\n<p>Only thanks to the package megaTinyCore it is possible to program the tinyAVRs of the series 0, 1 and 2 comfortably with the Arduino IDE.<a href=\"https:\/\/github.com\/SpenceKonde\" target=\"_blank\" rel=\"noopener\">Spence Konde<\/a> has done a fantastic job here, also regarding the documentation. Thank you very much!<\/p>\r\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Thanks to the package megaTinyCore, you can easily program the ATtinys of the tinyAVR series 0, 1 and 2 with Arduino code. I present several options for the upload of your setches.<\/p>\n","protected":false},"author":1,"featured_media":15558,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[543],"tags":[740,1889,1886,1816,1892,735,1890,1891,1888,1813,1885,1887,766],"class_list":["post-16181","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-boards-and-microcontrollers","tag-atmel-ice-en","tag-jtag2updi-en","tag-megatinycore-en","tag-optiboot-en","tag-overview","tag-programmer-en-2","tag-reset-en-2","tag-serial-monitor-en","tag-serialupdi-en","tag-spence-konde-en","tag-tinyavr-en","tag-updi-en","tag-upload-en-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using megaTinyCore &#8226; Wolles Elektronikkiste<\/title>\n<meta name=\"description\" content=\"Thanks to the package megaTinyCore, you can easily program the ATtinys of the tinyAVR series 0, 1 and 2 with Arduino code. I show how it works.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using megaTinyCore &#8226; Wolles Elektronikkiste\" \/>\n<meta property=\"og:description\" content=\"Thanks to the package megaTinyCore, you can easily program the ATtinys of the tinyAVR series 0, 1 and 2 with Arduino code. I show how it works.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore\" \/>\n<meta property=\"og:site_name\" content=\"Wolles Elektronikkiste\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-30T13:48:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-26T16:01:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/mega_tiny_core_post_image.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Wolfgang Ewald\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wolfgang Ewald\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore\"},\"author\":{\"name\":\"Wolfgang Ewald\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"headline\":\"Using megaTinyCore\",\"datePublished\":\"2022-09-30T13:48:14+00:00\",\"dateModified\":\"2024-10-26T16:01:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore\"},\"wordCount\":2318,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/mega_tiny_core_post_image.jpg\",\"keywords\":[\"Atmel-ICE\",\"jtag2updi\",\"megaTinyCore\",\"Optiboot\",\"overview\",\"programmer\",\"reset\",\"serial monitor\",\"serialUPDI\",\"Spence Konde\",\"tinyAVR\",\"UPDI\",\"upload\"],\"articleSection\":[\"Boards and Microcontrollers\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore\",\"name\":\"Using megaTinyCore &#8226; Wolles Elektronikkiste\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/mega_tiny_core_post_image.jpg\",\"datePublished\":\"2022-09-30T13:48:14+00:00\",\"dateModified\":\"2024-10-26T16:01:07+00:00\",\"description\":\"Thanks to the package megaTinyCore, you can easily program the ATtinys of the tinyAVR series 0, 1 and 2 with Arduino code. I show how it works.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore#primaryimage\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/mega_tiny_core_post_image.jpg\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/mega_tiny_core_post_image.jpg\",\"width\":1200,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/using-megatinycore#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using megaTinyCore\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\",\"name\":\"Wolles Elektronikkiste\",\"description\":\"Die wunderbare Welt der Elektronik\",\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\",\"name\":\"Wolfgang Ewald\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"width\":512,\"height\":512,\"caption\":\"Wolfgang Ewald\"},\"logo\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using megaTinyCore &#8226; Wolles Elektronikkiste","description":"Thanks to the package megaTinyCore, you can easily program the ATtinys of the tinyAVR series 0, 1 and 2 with Arduino code. I show how it works.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore","og_locale":"en_US","og_type":"article","og_title":"Using megaTinyCore &#8226; Wolles Elektronikkiste","og_description":"Thanks to the package megaTinyCore, you can easily program the ATtinys of the tinyAVR series 0, 1 and 2 with Arduino code. I show how it works.","og_url":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore","og_site_name":"Wolles Elektronikkiste","article_published_time":"2022-09-30T13:48:14+00:00","article_modified_time":"2024-10-26T16:01:07+00:00","og_image":[{"width":1200,"height":1200,"url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/mega_tiny_core_post_image.jpg","type":"image\/jpeg"}],"author":"Wolfgang Ewald","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Wolfgang Ewald","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore#article","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore"},"author":{"name":"Wolfgang Ewald","@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"headline":"Using megaTinyCore","datePublished":"2022-09-30T13:48:14+00:00","dateModified":"2024-10-26T16:01:07+00:00","mainEntityOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore"},"wordCount":2318,"commentCount":4,"publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/mega_tiny_core_post_image.jpg","keywords":["Atmel-ICE","jtag2updi","megaTinyCore","Optiboot","overview","programmer","reset","serial monitor","serialUPDI","Spence Konde","tinyAVR","UPDI","upload"],"articleSection":["Boards and Microcontrollers"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore","url":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore","name":"Using megaTinyCore &#8226; Wolles Elektronikkiste","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#website"},"primaryImageOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore#primaryimage"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/mega_tiny_core_post_image.jpg","datePublished":"2022-09-30T13:48:14+00:00","dateModified":"2024-10-26T16:01:07+00:00","description":"Thanks to the package megaTinyCore, you can easily program the ATtinys of the tinyAVR series 0, 1 and 2 with Arduino code. I show how it works.","breadcrumb":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore#primaryimage","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/mega_tiny_core_post_image.jpg","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/07\/mega_tiny_core_post_image.jpg","width":1200,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/wolles-elektronikkiste.de\/en\/using-megatinycore#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/wolles-elektronikkiste.de\/en"},{"@type":"ListItem","position":2,"name":"Using megaTinyCore"}]},{"@type":"WebSite","@id":"https:\/\/wolles-elektronikkiste.de\/en#website","url":"https:\/\/wolles-elektronikkiste.de\/en","name":"Wolles Elektronikkiste","description":"Die wunderbare Welt der Elektronik","publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wolles-elektronikkiste.de\/en?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46","name":"Wolfgang Ewald","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","width":512,"height":512,"caption":"Wolfgang Ewald"},"logo":{"@id":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png"}}]}},"_links":{"self":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/16181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/comments?post=16181"}],"version-history":[{"count":0,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/16181\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media\/15558"}],"wp:attachment":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media?parent=16181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/categories?post=16181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/tags?post=16181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}