<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><description>IntroductionThis blog post discusses some practical implementations of super-low-cost ($30 upward) direct digital synthesis (DDS) based signal generator for home use. To save effort and time, they can all be built around an off-the-shelf microcontrol</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Sun, 02 Aug 2020 23:58:59 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>hkhoshro</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I would Like to add this figure which shows it works some of the times, One over 100 times. Which is weired for me&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;[View:/resized-image/__size/1159x712/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-78a3b0ed-c0d9-48ca-9b65-310c4cad377a/contentimage_5F00_188203.png:1159:712]&lt;/span&gt;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Mon, 08 Jun 2020 02:15:38 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>hkhoshro</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Hello Shabaz,&lt;br /&gt;&lt;br /&gt;Great work, I have watched some of your videos. Very impressive.&lt;br /&gt;May I know how can I get access to the PCB or schematic of your DDS board with AD9954 ?&lt;br /&gt;I have designed one for myself and I am not sure if that works as there are many important parameters related to the RF tracks.&lt;br /&gt;I have found that Analogue device sells the evaluation kit for AD9954 which is too expensive for me. I will appreciate if you can share your board wo that I can use it in my project. &lt;br /&gt;&lt;br /&gt;Thank you very much &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Fri, 10 Jan 2020 16:36:27 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>colporteur</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Impressive project. Not something I feel I could complete with the same level of commercial quality. Admirable.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Thu, 09 Jan 2020 20:01:28 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>derick007</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Hi Shabaz,&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Tried your code. Results similar to mine. At 89MHz, the dc offset is still 1.4v and the sinewave sitting on top of it is 40mV pk to pk.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;You will see from my table above I get the same values at 100 MHz using my code.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I think it could be an output filter on the DDS board or perhaps impedance mismatching at the higher frequencies ?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Regards, Derek&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Thu, 09 Jan 2020 16:46:48 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>derick007</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Hi Michael, Shabaz&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I would confirm the output from the board does have a 1.4 dc offset, which can be taken out by the scopes 1 megaohm ac input. This makes pk-pk measurements easier.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;However even though the scope is an old Tektronix 2465 (300 MHz), there is also a 50 ohm input, presumably for cases there is undesirable reflections due to load mismatching.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Unfortunately this input does not have any dc blocking capacitor, making ac measurements that wee bit more difficult. I thought that was the reason for the discussion on the blocking capacitor.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The scope does have a 20MHz bandwidth limit switch, which is not activated.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The scope probes are stamped at 100 MHz.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Regards, Derek&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Mon, 06 Jan 2020 20:32:47 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>derick007</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Hi Shabaz, I have been changing the value of the frequency tuning word in my sketch to see the effect on the output :&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;[View:/resized-image/__size/404x580/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-78a3b0ed-c0d9-48ca-9b65-310c4cad377a/contentimage_5F00_188195.png:404:580]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;As you can see the output filter must have a corner/break point somewhere between 1 and 10 MHz.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Still having difficulties changing the amplitude of the output sinewave by adjusting the contents of the Amplitude Scale Factor (ASF), reloading the sketch and monitoing the output on my scope.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I have changed bits 25 and 25 (Autoshaped ON OFF Keying Enable bit, Shaped ON OFF keying enable bit) in CFR1 as well as changing the values in the ASF register. All to no avail.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I am reasonably confident my sketch is ok because the frequency changes I make all work perfectly. I am wondering is there a bit in the configuration registers which has not been setup correctly ?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;//************************************************&amp;nbsp; &lt;/p&gt;&lt;p&gt;//* SCLK test code for MKRZERO&amp;nbsp; &lt;/p&gt;&lt;p&gt;//* rev 0.1 December 2019&amp;nbsp; &lt;/p&gt;&lt;p&gt;//************************************************ &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;// DECLARING / DEFINING VARIABLES &amp;amp; THEIR TYPES&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;char clockpin = A1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named clockpin as a character type which has a value A1&lt;/p&gt;&lt;p&gt;char datapin = A2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named datapin as a character type which has a value A2&lt;/p&gt;&lt;p&gt;char resetpin = A3;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named resetpin as a character type which has a value A3&lt;/p&gt;&lt;p&gt;char ioupdatepin = A4;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named ioupdatepin as a character type which has a value A4&lt;/p&gt;&lt;p&gt;char chipselectpin = A5;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named chipselectpin as a character type which has a value A5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;// DECLARING / DEFINING DDS REGISTERS&lt;/p&gt;&lt;p&gt;// INTEGERS ARE THE PRIMARY DATA TYPE FOR NUMBER STORAGE&lt;/p&gt;&lt;p&gt;// THE DDS HAS 11 REGISTERS WHICH NEED TO BE PROGRAMMED&lt;/p&gt;&lt;p&gt;// REGISTERS HAVE VARIOUS LENGTHS FROM 2 BYTES TO 5 BYTES&lt;/p&gt;&lt;p&gt;// I HAVE DECLARED EACH REGISTER HAS AN ARRAY OF INTEGER TYPE&lt;/p&gt;&lt;p&gt;// THE NUMBERS IN THE ARRAYS ARE DECIMAL NUMBERS&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;byte CFR1 [] = {0, 167, 0, 112, 8};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named CFR1[] (control function register 1) as a 5 byte array and byte data type&lt;/p&gt;&lt;p&gt;byte CFR2 [] = {1, 0, 10, 164};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named CFR2[] (control function register 2) as a 4 byte array and byte data type&lt;/p&gt;&lt;p&gt;byte ASF [] = {2, 63, 255};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named ASF[] (amplitude scale factor) as a 3 byte array and byte data type&lt;/p&gt;&lt;p&gt;byte ARR [] = {3, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named ARR[] (amplitude ramp rate) as a 2 byte array and byte data type&lt;/p&gt;&lt;p&gt;byte FTW0 [] = {4, 0, 0, 41, 241};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named FTW0[] (frequency tuning word 0) as a 5 byte array and byte data type&lt;/p&gt;&lt;p&gt;byte POW0 [] = {5, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named POW0[] (phase offset word) as a 3 byte array and byte data type&lt;/p&gt;&lt;p&gt;byte FTW1 [] = {6, 0, 0, 41, 241};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named FTW0[] (frequency tuning word 1) as a 5 byte array and byte data type&lt;/p&gt;&lt;p&gt;byte RSCW0 [] = {7, 0, 0, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named RSCW0[] (ram segment control word 0) as a 5 byte array and byte data type&lt;/p&gt;&lt;p&gt;byte RSCW1 [] = {8, 0, 0, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named RSCW1[] (ram segment control word 1) as a 5 byte array and byte data type&lt;/p&gt;&lt;p&gt;byte RSCW2 [] = {9, 0, 0, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named RSCW2[] (ram segment control word 2) as a 5 byte array and byte data type&lt;/p&gt;&lt;p&gt;byte RSCW3 [] = {10, 0, 0, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named RSCW3[] (ram segment control word 3) as a 5 byte array and byte data type&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;void setup() {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; pinMode(clockpin, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp; // sets pin A1 as OUTPUT&lt;/p&gt;&lt;p&gt;&amp;nbsp; pinMode(datapin, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp; // sets pin A2 as OUTPUT&lt;/p&gt;&lt;p&gt;&amp;nbsp; pinMode(resetpin, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp; // sets pin A3 as OUTPUT&lt;/p&gt;&lt;p&gt;&amp;nbsp; pinMode(ioupdatepin, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp; // sets pin A4 as OUTPUT&lt;/p&gt;&lt;p&gt;&amp;nbsp; pinMode(chipselectpin, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp; // sets pin A4 as OUTPUT&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; //reset the AD9954&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(resetpin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(resetpin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(resetpin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // WRITE TO AD9954&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // CFR1&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, CFR1[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;// the next few lines transfer data from the i/o buffer latches to CFR1 register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // CFR2&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;4; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, CFR2[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;// the next few lines transfer data from the i/o buffer latches to CFR2 register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // ASF&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;3; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, ASF[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;// the next few lines transfer data from the i/o buffer latches to&amp;nbsp; ASF register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // ARR&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;2; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, ARR[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;// the next few lines transfer data from the i/o buffer latches to&amp;nbsp; ARR register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // FTW0&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, FTW0[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;// the next few lines transfer data from the i/o buffer latches to&amp;nbsp; FTW0 register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; // POW0&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;4; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, POW0[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // the next few lines transfer data from the i/o buffer latches to&amp;nbsp; FTW0 register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // FTW1&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, FTW1[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // the next few lines transfer data from the i/o buffer latches to&amp;nbsp; FTW1 register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // RSCW0&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, RSCW0[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; // the next few lines transfer data from the i/o buffer latches to&amp;nbsp; RSCW0 register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // RSCW1&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, RSCW1[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;// the next few lines transfer data from the i/o buffer latches to&amp;nbsp; RSCW1 register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // RSCW2&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; shiftOut(datapin, clockpin, MSBFIRST, RSCW2[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // the next few lines transfer data from the i/o buffer latches to&amp;nbsp; RSCW2 register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; // RSCW3&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, LOW);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, RSCW3[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(chipselectpin, HIGH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // toggle CS&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; // the next few lines transfer data from the i/o buffer latches to&amp;nbsp; RSCW3 register memory&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // delay 1 ms&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(ioupdatepin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; void loop() {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Sat, 30 Nov 2019 19:04:08 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>spiralphenomena</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Just a thought, for about $10 more you could feed a 10MHz OCXO into the DDS boards for a much more accurate signal, a programmable amplifier would also be really useful to include, I wonder if there are any small dev boards that could do this?&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Mon, 18 Nov 2019 20:23:33 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>derick007</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Hi Shabaz,&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I have re-written the sketch entirely. My understanding now is alot simpler than when I started 6 months ago - hopefully it is correct ?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;It would appear all that is required is to get the ARDUINO to write data to the registers in the AD9954 ?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I have worked all the values for all the registers, for the AD9954, on a spreadsheet so that I only need to use the sketch to send these values to the DDS.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;However there are a few things I still am not clear about.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;1. UPD - is this required ? If so when do I activate it &amp;gt; at the end of every transfer for each register ?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2. Surely I only need to write the values to the AD9954 once ? This being the case, then the part of the sketch which writes the values should be included in the void setup, rather than the void loop ?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;One other thing, I have an old Tetronix 2465 scope which I am using for this project. I bought it some time ago and have rarely used it. Unfortunately it doesnt appear to trigger so well as I am getting a lot of jitter. This is really just a hobby so I have a very limited budget for test equipment - any suggestions apart from the obvious.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Many thanks, Derek&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;//************************************************&amp;nbsp; &lt;/p&gt;&lt;p&gt;//* SCLK test code for MKRZERO&amp;nbsp; &lt;/p&gt;&lt;p&gt;//* rev 0.1 December 2019&amp;nbsp; &lt;/p&gt;&lt;p&gt;//************************************************ &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;// DECLARING / DEFINING VARIABLES &amp;amp; THEIR TYPES&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;char clockpin = A1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named clockpin as a character type which has a value A1&lt;/p&gt;&lt;p&gt;char datapin = A2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named datapin as a character type which has a value A2&lt;/p&gt;&lt;p&gt;char resetpin = A3;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named resetpin as a character type which has a value A3&lt;/p&gt;&lt;p&gt;char ioupdatepin = A4;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named ioupdatepin as a character type which has a value A4&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;// DECLARING / DEFINING DDS REGISTERS&lt;/p&gt;&lt;p&gt;// INTEGERS ARE THE PRIMARY DATA TYPE FOR NUMBER STORAGE&lt;/p&gt;&lt;p&gt;// THE DDS HAS 11 REGISTERS WHICH NEED TO BE PROGRAMMED&lt;/p&gt;&lt;p&gt;// REGISTERS HAVE VARIOUS LENGTHS FROM 2 BYTES TO 5 BYTES&lt;/p&gt;&lt;p&gt;// I HAVE DECLARED EACH REGISTER HAS AN ARRAY OF INTEGER TYPE&lt;/p&gt;&lt;p&gt;// THE NUMBERS IN THE ARRAYS ARE DECIMAL NUMBERS&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;int CFR1 [] = {128, 174, 0, 112, 8};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named CFR1[] (control function register 1) as a 5 byte array and integer data type&lt;/p&gt;&lt;p&gt;int CFR2 [] = {129, 0, 0, 164};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named CFR2[] (control function register 2) as a 4 byte array and integer data type&lt;/p&gt;&lt;p&gt;int ASF [] = {130, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named ASF[] (amplitude scale factor) as a 3 byte array and integer data type&lt;/p&gt;&lt;p&gt;int ARR [] = {131, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named ARR[] (amplitude ramp rate) as a 2 byte array and integer data type&lt;/p&gt;&lt;p&gt;int FTW0 [] = {132, 26, 57, 224, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named FTW0[] (frequency tuning word 0) as a 5 byte array and integer data type&lt;/p&gt;&lt;p&gt;int POW0 [] = {133, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named POW0[] (phase offset word) as a 3 byte array and integer data type&lt;/p&gt;&lt;p&gt;int FTW1 [] = {134, 26, 57, 224, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named FTW0[] (frequency tuning word 1) as a 5 byte array and integer data type&lt;/p&gt;&lt;p&gt;int RSCW0 [] = {135, 0, 0, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named RSCW0[] (ram segment control word 0) as a 5 byte array and integer data type&lt;/p&gt;&lt;p&gt;int RSCW1 [] = {136, 0, 0, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named RSCW1[] (ram segment control word 1) as a 5 byte array and integer data type&lt;/p&gt;&lt;p&gt;int RSCW2 [] = {137, 0, 0, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named RSCW2[] (ram segment control word 2) as a 5 byte array and integer data type&lt;/p&gt;&lt;p&gt;int RSCW3 [] = {138, 0, 0, 0, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // declaring or defining the variable named RSCW3[] (ram segment control word 3) as a 5 byte array and integer data type&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;void setup() {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; pinMode(clockpin, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp; // sets pin A1 as OUTPUT&lt;/p&gt;&lt;p&gt;&amp;nbsp; pinMode(datapin, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp; // sets pin A2 as OUTPUT&lt;/p&gt;&lt;p&gt;&amp;nbsp; pinMode(resetpin, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp; // sets pin A3 as OUTPUT&lt;/p&gt;&lt;p&gt;&amp;nbsp; pinMode(ioupdatepin, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp; // sets pin A4 as OUTPUT&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; //reset the AD9954&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(resetpin, LOW);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(resetpin,HIGH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; delay(1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; digitalWrite(resetpin, LOW);&lt;/p&gt;&lt;p&gt; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;void loop() {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, CFR1[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;4; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, CFR2[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;3; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, ASF[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;2; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, ARR[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, FTW0[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;4; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, POW0[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, FTW1[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, RSCW0[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, RSCW1[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; shiftOut(datapin, clockpin, MSBFIRST, RSCW2[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; for (int i=0; i&amp;lt;5; i=i+1) {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; shiftOut(datapin, clockpin, MSBFIRST, RSCW3[i]);&amp;nbsp; // each bit is approximately 5us. The clock signal also has a period of 5us, 1.5 us ON and 3.5 us OFF.&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Fri, 30 Aug 2019 02:15:17 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>neuromodulator</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;What did you do to generate those images with the cabling? It looks pretty neat.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Tue, 16 Jul 2019 10:37:44 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>michaelkellett</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;You&amp;#39;ve just updated your post and added a load of stuff to it.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;That is a terrible idea because it makes the thread impossible to follow.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;You have also asked in an open forum for people to contact you by private email - that defeats the whole point of a forum which is to have open, free access to all, discussions.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;This looks like a student project and you seem to be hopelessly out of your depth. Your course work and tutors should have given you a road map or the tools to make one.&lt;/p&gt;&lt;p&gt;I suggest that you go back to your tutor and ask for help and guidance - that&amp;#39;s what they are there for.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;If you then need advice on specific aspects of the task then start a new thread.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;MK&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Mon, 15 Jul 2019 16:52:36 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>jc2048</dc:creator><slash:comments>1</slash:comments><description>&lt;blockquote class="jive-quote"&gt;&lt;p&gt;Amplitude +/- 5Vpp&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Do you intend to series terminate the drive to the output cable? If so, you&amp;#39;ll need more than 5V on each rail to get the required swing at the load.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Mon, 15 Jul 2019 12:32:22 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>michaelkellett</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The USB port will not provide a good 5V supply - it may be as low as 4.5V and it may be noisy.&lt;/p&gt;&lt;p&gt;There are plenty of power supply conversion chips that can take &amp;lt;5 V in and generate +/- 5V out. They are hard to prototype with - you will need a pcb.&lt;/p&gt;&lt;p&gt;The LT3463 or LT3463A from Analog Devices will do for your application but you will need to restrict the maximum input voltage from the USB with a series diode.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Alternatively you could just use the USB voltage for 5V and use a negative switcher to make the -5V.&amp;nbsp; An LT1611&amp;nbsp; would do quite nicely. Or, if you can cope with maybe only -4V worst case then&lt;/p&gt;&lt;p&gt;a TPS60403 (Texas Instruments) might do.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;MK&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Sun, 02 Jun 2019 21:51:11 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>balearicdynamics</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Hi Shabaz, it&amp;#39;s a while I point my attention to this project, another great creation from you &lt;span&gt;[View:/resized-image/__size/16x16/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-78a3b0ed-c0d9-48ca-9b65-310c4cad377a/contentimage_5F00_1.png:16:16]&lt;/span&gt;&amp;nbsp; What I am thinking is if this project – maybe with soe changes – can be applied in the audio synth. As a matter of fact, I see that the components you use reach a very high frequency but start from 1Hz so I suppose if can produce the entire range of the audible. Does this question have sens in your opinion?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Enrico&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Sun, 02 Jun 2019 21:34:22 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>derick007</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Hi Shabaz,&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Took your advice and purchased the Arduino MKR zero.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I am a novice SIMULINK user and i was hoping to use it to learn a bit about the Arduino board. However I am not exactly sure how to program the arduino board to control the AD9954.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I can only imagine it is programed in coded in C / assembler&amp;nbsp; and the coded is detailed, complex and quite long ?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I have never used the C programming language, but am willing to learn. Not sure if the whole task is a bit much but I would like to find out.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Any pointers / suggestions would be welcome. In the end, making some adjustments to your code may be the solution.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;SIMULINK will communicate with the Arduino and control i/o, not sure if it will provide enough programming functionality to allow it to control the AD9954 board.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;If at all possible I will like to connect the AD9954 board to a pc to learn a bit about it. Analog Devices seem to suggest a parallel port is required to do this ?&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Building A Direct Digital Synthesis Dual-Channel Signal Generator</title><link>https://community.element14.com/technologies/open-source-hardware/b/blog/posts/building-a-direct-digital-synthesis-dual-channel-signal-generator</link><pubDate>Sat, 01 Jun 2019 18:33:35 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:78a3b0ed-c0d9-48ca-9b65-310c4cad377a</guid><dc:creator>derick007</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Hi shabaz&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I have both the ad9954 and arduino boards now.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I have downloaded software from analog devices to evaluate the ad9954, but it looks like I need an lpt parallel port on my pc to do this.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I dont mind doing this but as far as i remember the parallel port is db 25 way connecter, whereas the ribbon cable for the ad9954 is only 14 pins ?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Is there a converter i need ?&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=5326&amp;AppID=18&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>