{"id":394,"date":"2023-06-28T11:42:11","date_gmt":"2023-06-28T11:42:11","guid":{"rendered":"http:\/\/localhost\/embeddedwala\/?p=394"},"modified":"2023-07-27T04:13:05","modified_gmt":"2023-07-27T04:13:05","slug":"different-types-of-interrupt-controllers","status":"publish","type":"post","link":"https:\/\/embeddedwala.com\/beta\/blogs\/digital-communication\/different-types-of-interrupt-controllers\/","title":{"rendered":"Different Types of Interrupt Controllers."},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"394\" class=\"elementor elementor-394\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-f108621 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f108621\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6c0b127\" data-id=\"6c0b127\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-inner-section elementor-element elementor-element-492cf57 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"492cf57\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-c9f6c18\" data-id=\"c9f6c18\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fd1aba1 elementor-widget elementor-widget-text-editor\" data-id=\"fd1aba1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2><span class=\"ez-toc-section\" id=\"What-are-types-of-interrupt-controllers\"><\/span>What are types of interrupt controllers?<span class=\"ez-toc-section-end\"><\/span><\/h2><p>There are many types of interrupt controllers depending upon the different configurations in the interrupt controller hardware. Below are the most common types of interrupt controllers.<\/p><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_51_1 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor: pointer\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\" role=\"button\"><label for=\"item-69e1caf051015\" ><span class=\"\"><span style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #337ab7;color:#337ab7\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #337ab7;color:#337ab7\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input aria-label=\"Toggle\" aria-label=\"item-69e1caf051015\"  type=\"checkbox\" id=\"item-69e1caf051015\"><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/digital-communication\/different-types-of-interrupt-controllers\/#What-are-types-of-interrupt-controllers\" title=\"What are types of interrupt controllers?\">What are types of interrupt controllers?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/digital-communication\/different-types-of-interrupt-controllers\/#Generic-Interrupt-Controller\" title=\"Generic Interrupt Controller:\">Generic Interrupt Controller:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/digital-communication\/different-types-of-interrupt-controllers\/#Nested-Vector-Interrupt-Controller-NVIC\" title=\"Nested Vector Interrupt Controller (NVIC):\">Nested Vector Interrupt Controller (NVIC):<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/digital-communication\/different-types-of-interrupt-controllers\/#Vector-Interrupt-Controller-VIC\" title=\"Vector Interrupt Controller (VIC):\">Vector Interrupt Controller (VIC):<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/digital-communication\/different-types-of-interrupt-controllers\/#Wake-up-Interrupt-Controller-WIC\" title=\"Wake-up Interrupt Controller (WIC):\">Wake-up Interrupt Controller (WIC):<\/a><\/li><\/ul><\/nav><\/div>\n<ul><li>Generic Interrupt Controller<strong>\u00a0(GIC)<\/strong><\/li><li>Nested Vector Interrupt Controller\u00a0<strong>(NVIC)<\/strong><\/li><li>Vector Interrupt Controller\u00a0<strong>(VIC)<\/strong><\/li><li>Wake-up Interrupt Controller<strong>\u00a0(WIC)<\/strong><\/li><\/ul><p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-395\" src=\"http:\/\/localhost\/embeddedwala\/wp-content\/uploads\/2023\/06\/Types-of-Interrupt-Controllers.gif\" alt=\"\" width=\"1280\" height=\"720\" \/><\/p><p>\u00a0<\/p><h2><span class=\"ez-toc-section\" id=\"Generic-Interrupt-Controller\"><\/span><strong>Generic Interrupt Controller:<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2><p>This is a common type of interrupt controller used in the multicore environment where\u00a0<strong>inter-processor communication<\/strong>\u00a0is required.\u00a0<strong>GIC<\/strong>\u00a0is a non-vectored interrupt controller type. An interrupt ID is a distinction between interrupts. Interrupt request has four states: Active, Pending, Inactive and Active + Pending.<\/p><p><strong>\u00a0 \u00a0 \u00a0Below are certain features supported by the GIC:<\/strong><\/p><p><strong>Shared Peripheral Interrupt (SPI):<\/strong>\u00a0One or more interrupt from one or more peripheral sources can be targeted to the multiple cores to share the same interrupt between them.<br \/><strong>Private Peripheral Interrupt (PPI):<\/strong>\u00a0An Interrupt could also be targeted to a particular core depending upon the core configuration. So this target interrupt stays private for the particular core.<br \/><strong>Software Generated Interrupt (SGI):<\/strong>\u00a0Some Interrupts triggered from the software will be used for inter-processor communication.<br \/>GIC has both IRQ and FIQ lines to the processor.<\/p><h2><span class=\"ez-toc-section\" id=\"Nested-Vector-Interrupt-Controller-NVIC\"><\/span><strong>Nested Vector Interrupt Controller (NVIC):<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2><p>In\u00a0<strong>NVIC<\/strong>\u00a0processor doesn\u2019t have to poll the interrupt status register to see the source of an interrupt for handling the\u00a0<strong>interrupt service routine (ISR)<\/strong>. There is a predefined mapping in the memory\u00a0<strong>(Vector table area)<\/strong>\u00a0of\u00a0<strong>ISR<\/strong>\u00a0where the targeted\u00a0<strong>ISR Callback<\/strong>\u00a0has to be added in the sequence of an interrupt number to the ISR e.g. interrupt no 19\u00a0<strong>(VOCTBL[19] = &amp;i2c0_tx_callback)<\/strong>\u00a0to the\u00a0<strong>I2C0<\/strong>\u00a0etc.<\/p><p>NVIC is Lightweight and contains a lesser number of interrupts supported to reduce the interrupt latency and only needs a few kBs of RAM and Flash. It runs with the sub &#8211; 100 MHz frequency ideal for the\u00a0<strong>Cortex-M<\/strong>\u00a0series of the\u00a0<strong>MCUs<\/strong>.<\/p><p><strong>\u00a0 \u00a0 \u00a0Below are certain features supported by the NVIC:<\/strong><\/p><ul><li>Vectored: Vector Table support for the predefined ISR callback supported. An interrupt is executed directly after the hardware trigger.<\/li><li><strong>240<\/strong>\u00a0interrupts support.<\/li><li>256 interrupt priority levels for each of the\u00a0<strong>240<\/strong>\u00a0supported interrupts.<\/li><li>Interrupt\u00a0<strong>Preemption\/Nesting<\/strong>\u00a0is supported, e.g. an interrupt can come if we are handling another interrupt:\u00a0<strong>main() ==&gt; ISR_priority1()==&gt; ISR_priority2() ==&gt; main()<\/strong><\/li><li><strong>Priority Grouping:<\/strong>\u00a0Groups are supported for\u00a0<strong>Preemptive<\/strong>\u00a0interrupts and separate subgroups for non-preemptive interrupts.<\/li><li>Supports interrupt tail chaining. During the execution of one ISR, the other ISR can be pending and executed later.<\/li><\/ul><h2><span class=\"ez-toc-section\" id=\"Vector-Interrupt-Controller-VIC\"><\/span><strong>Vector Interrupt Controller (VIC):<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2><p>Supports the calling of ISR callback after the interrupt is triggered. VIC has 32 interrupt request inputs support and is programmable to assign them into three categories,<strong>\u00a0FIQ, vectored IRQ, and non-vectored IRQ<\/strong>.<\/p><p><strong>Below are certain features supported by the VIC:<\/strong><\/p><ul><li>ISR Interrupt Service Routine direct execution from the\u00a0<strong>Vector table<\/strong>\u00a0Register.<\/li><li>Control of re-enabling the interrupt after executing it.<\/li><li>Supports the priorities<\/li><\/ul><h2><span class=\"ez-toc-section\" id=\"Wake-up-Interrupt-Controller-WIC\"><\/span><strong>Wake-up Interrupt Controller (WIC):<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2><p>WIC is an\u00a0<strong>optional Hardware<\/strong>\u00a0supported in the NVIC used to wake up the processor in a few clock cycles and restores the last state of the processor.<\/p><p><strong>WIC<\/strong>\u00a0is used for the processor to enter\/exit the low-power\/ultra-low-power modes.\u00a0<strong>WIC<\/strong>\u00a0has direct hardware signals connected to the power management controller of the processor to control.\u00a0<strong>WIC is not the programable<\/strong>. The only configuration supported is the enable\/disable of WIC on an interrupt line.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>What are types of interrupt controllers? There are many types of interrupt controllers depending upon&#8230;<\/p>\n","protected":false},"author":1,"featured_media":396,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34],"tags":[92,93,95],"class_list":["post-394","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-digital-communication","tag-interruptcontrollers","tag-nvic","tag-wic"],"acf":[],"views":296,"featured_image_urls":{"full":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",520,350,false],"thumbnail":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",150,101,false],"medium":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",300,202,false],"medium_large":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",520,350,false],"large":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",520,350,false],"1536x1536":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",520,350,false],"2048x2048":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",520,350,false],"tp-image-grid":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",520,350,false],"covernews-slider-full":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",520,350,false],"covernews-slider-center":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",520,350,false],"covernews-featured":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",520,350,false],"covernews-medium":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",505,340,false],"covernews-medium-square":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",371,250,false],"_nx_notification_thumb":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/Different-Types-of-Interrupt-Controllers.png",100,67,false]},"author_info":{"display_name":"embeddedwala","author_link":"https:\/\/embeddedwala.com\/beta\/author\/embeddedwala\/"},"category_info":"<a href=\"https:\/\/embeddedwala.com\/beta\/category\/blogs\/digital-communication\/\" rel=\"category tag\">Digital Communication<\/a>","tag_info":"Digital Communication","comment_count":"0","_links":{"self":[{"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/posts\/394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/comments?post=394"}],"version-history":[{"count":5,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/posts\/394\/revisions"}],"predecessor-version":[{"id":6197,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/posts\/394\/revisions\/6197"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/media\/396"}],"wp:attachment":[{"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/media?parent=394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/categories?post=394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/tags?post=394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}