{"id":14812,"date":"2016-07-18T10:00:56","date_gmt":"2016-07-18T17:00:56","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=14812"},"modified":"2021-06-16T14:02:29","modified_gmt":"2021-06-16T21:02:29","slug":"if-theres-something-strange-in-your-project-and-if-its-something-weird-and-it-doesnt-look-good","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/if-theres-something-strange-in-your-project-and-if-its-something-weird-and-it-doesnt-look-good\/","title":{"rendered":"If There&#8217;s Something Strange in Your Project, and if it&#8217;s Something Weird and it Doesn&#8217;t Look Good&#8230;"},"content":{"rendered":"<p>&#8230;Who are you going to call?<\/p>\n<p>For a lot of people, Ghostbusters may seem like the only option they have available to them. In fact, that is very much the way that I felt when I was working a new Pmod library and things just didn&#8217;t seem to be working out the way I expected them to. But then, I glanced to my left and saw&#8230;<\/p>\n<figure id=\"attachment_14956\" aria-describedby=\"caption-attachment-14956\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-14956\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AnalogDiscovery2-spotlight-600x490.png\" alt=\"A shining diamond in the rough.\" width=\"600\" height=\"490\" data-wp-pid=\"14956\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AnalogDiscovery2-spotlight-600x490.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AnalogDiscovery2-spotlight-168x137.png 168w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AnalogDiscovery2-spotlight.png 697w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-14956\" class=\"wp-caption-text\">A shining diamond in the rough.<\/figcaption><\/figure>\n<p>The <a href=\"https:\/\/digilent.com\/shop\/analog-discovery-2-100msps-usb-oscilloscope-logic-analyzer-and-variable-power-supply\/\" target=\"_blank\" rel=\"noopener\">Analog Discovery 2<\/a>! But alas, what can it do to help me solve my problem? Especially when I&#8217;m not even sure what my problem is to begin with.<\/p>\n<p>The biggest thing is that the <a href=\"https:\/\/digilent.com\/shop\/analog-discovery-2-100msps-usb-oscilloscope-logic-analyzer-and-variable-power-supply\/\">Analog Discovery 2<\/a> (or AD2 for short) is an oscilloscope\u00a0\u2014 a device that can measure and display the electrical behavior of a device. This means that with the appropriate knowledge of what sort of places we need to probe on the device, we can get a good picture of how it is operating electrically; this is something we can&#8217;t normally do by looking at it with the naked eye.<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Was anyone able to <a href=\"https:\/\/twitter.com\/hashtag\/guessthecircuit?src=hash&amp;ref_src=twsrc%5Etfw\">#guessthecircuit<\/a> yesterday? How many of the four did you guess correctly? <a href=\"https:\/\/twitter.com\/hashtag\/AnalogDiscovery2?src=hash&amp;ref_src=twsrc%5Etfw\">#AnalogDiscovery2<\/a> <a href=\"https:\/\/t.co\/i7RxpqwsJK\">pic.twitter.com\/i7RxpqwsJK<\/a><\/p>\n<p>&mdash; Digilent Inc. (@DigilentInc) <a href=\"https:\/\/twitter.com\/DigilentInc\/status\/741285836294000640?ref_src=twsrc%5Etfw\">June 10, 2016<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>For my project, I was working on creating a library for the new PmodJSTK2, but was getting some inconsistent results when I sent a command to the joystick or read some data from the joystick. Sometimes everything would work exactly as I expected, and other times I seemed to be getting a bunch of nonsense. Because I was using SPI to communicate back and forth between the <a href=\"https:\/\/digilent.com\/shop\/chipkit-wf32-wifi-enabled-microntroller-board-with-uno-r3-headers\/\" target=\"_blank\" rel=\"noopener\">WF32<\/a> and the PmodJSTK2, I figured that would be a good place to observe all of the electrical signals to see if I could spot anything suspicious.<\/p>\n<p>After following Kaitlyn&#8217;s guide for <a href=\"https:\/\/digilent.com\/blog\/waveforms-2015-installation-guides\/\" target=\"_blank\" rel=\"noopener\">installing Waveforms 2015<\/a>, I clicked on the &#8220;Scope&#8221; button (since that made the most sense for using an oscilloscope). Then I connected scope channels 1 and 2 to the data following to the PmodJSTK2 and to the clock that dictates how fast the two devices communicate, adjusted the time scale so I could reasonably see what was happening (since they communicate very fast with each other), and hit &#8220;Run&#8221; to start the oscilloscope.<\/p>\n<figure id=\"attachment_14957\" aria-describedby=\"caption-attachment-14957\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-14957\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/The-Scope-on-the-main-menu-600x379.png\" alt=\"Selecting the scope in WaveForms 2015\" width=\"600\" height=\"379\" data-wp-pid=\"14957\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/The-Scope-on-the-main-menu-600x379.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/The-Scope-on-the-main-menu-768x485.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/The-Scope-on-the-main-menu-1024x646.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/The-Scope-on-the-main-menu-800x505.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/The-Scope-on-the-main-menu.png 1036w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-14957\" class=\"wp-caption-text\">Selecting the scope in WaveForms 2015.<\/figcaption><\/figure>\n<figure id=\"attachment_14958\" aria-describedby=\"caption-attachment-14958\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-14958\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Scope-Connections-600x366.jpg\" alt=\"Connecting Oscilloscope channels 1+ and 2+ on the AD2\" width=\"600\" height=\"366\" data-wp-pid=\"14958\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Scope-Connections-600x366.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Scope-Connections-768x468.jpg 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Scope-Connections-1024x624.jpg 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Scope-Connections-800x488.jpg 800w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-14958\" class=\"wp-caption-text\">Connecting Oscilloscope channels 1+ and 2+ on the AD2.<\/figcaption><\/figure>\n<figure id=\"attachment_14959\" aria-describedby=\"caption-attachment-14959\" style=\"width: 544px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-14959\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Time-base-on-the-Scope-screen-544x600.png\" alt=\"Adjusting the time base for the oscilloscope in WaveForms 2015\" width=\"544\" height=\"600\" data-wp-pid=\"14959\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Time-base-on-the-Scope-screen-544x600.png 544w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Time-base-on-the-Scope-screen.png 557w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\" \/><figcaption id=\"caption-attachment-14959\" class=\"wp-caption-text\">Adjusting the time base for the oscilloscope in WaveForms 2015.<\/figcaption><\/figure>\n<p>And soon it was running! However, I quickly found that while I could stop the oscilloscope and look at the information on the screen, it was rather tedious to manually calculate any time or data differences that were present. Plus, I also wanted to be able to view both data lines, the clock, and the enable line simultaneously, rather than being forced to pick just two of them.<\/p>\n<figure id=\"attachment_14960\" aria-describedby=\"caption-attachment-14960\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-14960\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Capturing-SPI-data-and-clock-on-an-oscilloscope-600x320.png\" alt=\"What I was attempting to decipher from the oscilloscope\" width=\"600\" height=\"320\" data-wp-pid=\"14960\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Capturing-SPI-data-and-clock-on-an-oscilloscope-600x320.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Capturing-SPI-data-and-clock-on-an-oscilloscope-768x409.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Capturing-SPI-data-and-clock-on-an-oscilloscope-1024x546.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Capturing-SPI-data-and-clock-on-an-oscilloscope-800x427.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Capturing-SPI-data-and-clock-on-an-oscilloscope.png 1932w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-14960\" class=\"wp-caption-text\">What I was attempting to decipher from the oscilloscope.<\/figcaption><\/figure>\n<p>As I was verbally lamenting about my problems, a co-worker of mine decided to take pity on me and suggested that I use the Logic Analyzer tool inside of <a href=\"https:\/\/digilent.com\/shop\/waveforms-2015-download-only\/\" target=\"_blank\" rel=\"noopener\">WaveForms 2015<\/a>. Sure enough, along the left-hand side of the main window, there was a button labeled &#8220;Logic&#8221;. After clicking on that, I was brought to the Logic Analyzer page where I could add a new channel, choose SPI, and set which of the numbered <a href=\"https:\/\/digilent.com\/shop\/analog-discovery-2-100msps-usb-oscilloscope-logic-analyzer-and-variable-power-supply\/\" target=\"_blank\" rel=\"noopener\">AD2<\/a> pins are measuring which SPI communication line. I added a second SPI channel so that I could measure the data lines going both to and from the PmodJSTK2 simultaneously, set my time base, and clicked run.<\/p>\n<figure id=\"attachment_14963\" aria-describedby=\"caption-attachment-14963\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-14963\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/The-Logic-on-the-main-menu-600x556.png\" alt=\"The Logic Analyzer feature in WaveForms 2015\" width=\"600\" height=\"556\" data-wp-pid=\"14963\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/The-Logic-on-the-main-menu-600x556.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/The-Logic-on-the-main-menu.png 663w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-14963\" class=\"wp-caption-text\">The Logic Analyzer feature in WaveForms 2015.<\/figcaption><\/figure>\n<figure id=\"attachment_14961\" aria-describedby=\"caption-attachment-14961\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-14961\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Choosing-SPI-bus-on-Logic-600x395.png\" alt=\"Choosing to analyze an SPI bus in the Logic Analyzer.\" width=\"600\" height=\"395\" data-wp-pid=\"14961\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Choosing-SPI-bus-on-Logic-600x395.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Choosing-SPI-bus-on-Logic-768x505.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Choosing-SPI-bus-on-Logic-214x140.png 214w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Choosing-SPI-bus-on-Logic-800x526.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Choosing-SPI-bus-on-Logic.png 813w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-14961\" class=\"wp-caption-text\">Choosing to analyze an SPI bus in the Logic Analyzer.<\/figcaption><\/figure>\n<figure id=\"attachment_14962\" aria-describedby=\"caption-attachment-14962\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-14962\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Measuring-all-SPI-lines-in-the-Logic-Analyzer-600x387.png\" alt=\"Setting up the Logic Analyzer for two SPI bus lines\" width=\"600\" height=\"387\" data-wp-pid=\"14962\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Measuring-all-SPI-lines-in-the-Logic-Analyzer-600x387.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Measuring-all-SPI-lines-in-the-Logic-Analyzer-768x495.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Measuring-all-SPI-lines-in-the-Logic-Analyzer-800x516.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Measuring-all-SPI-lines-in-the-Logic-Analyzer.png 918w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-14962\" class=\"wp-caption-text\">Setting up the Logic Analyzer for two SPI bus lines.<\/figcaption><\/figure>\n<figure id=\"attachment_14965\" aria-describedby=\"caption-attachment-14965\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-14965\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Logic-Analyzer-Connections-600x325.jpg\" alt=\"Connecting the Logic Analyzer for the Analog Discovery 2\" width=\"600\" height=\"325\" data-wp-pid=\"14965\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Logic-Analyzer-Connections-600x325.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Logic-Analyzer-Connections-768x416.jpg 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Logic-Analyzer-Connections-1024x554.jpg 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Logic-Analyzer-Connections-800x433.jpg 800w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-14965\" class=\"wp-caption-text\">Connecting the Logic Analyzer for the Analog Discovery 2.<\/figcaption><\/figure>\n<figure id=\"attachment_14964\" aria-describedby=\"caption-attachment-14964\" style=\"width: 476px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-14964\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Time-base-on-the-Logic-Analyzer-screen.png\" alt=\"Choosing the time base on the Logic Analyzer.\" width=\"476\" height=\"566\" data-wp-pid=\"14964\" \/><figcaption id=\"caption-attachment-14964\" class=\"wp-caption-text\">Choosing the time base on the Logic Analyzer.<\/figcaption><\/figure>\n<p>I could immediately tell that the Logic Analyzer was definitely the tool I was needing to use, instead of the oscilloscope. All of the transitions were crisp and clear, which makes sense considering that the oscilloscope focuses on measuring an accurate voltage and captures all of the transitions as well as any oscillations between transitions. In contrast, the Logic Analyzer instead looks to see if the measured voltage has crossed a high or low threshold, since it is a digital logic analyzer.<\/p>\n<figure id=\"attachment_14966\" aria-describedby=\"caption-attachment-14966\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-14966\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Logic-Analyzer-in-action-600x323.png\" alt=\"The Logic Analyzer in action.\" width=\"600\" height=\"323\" data-wp-pid=\"14966\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Logic-Analyzer-in-action-600x323.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Logic-Analyzer-in-action-768x413.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Logic-Analyzer-in-action-1024x551.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Logic-Analyzer-in-action-800x430.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/Logic-Analyzer-in-action.png 1934w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-14966\" class=\"wp-caption-text\">The Logic Analyzer in action.<\/figcaption><\/figure>\n<p>It was only because of this\u00a0Logic Analyzer that I was able to notice a strange timing error where the SPI communication would suddenly be cut off part way through a message. Digging into the problem a little bit further revealed that an additional delay was needed between the final byte of data being transferred and the signal to stop communicating over SPI. This was then incorporated into the embedded firmware so other users would not have to worry about it.<\/p>\n<p>So, as tempting as it might be to look up Bill Murray&#8217;s number to give him a call, there may be something close by that can help you figure out the solution to your problem. For me, that something was the <a href=\"https:\/\/digilent.com\/shop\/analog-discovery-2-100msps-usb-oscilloscope-logic-analyzer-and-variable-power-supply\/\" target=\"_blank\" rel=\"noopener\">Analog Discovery 2<\/a>. What do you use to help solve your problems?<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-14812 jlk' data-task='like' data-post_id='14812' data-nonce='d8c4d58d14' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-14812 lc'>0<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-14812 jlk' data-task='unlike' data-post_id='14812' data-nonce='d8c4d58d14' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-14812 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-14812 status align-left'>Be the 1st to vote.<\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>James recounts his problem-solving process after encountering some behavior one generally does not see in a major electronics application.<\/p>\n","protected":false},"author":17,"featured_media":14965,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4325,4312],"tags":[1736,499],"ppma_author":[4469],"class_list":["post-14812","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-debug-validation-test","category-usb-scopes-analyzers-generators","tag-analog-discovery-2","tag-oscilloscope"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/06\/AD2-Logic-Analyzer-Connections.jpg","jetpack_sharing_enabled":true,"authors":[{"term_id":4469,"user_id":17,"is_guest":0,"slug":"jamescolvin","display_name":"James Colvin","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/8aa85f7d11711acc7e571e1ed26c901b614a7064a2e15e522f54d9f26792ea9e?s=96&d=mm&r=g","1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":"","9":"","10":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/14812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=14812"}],"version-history":[{"count":0,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/14812\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/14965"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=14812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=14812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=14812"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=14812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}