{"id":235,"date":"2021-08-02T07:47:44","date_gmt":"2021-08-02T07:47:44","guid":{"rendered":"https:\/\/blog.embeddedexpert.io\/?p=235"},"modified":"2021-08-03T09:50:28","modified_gmt":"2021-08-03T09:50:28","slug":"working-with-adc-and-stm32-part2-single-channel-continuous-conversion-with-interrupt","status":"publish","type":"post","link":"https:\/\/blog.embeddedexpert.io\/?p=235","title":{"rendered":"Working with ADC and STM32 part3: Single Channel Continuous Conversion with Interrupt"},"content":{"rendered":"\n<p>In previous two guides (<a rel=\"noreferrer noopener\" href=\"https:\/\/blog.embeddedexpert.io\/?p=200\" data-type=\"URL\" data-id=\"https:\/\/blog.embeddedexpert.io\/?p=200\" target=\"_blank\">part one<\/a> and <a rel=\"noreferrer noopener\" href=\"https:\/\/blog.embeddedexpert.io\/?p=224\" data-type=\"URL\" data-id=\"https:\/\/blog.embeddedexpert.io\/?p=224\" target=\"_blank\">part 2<\/a>) we looked at the ADC conversion using two methods, first one was single conversion and seconds was continuous conversion. The two methods proven to be effect in certain area. however, we have to wait for the end of conversion each time we want to read the adc which might effect the performance of the system (like in car). <\/p>\n\n\n\n<p>In this guid will cover the following<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Difference between polling mode and interrupt mode<\/li><li>Extra steps needed<\/li><li>Needed Parts and Schematic<\/li><li>Code<\/li><li>Result<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1. Difference between polling mode and interrupt mode <\/h2>\n\n\n\n<p>In polling as we saw in previous two guides, we need to wait for end of conversion each time we want to read the adc value as illustrated in figure below. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"478\" height=\"1024\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM-478x1024.png\" alt=\"\" class=\"wp-image-237\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM-478x1024.png 478w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM-140x300.png 140w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM-400x856.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM-250x535.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM.png 510w\" sizes=\"(max-width: 478px) 100vw, 478px\" \/><figcaption>polling mode<\/figcaption><\/figure>\n\n\n\n<p>On another hand, in interrupt mode, the adc value can be update in background (no need to wait for EOC) since in handled in the interrupt handler function as illustrated in figure below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"933\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-1024x933.png\" alt=\"\" class=\"wp-image-238\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-1024x933.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-300x273.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-768x700.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-1150x1048.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-750x684.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-400x365.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-250x228.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM.png 1198w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Interrupt adc<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">2. Extra steps needed to enable interrupt.<\/h2>\n\n\n\n<p>The extras steps needed from part 1 and part 2 of this guid as following<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Declare the adc_value as volatile uint16_t variable as following<\/li><\/ul>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csrc&quot;,&quot;theme&quot;:&quot;dracula&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">volatile uint16_t adc_value;<\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Enable end of conversion interrupt from ADC_CR1 as shown bellow<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"378\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-1024x378.png\" alt=\"\" class=\"wp-image-239\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-1024x378.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-300x111.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-768x283.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-1536x566.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-2048x755.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-1150x424.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-750x277.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-400x148.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-250x92.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Enable end of conversion interrupt<\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csrc&quot;,&quot;theme&quot;:&quot;dracula&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">ADC1-&gt;CR1|=ADC_CR1_EOCIE;<\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Attach the EOC to the NVIC (Nested Vector Interrupt Controller) by using the following command<\/li><\/ul>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csrc&quot;,&quot;theme&quot;:&quot;dracula&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">NVIC_EnableIRQ(ADC_IRQn);\n<\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Handle the ADC interrupt as follow<\/li><\/ul>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csrc&quot;,&quot;theme&quot;:&quot;dracula&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">void  ADC_IRQHandler(void)\n{\nadc_value=ADC1-&gt;DR;\n\n}<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">3. Required Parts and Schematics<\/h2>\n\n\n\n<p>You will need the following parts:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>STM32F411 Nucleo-64<\/li><li>BreadBoard&nbsp;<\/li><li>1KOhm Potentiometer&nbsp;<\/li><li>Hookup wires (male-male)<\/li><\/ul>\n\n\n\n<p>We shall use Keil uVision (MDK-ARM) IDE (<a href=\"https:\/\/www.keil.com\/demo\/eval\/arm.htm\" target=\"_blank\" rel=\"noreferrer noopener\">Link<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"859\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.26.07-AM-1024x859.png\" alt=\"\" class=\"wp-image-240\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.26.07-AM-1024x859.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.26.07-AM-300x252.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.26.07-AM-768x645.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.26.07-AM-1536x1289.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.26.07-AM-1150x965.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.26.07-AM-750x629.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.26.07-AM-400x336.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.26.07-AM-250x210.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.26.07-AM.png 1804w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Connection<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/IMG_5941-1024x768.jpg\" alt=\"\" class=\"wp-image-241\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/IMG_5941-1024x768.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/IMG_5941-300x225.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/IMG_5941-768x576.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/IMG_5941-1536x1152.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/IMG_5941-2048x1536.jpg 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/IMG_5941-1150x863.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/IMG_5941-750x563.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/IMG_5941-400x300.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/IMG_5941-250x188.jpg 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>actual connection<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">4. Code<\/h2>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csrc&quot;,&quot;theme&quot;:&quot;dracula&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">\/\/read the analog voltage on PA1\n#include &quot;stm32f4xx.h&quot;                  \/\/ Device header\n#include &quot;stdint.h&quot;\nvoid ADC_init(void);\nuint16_t adcValue;\n\nint main(void){\nADC_init();\nwhile(1){\n\/\/empty loop\n}\n\n}\nvoid ADC_init(void){\nRCC-&gt;AHB1ENR|=RCC_AHB1ENR_GPIOAEN; \/\/enable gpio a clock\nRCC-&gt;APB2ENR|=RCC_APB2ENR_ADC1EN; \/\/enable adc clock\nGPIOA-&gt;MODER|=GPIO_MODER_MODER1;  \/\/set the PA1 to analog mode\nADC1-&gt;CR1|=ADC_CR1_EOCIE;\nADC1-&gt;CR2=0; \/\/disable the adc\nADC1-&gt;CR2|=ADC_CR2_CONT; \/\/enable Continuous conversion  \t\nADC1-&gt;SQR3|=1; \/\/set the second channel to be converted first \nNVIC_EnableIRQ(ADC_IRQn); \/\/attach the interrupt to NVIC\nADC1-&gt;CR2|=1; \/\/enable the adc \nADC1-&gt;CR2|=ADC_CR2_SWSTART; \/\/start adc conversion\t\n}\n\n\nvoid  ADC_IRQHandler(void)\n{\n\/\/update adc vlaue automatically\nadcValue=ADC1-&gt;DR;\n\n}<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">5. Results<\/h2>\n\n\n\n<p>After compile, upload, start a debug session and adding adcValue to watch window.<\/p>\n\n\n\n<p>Rotate the pot left and right and the value shall be updated without being called each time<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"242\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-1024x242.png\" alt=\"\" class=\"wp-image-242\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-1024x242.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-300x71.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-768x181.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-1536x363.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-2048x484.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-1150x272.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-750x177.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-400x94.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-250x59.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"242\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-1024x242.png\" alt=\"\" class=\"wp-image-243\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-1024x242.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-300x71.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-768x181.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-1536x363.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-2048x484.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-1150x272.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-750x177.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-400x94.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-250x59.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>In previous two guides (part one and part 2) we looked at the ADC conversion using two methods, first one was single conversion and seconds was continuous conversion. The two methods proven to be effect in certain area. however, we have to wait for the end of conversion each time we want to read the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-235","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/235"}],"collection":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=235"}],"version-history":[{"count":4,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/235\/revisions"}],"predecessor-version":[{"id":494,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/235\/revisions\/494"}],"wp:attachment":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}