<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>prioridades NVIC FreeRTOS - MCU &amp; FPGA</title>
	<atom:link href="https://mcu.tec.br/tags/prioridades-nvic-freertos/feed/" rel="self" type="application/rss+xml" />
	<link>https://mcu.tec.br</link>
	<description>Microcontroladores &#38; FPGA</description>
	<lastBuildDate>Tue, 06 Jan 2026 22:29:14 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mcu.tec.br/wp-content/uploads/2025/02/Robo-para-o-site-MCU.tec_.br-512x512-1-150x150.png</url>
	<title>prioridades NVIC FreeRTOS - MCU &amp; FPGA</title>
	<link>https://mcu.tec.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ISR + RTOS na Prática com FreeRTOS</title>
		<link>https://mcu.tec.br/rtos/isr-rtos-na-pratica-com-freertos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=isr-rtos-na-pratica-com-freertos</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Fri, 06 Feb 2026 13:37:54 +0000</pubDate>
				<category><![CDATA[RTOS]]></category>
		<category><![CDATA[comunicação ISR task]]></category>
		<category><![CDATA[freertos]]></category>
		<category><![CDATA[FreeRTOS boas práticas]]></category>
		<category><![CDATA[freeRTOS cortex-m]]></category>
		<category><![CDATA[FreeRTOS tempo real]]></category>
		<category><![CDATA[interrupções em sistemas embarcados]]></category>
		<category><![CDATA[ISR]]></category>
		<category><![CDATA[ISR FromISR]]></category>
		<category><![CDATA[prioridades NVIC FreeRTOS]]></category>
		<category><![CDATA[RTOS em microcontroladores]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1044</guid>

					<description><![CDATA[<p>Entenda como integrar corretamente rotinas de interrupção (ISR) ao FreeRTOS em sistemas embarcados. Aprenda o uso das APIs FromISR, prioridades de interrupção no Cortex-M, comunicação ISR → Task, boas práticas arquiteturais, erros comuns e técnicas profissionais de debug para sistemas tempo real determinísticos e robustos.</p>
<p>The post <a href="https://mcu.tec.br/rtos/isr-rtos-na-pratica-com-freertos/">ISR + RTOS na Prática com FreeRTOS</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="root-eb-toc-g555h wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-g555h "><div class="eb-toc-container eb-toc-g555h  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemcollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:2,&quot;content&quot;:&quot;O modelo de execu\u00e7\u00e3o do FreeRTOS e o papel das interrup\u00e7\u00f5es&quot;,&quot;text&quot;:&quot;O modelo de execu\u00e7\u00e3o do FreeRTOS e o papel das interrup\u00e7\u00f5es&quot;,&quot;link&quot;:&quot;eb-table-content-0&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;APIs FromISR: por que elas existem e como funcionam&quot;,&quot;text&quot;:&quot;APIs FromISR: por que elas existem e como funcionam&quot;,&quot;link&quot;:&quot;apis-fromisr-por-que-elas-existem-e-como-funcionam&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Motiva\u00e7\u00e3o conceitual&quot;,&quot;text&quot;:&quot;Motiva\u00e7\u00e3o conceitual&quot;,&quot;link&quot;:&quot;eb-table-content-2&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;O par\u00e2metro xHigherPriorityTaskWoken&quot;,&quot;text&quot;:&quot;O par\u00e2metro xHigherPriorityTaskWoken&quot;,&quot;link&quot;:&quot;eb-table-content-3&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Por que n\u00e3o chamar o escalonador diretamente?&quot;,&quot;text&quot;:&quot;Por que n\u00e3o chamar o escalonador diretamente?&quot;,&quot;link&quot;:&quot;eb-table-content-4&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Resumo pr\u00e1tico desta se\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Resumo pr\u00e1tico desta se\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-5&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Comunica\u00e7\u00e3o entre ISR e Tasks: qual mecanismo usar e quando&quot;,&quot;text&quot;:&quot;Comunica\u00e7\u00e3o entre ISR e Tasks: qual mecanismo usar e quando&quot;,&quot;link&quot;:&quot;eb-table-content-6&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;4.1 Sem\u00e1foros bin\u00e1rios: sinaliza\u00e7\u00e3o simples de eventos&quot;,&quot;text&quot;:&quot;4.1 Sem\u00e1foros bin\u00e1rios: sinaliza\u00e7\u00e3o simples de eventos&quot;,&quot;link&quot;:&quot;eb-table-content-7&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;4.2 Filas (Queues): eventos com dados&quot;,&quot;text&quot;:&quot;4.2 Filas (Queues): eventos com dados&quot;,&quot;link&quot;:&quot;42-filas-queues-eventos-com-dados&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;4.3 Notifica\u00e7\u00f5es diretas de task: o mecanismo mais eficiente&quot;,&quot;text&quot;:&quot;4.3 Notifica\u00e7\u00f5es diretas de task: o mecanismo mais eficiente&quot;,&quot;link&quot;:&quot;eb-table-content-9&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;4.4 Event Groups: m\u00faltiplos eventos e sincroniza\u00e7\u00e3o complexa&quot;,&quot;text&quot;:&quot;4.4 Event Groups: m\u00faltiplos eventos e sincroniza\u00e7\u00e3o complexa&quot;,&quot;link&quot;:&quot;eb-table-content-10&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Resumo arquitetural&quot;,&quot;text&quot;:&quot;Resumo arquitetural&quot;,&quot;link&quot;:&quot;resumo-arquitetural&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Prioridades de interrup\u00e7\u00e3o no Cortex-M e regras do FreeRTOS&quot;,&quot;text&quot;:&quot;Prioridades de interrup\u00e7\u00e3o no Cortex-M e regras do FreeRTOS&quot;,&quot;link&quot;:&quot;eb-table-content-12&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;5.1 Como o NVIC trata prioridades de interrup\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;5.1 Como o NVIC trata prioridades de interrup\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-13&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;5.2 O papel de configMAX_SYSCALL_INTERRUPT_PRIORITY&quot;,&quot;text&quot;:&quot;5.2 O papel de configMAX_SYSCALL_INTERRUPT_PRIORITY&quot;,&quot;link&quot;:&quot;52-o-papel-de-configmax_syscall_interrupt_priority&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;5.3 Erro cl\u00e1ssico: \u201cfunciona at\u00e9 parar de funcionar\u201d&quot;,&quot;text&quot;:&quot;5.3 Erro cl\u00e1ssico: \u201cfunciona at\u00e9 parar de funcionar\u201d&quot;,&quot;link&quot;:&quot;eb-table-content-15&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;5.4 Regra de ouro para Cortex-M + FreeRTOS&quot;,&quot;text&quot;:&quot;5.4 Regra de ouro para Cortex-M + FreeRTOS&quot;,&quot;link&quot;:&quot;54-regra-de-ouro-para-cortex-m-freertos&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;5.5 Configura\u00e7\u00e3o correta no c\u00f3digo&quot;,&quot;text&quot;:&quot;5.5 Configura\u00e7\u00e3o correta no c\u00f3digo&quot;,&quot;link&quot;:&quot;eb-table-content-17&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;5.6 Por que o FreeRTOS faz isso?&quot;,&quot;text&quot;:&quot;5.6 Por que o FreeRTOS faz isso?&quot;,&quot;link&quot;:&quot;56-por-que-o-freertos-faz-isso&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Boas pr\u00e1ticas e padr\u00f5es arquiteturais para ISR + FreeRTOS&quot;,&quot;text&quot;:&quot;Boas pr\u00e1ticas e padr\u00f5es arquiteturais para ISR + FreeRTOS&quot;,&quot;link&quot;:&quot;eb-table-content-19&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;6.1 ISR m\u00ednima: a regra mais importante&quot;,&quot;text&quot;:&quot;6.1 ISR m\u00ednima: a regra mais importante&quot;,&quot;link&quot;:&quot;eb-table-content-20&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;6.2 Deferred Interrupt Processing (DIP)&quot;,&quot;text&quot;:&quot;6.2 Deferred Interrupt Processing (DIP)&quot;,&quot;link&quot;:&quot;62-deferred-interrupt-processing-dip&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;6.3 Escolha correta do mecanismo de sinaliza\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;6.3 Escolha correta do mecanismo de sinaliza\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-22&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;6.4 ISR n\u00e3o \u00e9 lugar para HAL complexa&quot;,&quot;text&quot;:&quot;6.4 ISR n\u00e3o \u00e9 lugar para HAL complexa&quot;,&quot;link&quot;:&quot;eb-table-content-23&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;6.5 Prioridades de tasks e interrup\u00e7\u00f5es alinhadas&quot;,&quot;text&quot;:&quot;6.5 Prioridades de tasks e interrup\u00e7\u00f5es alinhadas&quot;,&quot;link&quot;:&quot;eb-table-content-24&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;6.6 Checklist profissional ISR + FreeRTOS&quot;,&quot;text&quot;:&quot;6.6 Checklist profissional ISR + FreeRTOS&quot;,&quot;link&quot;:&quot;66-checklist-profissional-isr-freertos&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Erros comuns, sintomas e estrat\u00e9gias de debug em ISR + FreeRTOS&quot;,&quot;text&quot;:&quot;Erros comuns, sintomas e estrat\u00e9gias de debug em ISR + FreeRTOS&quot;,&quot;link&quot;:&quot;eb-table-content-26&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;7.1 Sintoma: sistema \u201ccongela\u201d aleatoriamente&quot;,&quot;text&quot;:&quot;7.1 Sintoma: sistema \u201ccongela\u201d aleatoriamente&quot;,&quot;link&quot;:&quot;71-sintoma-sistema-congela-aleatoriamente&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;7.2 Sintoma: eventos perdidos ou atrasados&quot;,&quot;text&quot;:&quot;7.2 Sintoma: eventos perdidos ou atrasados&quot;,&quot;link&quot;:&quot;72-sintoma-eventos-perdidos-ou-atrasados&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;7.3 Sintoma: jitter elevado em tarefas de controle&quot;,&quot;text&quot;:&quot;7.3 Sintoma: jitter elevado em tarefas de controle&quot;,&quot;link&quot;:&quot;73-sintoma-jitter-elevado-em-tarefas-de-controle&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;7.4 Uso de GPIO para an\u00e1lise temporal (t\u00e9cnica profissional)&quot;,&quot;text&quot;:&quot;7.4 Uso de GPIO para an\u00e1lise temporal (t\u00e9cnica profissional)&quot;,&quot;link&quot;:&quot;eb-table-content-30&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;7.5 Assertivas do FreeRTOS: aliadas, n\u00e3o inimigas&quot;,&quot;text&quot;:&quot;7.5 Assertivas do FreeRTOS: aliadas, n\u00e3o inimigas&quot;,&quot;link&quot;:&quot;eb-table-content-31&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;7.6 Anti-padr\u00f5es cl\u00e1ssicos (resumo r\u00e1pido)&quot;,&quot;text&quot;:&quot;7.6 Anti-padr\u00f5es cl\u00e1ssicos (resumo r\u00e1pido)&quot;,&quot;link&quot;:&quot;eb-table-content-32&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;7.7 Mentalidade correta: ISR como fronteira de tempo real&quot;,&quot;text&quot;:&quot;7.7 Mentalidade correta: ISR como fronteira de tempo real&quot;,&quot;link&quot;:&quot;77-mentalidade-correta-isr-como-fronteira-de-tempo-real&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Conclus\u00e3o \u2013 ISR + FreeRTOS como arquitetura, n\u00e3o como detalhe&quot;,&quot;text&quot;:&quot;Conclus\u00e3o \u2013 ISR + FreeRTOS como arquitetura, n\u00e3o como detalhe&quot;,&quot;link&quot;:&quot;eb-table-content-34&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;O modelo de execu\u00e7\u00e3o do FreeRTOS e o papel das interrup\u00e7\u00f5es&quot;,&quot;value&quot;:&quot;o-modelo-de-execu\u00e7\u00e3o-do-freertos-e-o-papel-das-interrup\u00e7\u00f5es&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;APIs FromISR: por que elas existem e como funcionam&quot;,&quot;value&quot;:&quot;apis-fromisr-por-que-elas-existem-e-como-funcionam&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Motiva\u00e7\u00e3o conceitual&quot;,&quot;value&quot;:&quot;motiva\u00e7\u00e3o-conceitual&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O par\u00e2metro xHigherPriorityTaskWoken&quot;,&quot;value&quot;:&quot;o-par\u00e2metro-xhigherprioritytaskwoken&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Por que n\u00e3o chamar o escalonador diretamente?&quot;,&quot;value&quot;:&quot;por-que-n\u00e3o-chamar-o-escalonador-diretamente&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Resumo pr\u00e1tico desta se\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;resumo-pr\u00e1tico-desta-se\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Comunica\u00e7\u00e3o entre ISR e Tasks: qual mecanismo usar e quando&quot;,&quot;value&quot;:&quot;comunica\u00e7\u00e3o-entre-isr-e-tasks-qual-mecanismo-usar-e-quando&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;4.1 Sem\u00e1foros bin\u00e1rios: sinaliza\u00e7\u00e3o simples de eventos&quot;,&quot;value&quot;:&quot;41-sem\u00e1foros-bin\u00e1rios-sinaliza\u00e7\u00e3o-simples-de-eventos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;4.2 Filas (Queues): eventos com dados&quot;,&quot;value&quot;:&quot;42-filas-queues-eventos-com-dados&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;4.3 Notifica\u00e7\u00f5es diretas de task: o mecanismo mais eficiente&quot;,&quot;value&quot;:&quot;43-notifica\u00e7\u00f5es-diretas-de-task-o-mecanismo-mais-eficiente&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;4.4 Event Groups: m\u00faltiplos eventos e sincroniza\u00e7\u00e3o complexa&quot;,&quot;value&quot;:&quot;44-event-groups-m\u00faltiplos-eventos-e-sincroniza\u00e7\u00e3o-complexa&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Resumo arquitetural&quot;,&quot;value&quot;:&quot;resumo-arquitetural&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Prioridades de interrup\u00e7\u00e3o no Cortex-M e regras do FreeRTOS&quot;,&quot;value&quot;:&quot;prioridades-de-interrup\u00e7\u00e3o-no-cortex-m-e-regras-do-freertos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;5.1 Como o NVIC trata prioridades de interrup\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;51-como-o-nvic-trata-prioridades-de-interrup\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;5.2 O papel de configMAX_SYSCALL_INTERRUPT_PRIORITY&quot;,&quot;value&quot;:&quot;52-o-papel-de-configmax_syscall_interrupt_priority&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;5.3 Erro cl\u00e1ssico: \u201cfunciona at\u00e9 parar de funcionar\u201d&quot;,&quot;value&quot;:&quot;53-erro-cl\u00e1ssico-funciona-at\u00e9-parar-de-funcionar&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;5.4 Regra de ouro para Cortex-M + FreeRTOS&quot;,&quot;value&quot;:&quot;54-regra-de-ouro-para-cortex-m-freertos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;5.5 Configura\u00e7\u00e3o correta no c\u00f3digo&quot;,&quot;value&quot;:&quot;55-configura\u00e7\u00e3o-correta-no-c\u00f3digo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;5.6 Por que o FreeRTOS faz isso?&quot;,&quot;value&quot;:&quot;56-por-que-o-freertos-faz-isso&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Boas pr\u00e1ticas e padr\u00f5es arquiteturais para ISR + FreeRTOS&quot;,&quot;value&quot;:&quot;boas-pr\u00e1ticas-e-padr\u00f5es-arquiteturais-para-isr-freertos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6.1 ISR m\u00ednima: a regra mais importante&quot;,&quot;value&quot;:&quot;61-isr-m\u00ednima-a-regra-mais-importante&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6.2 Deferred Interrupt Processing (DIP)&quot;,&quot;value&quot;:&quot;62-deferred-interrupt-processing-dip&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6.3 Escolha correta do mecanismo de sinaliza\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;63-escolha-correta-do-mecanismo-de-sinaliza\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6.4 ISR n\u00e3o \u00e9 lugar para HAL complexa&quot;,&quot;value&quot;:&quot;64-isr-n\u00e3o-\u00e9-lugar-para-hal-complexa&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6.5 Prioridades de tasks e interrup\u00e7\u00f5es alinhadas&quot;,&quot;value&quot;:&quot;65-prioridades-de-tasks-e-interrup\u00e7\u00f5es-alinhadas&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6.6 Checklist profissional ISR + FreeRTOS&quot;,&quot;value&quot;:&quot;66-checklist-profissional-isr-freertos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Erros comuns, sintomas e estrat\u00e9gias de debug em ISR + FreeRTOS&quot;,&quot;value&quot;:&quot;erros-comuns-sintomas-e-estrat\u00e9gias-de-debug-em-isr-freertos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;7.1 Sintoma: sistema \u201ccongela\u201d aleatoriamente&quot;,&quot;value&quot;:&quot;71-sintoma-sistema-congela-aleatoriamente&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;7.2 Sintoma: eventos perdidos ou atrasados&quot;,&quot;value&quot;:&quot;72-sintoma-eventos-perdidos-ou-atrasados&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;7.3 Sintoma: jitter elevado em tarefas de controle&quot;,&quot;value&quot;:&quot;73-sintoma-jitter-elevado-em-tarefas-de-controle&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;7.4 Uso de GPIO para an\u00e1lise temporal (t\u00e9cnica profissional)&quot;,&quot;value&quot;:&quot;74-uso-de-gpio-para-an\u00e1lise-temporal-t\u00e9cnica-profissional&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;7.5 Assertivas do FreeRTOS: aliadas, n\u00e3o inimigas&quot;,&quot;value&quot;:&quot;75-assertivas-do-freertos-aliadas-n\u00e3o-inimigas&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;7.6 Anti-padr\u00f5es cl\u00e1ssicos (resumo r\u00e1pido)&quot;,&quot;value&quot;:&quot;76-anti-padr\u00f5es-cl\u00e1ssicos-resumo-r\u00e1pido&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;7.7 Mentalidade correta: ISR como fronteira de tempo real&quot;,&quot;value&quot;:&quot;77-mentalidade-correta-isr-como-fronteira-de-tempo-real&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conclus\u00e3o \u2013 ISR + FreeRTOS como arquitetura, n\u00e3o como detalhe&quot;,&quot;value&quot;:&quot;conclus\u00e3o-isr-freertos-como-arquitetura-n\u00e3o-como-detalhe&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class="eb-toc__list"><li><a href="#eb-table-content-0">O modelo de execução do FreeRTOS e o papel das interrupções</a><li><a href="#apis-fromisr-por-que-elas-existem-e-como-funcionam">APIs FromISR: por que elas existem e como funcionam</a><ul class="eb-toc__list"><li><a href="#eb-table-content-2">Motivação conceitual</a><li><a href="#eb-table-content-3">O parâmetro xHigherPriorityTaskWoken</a><li><a href="#eb-table-content-4">Por que não chamar o escalonador diretamente?</a><li><a href="#eb-table-content-5">Resumo prático desta seção</a></li></ul><li><a href="#eb-table-content-6">Comunicação entre ISR e Tasks: qual mecanismo usar e quando</a><ul class="eb-toc__list"><li><a href="#eb-table-content-7">4.1 Semáforos binários: sinalização simples de eventos</a><li><a href="#42-filas-queues-eventos-com-dados">4.2 Filas (Queues): eventos com dados</a><li><a href="#eb-table-content-9">4.3 Notificações diretas de task: o mecanismo mais eficiente</a><li><a href="#eb-table-content-10">4.4 Event Groups: múltiplos eventos e sincronização complexa</a><li><a href="#resumo-arquitetural">Resumo arquitetural</a></li></ul><li><a href="#eb-table-content-12">Prioridades de interrupção no Cortex-M e regras do FreeRTOS</a><ul class="eb-toc__list"><li><a href="#eb-table-content-13">5.1 Como o NVIC trata prioridades de interrupção</a><li><a href="#52-o-papel-de-configmax_syscall_interrupt_priority">5.2 O papel de configMAX_SYSCALL_INTERRUPT_PRIORITY</a><li><a href="#eb-table-content-15">5.3 Erro clássico: “funciona até parar de funcionar”</a><li><a href="#54-regra-de-ouro-para-cortex-m-freertos">5.4 Regra de ouro para Cortex-M + FreeRTOS</a><li><a href="#eb-table-content-17">5.5 Configuração correta no código</a><li><a href="#56-por-que-o-freertos-faz-isso">5.6 Por que o FreeRTOS faz isso?</a></li></ul><li><a href="#eb-table-content-19">Boas práticas e padrões arquiteturais para ISR + FreeRTOS</a><ul class="eb-toc__list"><li><a href="#eb-table-content-20">6.1 ISR mínima: a regra mais importante</a><li><a href="#62-deferred-interrupt-processing-dip">6.2 Deferred Interrupt Processing (DIP)</a><li><a href="#eb-table-content-22">6.3 Escolha correta do mecanismo de sinalização</a><li><a href="#eb-table-content-23">6.4 ISR não é lugar para HAL complexa</a><li><a href="#eb-table-content-24">6.5 Prioridades de tasks e interrupções alinhadas</a><li><a href="#66-checklist-profissional-isr-freertos">6.6 Checklist profissional ISR + FreeRTOS</a></li></ul><li><a href="#eb-table-content-26">Erros comuns, sintomas e estratégias de debug em ISR + FreeRTOS</a><ul class="eb-toc__list"><li><a href="#71-sintoma-sistema-congela-aleatoriamente">7.1 Sintoma: sistema “congela” aleatoriamente</a><li><a href="#72-sintoma-eventos-perdidos-ou-atrasados">7.2 Sintoma: eventos perdidos ou atrasados</a><li><a href="#73-sintoma-jitter-elevado-em-tarefas-de-controle">7.3 Sintoma: jitter elevado em tarefas de controle</a><li><a href="#eb-table-content-30">7.4 Uso de GPIO para análise temporal (técnica profissional)</a><li><a href="#eb-table-content-31">7.5 Assertivas do FreeRTOS: aliadas, não inimigas</a><li><a href="#eb-table-content-32">7.6 Anti-padrões clássicos (resumo rápido)</a><li><a href="#77-mentalidade-correta-isr-como-fronteira-de-tempo-real">7.7 Mentalidade correta: ISR como fronteira de tempo real</a></li></ul><li><a href="#eb-table-content-34">Conclusão – ISR + FreeRTOS como arquitetura, não como detalhe</a></ul></div></div></div></div></div>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">Em sistemas embarcados modernos, a combinação entre <strong>rotinas de interrupção (ISR – <em>Interrupt Service Routines</em>)</strong> e um <strong>sistema operacional de tempo real (RTOS – <em>Real-Time Operating System</em>)</strong> é praticamente inevitável. Sensores, timers, interfaces de comunicação (UART, SPI, I2C, Ethernet), conversores ADC e eventos externos dependem fortemente de interrupções para garantir baixa latência e previsibilidade. No entanto, quando um RTOS como o FreeRTOS entra em cena, o uso ingênuo de ISRs — comum em sistemas bare-metal — passa a ser uma fonte frequente de bugs, <em>deadlocks</em>, <em>starvation</em> e violações temporais.</p>



<p class="wp-block-paragraph">O principal motivo é conceitual: <strong>uma ISR não é uma task</strong>. Ela não participa do escalonamento, não pode bloquear, não possui pilha dinâmica extensa e não deve executar lógica complexa. O papel da ISR em um sistema com RTOS é <strong>sinalizar eventos ao sistema</strong>, e não processá-los integralmente. O processamento deve ser delegado às <em>tasks</em>, que operam sob o controle do escalonador e respeitam prioridades, tempos de bloqueio e políticas de sincronização.</p>



<p class="wp-block-paragraph">Outro ponto crítico é que o FreeRTOS é projetado para ser <strong>determinístico</strong>, mas isso só se mantém se as ISRs respeitarem as regras do kernel. Uma ISR longa demais ou que chame APIs incorretas pode quebrar garantias fundamentais do sistema, como latência máxima de resposta, justiça no escalonamento e previsibilidade temporal — características essenciais em sistemas industriais, médicos e automotivos.</p>



<p class="wp-block-paragraph">Neste artigo, vamos sair do nível conceitual abstrato e entrar na <strong>prática real de ISR + RTOS</strong>, cobrindo:</p>



<ul class="wp-block-list">
<li>Como o FreeRTOS enxerga uma interrupção</li>



<li>Por que existem APIs específicas “FromISR”</li>



<li>Como sinalizar tasks a partir de ISRs de forma segura</li>



<li>Quando usar semáforos, filas, notificações e event groups</li>



<li>Boas práticas arquiteturais e armadilhas comuns</li>
</ul>



<p class="wp-block-paragraph">O foco será sempre <strong>didático, técnico e aplicável</strong>, com exemplos em C para microcontroladores Cortex-M (como STM32), mantendo o rigor exigido por aplicações profissionais.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/><p>The post <a href="https://mcu.tec.br/rtos/isr-rtos-na-pratica-com-freertos/">ISR + RTOS na Prática com FreeRTOS</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1044</post-id>	</item>
	</channel>
</rss>
