<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DMA on Phillip Kühne</title><link>https://phillipkuehne.de/en/tags/dma/</link><description>Recent content in DMA on Phillip Kühne</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 01 Jun 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://phillipkuehne.de/en/tags/dma/index.xml" rel="self" type="application/rss+xml"/><item><title>DMX-Board (2024)</title><link>https://phillipkuehne.de/en/projects/dmx-board/</link><pubDate>Sat, 01 Jun 2024 00:00:00 +0000</pubDate><guid>https://phillipkuehne.de/en/projects/dmx-board/</guid><description>&lt;style&gt;&#10; div.splitbox {width:100%; overflow:auto;}&#10;&#10; div.splitbox div.column-left {&#10; width:48%;&#10; float:left;}&#10; div.splitbox div.column-right {&#10; width:48%;&#10; float:right;}&#10;&#10; @media only screen and (max-width: 600px) {&#10; div.splitbox div.column-left {&#10; width:100%;&#10; float:left;}&#10; div.splitbox div.column-right {&#10; width:100%;&#10; float:left;}&#10; }&#10; &lt;/style&gt;&lt;div class="splitbox"&gt;&lt;div class="column-left"&gt;&#10;&lt;p&gt;As part of the study module &amp;ldquo;Microcontroller Applications&amp;rdquo;, I developed this&#10;board and the associated software in collaboration with my fellow student Tom Wahl.&#10;The technical basis is an ESP32 microcontroller from Espressif.&lt;/p&gt;&#10;&lt;p&gt;The original aim as part of the module was to enable simple recording and&#10;playback of light programmes, i.e. incoming data on the input including their timing.&lt;/p&gt;&#10;&lt;p&gt;After the module was completed, the hardware was then extended to include GPIO&#10;terminals at the request of the professor. The aim was to be able to use the&#10;circuit board as a demonstration and test object in lectures.&lt;/p&gt;&#10;&lt;p&gt;My focus in this project was on the software:&#10;The software submitted during the module was developed directly using the&#10;ESP-IDF, without the Arduino framework. The DMX bus and the interaction elements&#10;(OLED display, encoder) are controlled via separate FreeRTOS tasks. This ensures&#10;that the operation of the DMX bus is prioritised.&lt;/p&gt;&#10;&lt;p&gt;In addition, the DMX bus is controlled via the ESP32&amp;rsquo;s DMA controller. This&#10;makes sense as the DMX bus is usually controlled by a central node (whose&#10;role we assume here), the controller. A DMX transmission with data for all 512&#10;channels of a DMX universe requires approx. 22 ms. If this is done at the usual&#10;frame rate of 40 FPS, you will notice that the DMX bus is almost continuously&#10;being sent on. However, as all the data is already known at the start of the&#10;transmission, it would be inefficient to carry this out using CPU time.&lt;/p&gt;&#10;&lt;p&gt;Using DMA, the microcontroller can operate the DMX bus and all other peripherals&#10;available for operation without any problems, as can be seen in the&#10;Logic Analyser screenshot.&lt;/p&gt;&#10;&#10;&#10;&lt;/div&gt;&lt;div class="column-right"&gt;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194513_721.jpg"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="Experimental setup of the circuit on breadboard. The Arduino Uno in the upper part served temporarily as a logic analyser."&#10; data-title="Experimental setup of the circuit on breadboard. The Arduino Uno in the upper part served temporarily as a logic analyser." title="Experimental setup of the circuit on breadboard. The Arduino Uno in the upper part served temporarily as a logic analyser."&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194513_721.jpg"&#10; alt="Experimental setup of the circuit on breadboard. The Arduino Uno in the upper part served temporarily as a logic analyser."&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;Experimental setup of the circuit on breadboard. The Arduino Uno in the upper part served temporarily as a logic analyser.&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194327_099.jpg"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="First software written for testing to control an RGB spotlight. M stands for Mode, S is an irrelevant additional parameter for RGB control (Mode 0)."&#10; data-title="First software written for testing to control an RGB spotlight. M stands for Mode, S is an irrelevant additional parameter for RGB control (Mode 0)." title="First software written for testing to control an RGB spotlight. M stands for Mode, S is an irrelevant additional parameter for RGB control (Mode 0)."&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194327_099.jpg"&#10; alt="First software written for testing to control an RGB spotlight. M stands for Mode, S is an irrelevant additional parameter for RGB control (Mode 0)."&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;First software written for testing to control an RGB spotlight. M stands for Mode, S is an irrelevant additional parameter for RGB control (Mode 0).&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194546_0be.png"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="Concurrent activity on the various data buses. Top: DMX"&#10; data-title="Concurrent activity on the various data buses. Top: DMX" title="Concurrent activity on the various data buses. Top: DMX"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194546_0be.png"&#10; alt="Concurrent activity on the various data buses. Top: DMX"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;Concurrent activity on the various data buses. Top: DMX&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/dmx-board/IMG_0817.webp"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="Circuit as a simple CNC-milled circuit board"&#10; data-title="Circuit as a simple CNC-milled circuit board" title="Circuit as a simple CNC-milled circuit board"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/dmx-board/IMG_0817.webp"&#10; alt="Circuit as a simple CNC-milled circuit board"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;Circuit as a simple CNC-milled circuit board&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/dmx-board/IMG_20241206_134958.geaendert.jpg"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="Manufactured Boards"&#10; data-title="Manufactured Boards" title="Manufactured Boards"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/dmx-board/IMG_20241206_134958.geaendert.jpg"&#10; alt="Manufactured Boards"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;Manufactured Boards&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&#10;&#10;&lt;/div&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;/div&gt;</description></item></channel></rss>