SlideShare a Scribd company logo
1 of 30
UNIVERSIDADE DE PERNAMBUCO

Software Timers and
Interrupts no FreeRTOS
UNIVERSIDADE DE PERNAMBUCO

Roteiro:
•
•
•
•
•
•
•
•
•
•
•

Software Timers
Tipos de Software Timers
Habilitando o Software Timers
Funções da API do Software Timers
Interrupções
Configurando as Prioridades
Mecanismo de Sincronização
Semáforo Binário
Semáforo Contadores
Queues
Bibliografia
UNIVERSIDADE DE PERNAMBUCO

Software Timers
•

•

•

•

Um software timer é basicamente um timer que possibilita uma
função ser executada em determinado tempo no futuro.
A função executada pelo software timer é chamada de função
de callback, e o tempo entre a inicialização do timer e a
execução da função de callback é chamada de período do
timer.
Portanto, com o software timer você consegue configurar uma
função de callback para ser executada quando um período de
tempo expirar.

Um software timer deve ser explicitamente criado antes
que ele possa ser usado.
UNIVERSIDADE DE PERNAMBUCO

•

•

A funcionalidade de software timer do FreeRTOS não faz
parte do núcleo do kernel, e foi implementada de forma a
não adicionar overhead de processamento à aplicação.
Basicamente, a implementação de software timer do
FreeRTOS atua como uma tarefa usando os recursos
providos pelo FreeRTOS. Ela é composta por um conjunto
de APIs que se comunicam com a tarefa de timer através
de filas.
UNIVERSIDADE DE PERNAMBUCO

Tipos de Software Timers
•

•

One-shot: executa a função de callback apenas uma vez,
pode ser reiniciado manualmente.
Auto-reload: após a execução da função de callback,
reinicia sua execução automaticamente. Ou seja,
executa a função de callback periodicamente.
UNIVERSIDADE DE PERNAMBUCO

Habilitando o Software Timer
Para habilitar esta funcionalidade, adicione o arquivo timers.c ao
projeto e configure as seguintes opções no arquivo de configuração
FreeRTOSConfig.h:
configUSE_TIMERS: “1” para habilitar a funcionalidade de timer.

•

configTIMER_TASK_PRIORITY: define a prioridade da tarefa de
timer.
•

configTIMER_QUEUE_LENGTH: define o tamanho do queue da
tarefa de timer.
•

configTIMER_TASK_STACK_DEPTH: define o tamanho do stack
da tarefa de timer.
•
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
 xTimerCreate
 xTimerIsTimerActive
 pvTimerGetTimerID
 xTimerStart
 xTimerStop
 xTimerChangePeriod
 xTimerDelete
 xTimerReset
 xTimerStartFromISR
 xTimerStopFromISR
 xTimerChangePeriodFromISR
 xTimerResetFromISR
 xTimerGetTimerDaemonTaskHandle
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xTimerCreate
Parametros :
pcTimerName : Um nome que é atribuído ao Timer.
xtimerPeriod : Periodo de tempo necessário.
uxAutoReload : Se for definido como pdTRUE quando xtimerPeriod expira,
o tempo é reiniciado.
Se for definido como pdFALSE após o termino do tempo
o temporizador entra no estado adormecido.
pvTimerID : Identificador que é atribuído ao temporizador que está sendo
criado , usado para saber qual temporizador expirou.
pxCallbackFunction : A função a ser chamada quando o tempo expirar.
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xTimerCreate
Retorno :
Se o Timer for criado com sucesso o identificador do Timer é
retornado.
Se não houver espaço na pilha para alocar as estruturas do Timer,
ou o período do Timer foi definido como 0 , é retornado NULL.
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xTimerIsTimerActive
Consulta um cronômetro para ver se ele está ativo ou inativo.
Timers são criados no estado inativo.
Parâmetros:
xtimer : O timer que está sendo consultado.
Retorno:
pdFALSE será retornado se o timer está inativo.
Um valor diferente de pdFALSE será devolvido se o timer está ativo.
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xtimerDelete :
Parâmetros :
xTimer : O Timer que está sendo excluído.
xblockTime : Especifica o tempo que a tarefa deve ficar no estado
bloqueado para esperar o envio do comando de
exclusão para a fila de comandos de Timer.
Retorno :
Será retornado pdFAIL se o comando delete não pode ser enviado
a fila de comandos de Timers , mesmo depois de o xBlockTime ter
Acabado.
Será retornado pdPASS se o comando for enviado com sucesso para
a fila de comando de Timers.
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
pvTimerGetTimerID
Retorna o ID atribuído ao temporizador.
Parâmetros:
xTimer O temporizador sendo consultado.
Retorno:
O ID atribuído ao temporizador sendo consultado.
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xTimerStartFromISR
Retorno :
Será retornado pdFAIL se o comando de inicio não pode ser enviado
a fila de comandos de Timers.
Será retornado pdPASS se o comando for enviado com sucesso para
a fila de comando de Timers.
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xTimerStopFromISR
Parâmetros :
xTimer : O timer a ser interrompido.
pxHigherPriorityTaskWoken:
Serve para, sair do estado bloqueado se a tarefa que está tendo
seu comando na fila de Timer executado tiver uma prioridade
menor que a interrupção, então é definido como pdTrue e há
uma troca de contexto.
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xTimerStopFromISR
Retorno :
Será retornado pdFAIL se o comando de parada não pode ser enviado
a fila de comandos de Timers.
Será retornado pdPASS se o comando for enviado com sucesso para
a fila de comando de Timers
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xTimerChangePeriodFromISR
Muda o período de um Timer que foi previamente criado.
Pode ser chamado para alterar o período de um Timer no estado
ativo ou inativo.

Parâmetros :
xTimer : O Timer que está tendo seu período alterado.
xnewPeriod : O novo prazo para a xTimer.
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
Software Timer API Functions
xTimerChangePeriodFromISR
Parâmetros :
pxHigherPriorityTaskWoken :
Serve para , sair do estado bloqueado se a tarefa que está
tendo seu comando da fila de Timer executado tiver uma
prioridade menor que a interrupção, então, é definido como
pdTrue e há uma troca de contexto
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xTimerChangePeriodFromISR
Retorno :
Será retornado pdFAIL se o comando de mudança de tempo não pode ser
enviado a fila de comandos de Timers.
Será retornado pdPASS se o comando for enviado com sucesso para
a fila de comando de Timers.
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xtimerResetFromISR :
Parâmetros:
xTimer : O Timer iniciado / reiniciado.
pxHigherPriorityTaskWoken :
Serve para , sair do estado bloqueado se a tarefa que está tendo
seu comando da fila de Timer executado tiver uma prioridade menor
que a interrupção, então, é definido como pdTrue e há uma troca
de contexto

.
UNIVERSIDADE DE PERNAMBUCO

Software Timer API Functions
xtimerResetFromISR
Retorno :
Será retornado pdFAIL se o comando reinicio não pode ser enviado
a fila de comandos de Timers.
Será retornado pdPASS se o comando for enviado com sucesso para
a fila de comando de Timers
UNIVERSIDADE DE PERNAMBUCO

Interrupções
Sistemas embarcados precisam tomar ações
baseados em eventos externos. Normalmente os
eventos são tratados através de interrupções,
dentro da rotina de tratamento de interrupção (ISR).
UNIVERSIDADE DE PERNAMBUCO

O FreeRTOS usa 3 fontes de interrupção no porte para o ARM CortexM3/M4:
• SysTick (System Tick Timer): É uma interrupção periódica usada
pelo kernel para forçar a troca de contexto, setando o registrador
PENDSV do NVIC, e consequentemente habilitando a exceção
PendSV.
• PendSV (Pended System Call): Esta exceção fica pendente e é
executada assim que outras exceções com maior prioridade forem
tratadas. É ela que faz a troca de contexto.
• SVCall (System Service Call): É uma interrupção de software que
pode ser usada para gerar chamadas de sistema. É usada pelo kernel
basicamente para executar a primeira tarefa da aplicação.
UNIVERSIDADE DE PERNAMBUCO

Configurando as Prioridades
Existem duas opções no arquivo de configuração do FreeRTOS para
configurar as prioridades das interrupções usadas pelo kernel:
• configKERNEL_INTERRUPT_PRIORITY: configura a prioridade das
interrupções usadas pelo kernel (SysTick e PendSV). É normalmente
configurada com a menor prioridade possível.
• configMAX_SYSCALL_INTERRUPT_PRIORITY: define a interrupção
de maior prioridade que pode usar a API do FreeRTOS. Isso porque,
ao executar uma seção crítica, o kernel desabilita todas as
interrupções de prioridade menor ou igual à definida por esta
constante. Isso significa que o FreeRTOS nunca desabilita todas as
interrupções por completo, mesmo dentro de seções críticas!
UNIVERSIDADE DE PERNAMBUCO

• Como todas as interrupções tem prioridade máxima (valor 0)
por padrão no boot, as rotinas de tratamento de interrupção que
usam serviços do FreeRTOS precisam ser inicializadas com um
valor
maior
ou
igual
que
configMAX_SYSCALL_INTERRUPT_PRIORITY;
• Rotinas de interrupção extremamente críticas podem ter uma
prioridade maior, implicando um valor menor que
configMAX_SYSCALL_INTERRUPT_PRIORITY,
mas
não
podem usar nenhuma função da API do FreeRTOS.
UNIVERSIDADE DE PERNAMBUCO

Mecanismo de Sincronização
• Uma interrupção é capaz de deferir trabalho para uma tarefa
através de mecanismos de sincronização.
• O FreeRTOS
sincronização:

possui

os

seguintes

mecanismos

de

• Semáforos Binários (Binary Semaphores)
• Semáforos Contadores (Counting Semaphores)
• Queues
• Estes mecanismos de sincronização podem ser usados tanto
para comunicação entre tarefas quanto para comunicação entre
interrupções e tarefas.
UNIVERSIDADE DE PERNAMBUCO

Semáforo Binário
• Um Semáforo Binário (Binary Semaphore) é um mecanismo de
sincronização disponibilizado pelo FreeRTOS.
• Ele pode ser usado para acordar (desbloquear) uma tarefa
quando determinada interrupção acontecer, sincronizando a
interrupção com a tarefa.
• Desta forma, apenas o essencial é executado na interrupção, o
restante do trabalho é deferido para a tarefa correspondente ao
tratamento da interrupção.
UNIVERSIDADE DE PERNAMBUCO

Semáforo Contadores
• Semáforos binários são úteis quando a frequência de
interrupções é baixa. Mas quando a frequência de interrupções
é alta, existe a possibilidade de perdermos interrupções.
• O problema acontece quando mais de uma interrupção acontece
no momento em que a tarefa ainda esta tratando o trabalho
deferido pela interrupção anterior.
• Para estes casos, podemos usar os semáforos contadores
(counting semaphores) no lugar dos semáforos binários.
Podemos usar os semáforos contadores para:
• Tratar eventos.
• Gerenciar o acesso à recursos.
UNIVERSIDADE DE PERNAMBUCO

Queues
• Semáforos são usados para comunicar eventos entre tarefas, ou
entre uma tarefa e uma interrupção.
• Queues são usadas para comunicar eventos e transferir dados.
• Portanto, você pode usar queues para transferir dados e deferir
trabalho de uma interrupção para uma tarefa do RTOS.
• Para trabalhar com queues em interrupções, use as funções que
terminam com “FromISR”.
• A queue usada para esta finalidade é chamada de Timer
Command Queue (fila de comando do timer), sua implementação
é privada para o FreeRTOS e não pode ser acessada ​
diretamente.
UNIVERSIDADE DE PERNAMBUCO

• Você pode usar algumas técnicas para transferir dados de uma
interrupção para uma tarefa:
• Se a taxa de transferência for baixa, você pode
simplesmente transferir byte a byte usando um queue.
• Se a taxa de transferência for alta, você pode salvar os
dados transferidos em um buffer, e quando receber uma
mensagem completa, notificar a tarefa com um semáforo
ou enviar a mensagem com um queue.
• Você pode também decodificar mensagens direto da ISR, e
passar os dados já interpretados via queue para a tarefa. Este
técnica só é válida se a decodificação dos dados forem rápidas o
suficiente para serem executadas de dentro da ISR.
UNIVERSIDADE DE PERNAMBUCO

Bibliografia
[1] PRADO, S. Desenvolvendo com o FreeRTOS. São Paulo, julho
2012.
[2] FREERTOS. A Real Time Engineers. Disponível
<http://www.freertos.org/ >. Acesso em: 28 set 2013.

em:

More Related Content

What's hot

Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
Goの時刻に関するテスト
Goの時刻に関するテストGoの時刻に関するテスト
Goの時刻に関するテストKentaro Kawano
 
Edge Computing と k8s でなんか話すよ
Edge Computing と k8s でなんか話すよEdge Computing と k8s でなんか話すよ
Edge Computing と k8s でなんか話すよVirtualTech Japan Inc.
 
サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情Shinya Mochida
 
SFUの話
SFUの話SFUの話
SFUの話tnoho
 
マイクロサービスの基盤として注目の「NGINX」最新情報 | 20180127 OSC2018 OSAKA
マイクロサービスの基盤として注目の「NGINX」最新情報 | 20180127 OSC2018 OSAKAマイクロサービスの基盤として注目の「NGINX」最新情報 | 20180127 OSC2018 OSAKA
マイクロサービスの基盤として注目の「NGINX」最新情報 | 20180127 OSC2018 OSAKAMurata Tatsuhiro
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用Yuta Imai
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeMartin Schütte
 
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#Yoshifumi Kawai
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いota42y
 
Data Center TCP (DCTCP)
Data Center TCP (DCTCP)Data Center TCP (DCTCP)
Data Center TCP (DCTCP)kato_t1988
 
Terraform: An Overview & Introduction
Terraform: An Overview & IntroductionTerraform: An Overview & Introduction
Terraform: An Overview & IntroductionLee Trout
 
MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較Shinya Sugiyama
 
Terraform modules and some of best-practices - March 2019
Terraform modules and some of best-practices - March 2019Terraform modules and some of best-practices - March 2019
Terraform modules and some of best-practices - March 2019Anton Babenko
 
PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話Rui Hirokawa
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドMasanori Nara
 
Office365導入時のDNS設定の注意点
Office365導入時のDNS設定の注意点Office365導入時のDNS設定の注意点
Office365導入時のDNS設定の注意点Shu Yamada
 
Visual StudioやAzureからAzure DevOpsを使う
Visual StudioやAzureからAzure DevOpsを使うVisual StudioやAzureからAzure DevOpsを使う
Visual StudioやAzureからAzure DevOpsを使うTakeshi Fukuhara
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)NTT DATA Technology & Innovation
 
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!Kohei Tokunaga
 

What's hot (20)

Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
Goの時刻に関するテスト
Goの時刻に関するテストGoの時刻に関するテスト
Goの時刻に関するテスト
 
Edge Computing と k8s でなんか話すよ
Edge Computing と k8s でなんか話すよEdge Computing と k8s でなんか話すよ
Edge Computing と k8s でなんか話すよ
 
サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情
 
SFUの話
SFUの話SFUの話
SFUの話
 
マイクロサービスの基盤として注目の「NGINX」最新情報 | 20180127 OSC2018 OSAKA
マイクロサービスの基盤として注目の「NGINX」最新情報 | 20180127 OSC2018 OSAKAマイクロサービスの基盤として注目の「NGINX」最新情報 | 20180127 OSC2018 OSAKA
マイクロサービスの基盤として注目の「NGINX」最新情報 | 20180127 OSC2018 OSAKA
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as Code
 
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
Data Center TCP (DCTCP)
Data Center TCP (DCTCP)Data Center TCP (DCTCP)
Data Center TCP (DCTCP)
 
Terraform: An Overview & Introduction
Terraform: An Overview & IntroductionTerraform: An Overview & Introduction
Terraform: An Overview & Introduction
 
MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較
 
Terraform modules and some of best-practices - March 2019
Terraform modules and some of best-practices - March 2019Terraform modules and some of best-practices - March 2019
Terraform modules and some of best-practices - March 2019
 
PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルド
 
Office365導入時のDNS設定の注意点
Office365導入時のDNS設定の注意点Office365導入時のDNS設定の注意点
Office365導入時のDNS設定の注意点
 
Visual StudioやAzureからAzure DevOpsを使う
Visual StudioやAzureからAzure DevOpsを使うVisual StudioやAzureからAzure DevOpsを使う
Visual StudioやAzureからAzure DevOpsを使う
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
 
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
 

Similar to Timers and Interrupts no FreeRTOS

Interrupts and the timer
Interrupts and the timerInterrupts and the timer
Interrupts and the timerMayara Mônica
 
Gerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUGerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUAlexandre Duarte
 
ProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfssuser1d8ddd
 
LabMM3 - Aula teórica 08
LabMM3 - Aula teórica 08LabMM3 - Aula teórica 08
LabMM3 - Aula teórica 08Carlos Santos
 
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisRodrigo Kiyoshi Saito
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - SubalgoritmosCarlos Santos
 
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdfmicrocontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdftccunip
 
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdfAula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdfMauricio Wieler
 
Relatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkRelatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkJeison Barros
 
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorCategorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorSofia Trindade
 
Aula 12 - Escalonamento
Aula 12 - EscalonamentoAula 12 - Escalonamento
Aula 12 - Escalonamentocamila_seixas
 
True Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no AndroidTrue Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no AndroidVinícius Thiengo
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasLeonardo Pedroso Costa
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...Marcelo Barros de Almeida
 
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio BucciantiLinux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio BucciantiJoao Galdino Mello de Souza
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 

Similar to Timers and Interrupts no FreeRTOS (20)

Interrupts and the timer
Interrupts and the timerInterrupts and the timer
Interrupts and the timer
 
Gerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUGerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPU
 
ProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfProcessosEscalonamento.pdf
ProcessosEscalonamento.pdf
 
LabMM3 - Aula teórica 08
LabMM3 - Aula teórica 08LabMM3 - Aula teórica 08
LabMM3 - Aula teórica 08
 
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
 
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdfmicrocontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
 
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdfAula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
 
Apresentacao sobre o KURT
Apresentacao sobre o KURTApresentacao sobre o KURT
Apresentacao sobre o KURT
 
SubProgramas
SubProgramasSubProgramas
SubProgramas
 
Relatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkRelatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunk
 
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorCategorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
 
Aula 12 - Escalonamento
Aula 12 - EscalonamentoAula 12 - Escalonamento
Aula 12 - Escalonamento
 
Aula 4
Aula 4Aula 4
Aula 4
 
True Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no AndroidTrue Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no Android
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferenças
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
 
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio BucciantiLinux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 

More from Mayara Mônica

Pronouns and Verb To Be
Pronouns and Verb To BePronouns and Verb To Be
Pronouns and Verb To BeMayara Mônica
 
Aprendendo o Alfabeto em Inglês
Aprendendo o Alfabeto em InglêsAprendendo o Alfabeto em Inglês
Aprendendo o Alfabeto em InglêsMayara Mônica
 
Saúde e Nutrição - Fibras Alimentares
Saúde e Nutrição - Fibras AlimentaresSaúde e Nutrição - Fibras Alimentares
Saúde e Nutrição - Fibras AlimentaresMayara Mônica
 
Biofísica do Sistema Respiratório
Biofísica do Sistema RespiratórioBiofísica do Sistema Respiratório
Biofísica do Sistema RespiratórioMayara Mônica
 
Órgãos em Microchips
Órgãos em MicrochipsÓrgãos em Microchips
Órgãos em MicrochipsMayara Mônica
 
Escolas da Psicologia e Bases Biológicas do Comportamento
Escolas da Psicologia e Bases Biológicas do ComportamentoEscolas da Psicologia e Bases Biológicas do Comportamento
Escolas da Psicologia e Bases Biológicas do ComportamentoMayara Mônica
 
Bioquímica Articular, Articulações e Pele
Bioquímica Articular, Articulações e PeleBioquímica Articular, Articulações e Pele
Bioquímica Articular, Articulações e PeleMayara Mônica
 
Cartilha Educativa sobre Bioética
Cartilha Educativa sobre BioéticaCartilha Educativa sobre Bioética
Cartilha Educativa sobre BioéticaMayara Mônica
 
Estudo Sobre o Músculo Liso
Estudo Sobre o Músculo LisoEstudo Sobre o Músculo Liso
Estudo Sobre o Músculo LisoMayara Mônica
 
LZW - Compressão e Descompressão
LZW - Compressão e Descompressão LZW - Compressão e Descompressão
LZW - Compressão e Descompressão Mayara Mônica
 
Questionário Sobre Teste de Software
Questionário Sobre Teste de SoftwareQuestionário Sobre Teste de Software
Questionário Sobre Teste de SoftwareMayara Mônica
 
Questions About Software Testing
Questions About Software TestingQuestions About Software Testing
Questions About Software TestingMayara Mônica
 
Modelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário EletrônicoModelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário EletrônicoMayara Mônica
 

More from Mayara Mônica (20)

Pronouns and Verb To Be
Pronouns and Verb To BePronouns and Verb To Be
Pronouns and Verb To Be
 
Aprendendo o Alfabeto em Inglês
Aprendendo o Alfabeto em InglêsAprendendo o Alfabeto em Inglês
Aprendendo o Alfabeto em Inglês
 
Saúde e Nutrição - Fibras Alimentares
Saúde e Nutrição - Fibras AlimentaresSaúde e Nutrição - Fibras Alimentares
Saúde e Nutrição - Fibras Alimentares
 
Biofísica do Sistema Respiratório
Biofísica do Sistema RespiratórioBiofísica do Sistema Respiratório
Biofísica do Sistema Respiratório
 
Tecnologias na Saúde
Tecnologias na SaúdeTecnologias na Saúde
Tecnologias na Saúde
 
Órgãos em Microchips
Órgãos em MicrochipsÓrgãos em Microchips
Órgãos em Microchips
 
Escolas da Psicologia e Bases Biológicas do Comportamento
Escolas da Psicologia e Bases Biológicas do ComportamentoEscolas da Psicologia e Bases Biológicas do Comportamento
Escolas da Psicologia e Bases Biológicas do Comportamento
 
Psicologia na Saúde
Psicologia na SaúdePsicologia na Saúde
Psicologia na Saúde
 
Movimento Body Art
Movimento Body ArtMovimento Body Art
Movimento Body Art
 
Bioquímica Articular, Articulações e Pele
Bioquímica Articular, Articulações e PeleBioquímica Articular, Articulações e Pele
Bioquímica Articular, Articulações e Pele
 
Cartilha Educativa sobre Bioética
Cartilha Educativa sobre BioéticaCartilha Educativa sobre Bioética
Cartilha Educativa sobre Bioética
 
Estudo Sobre o Músculo Liso
Estudo Sobre o Músculo LisoEstudo Sobre o Músculo Liso
Estudo Sobre o Músculo Liso
 
Tipologia Textual
Tipologia TextualTipologia Textual
Tipologia Textual
 
Comando Traceroute
Comando TracerouteComando Traceroute
Comando Traceroute
 
LZW - Compressão e Descompressão
LZW - Compressão e Descompressão LZW - Compressão e Descompressão
LZW - Compressão e Descompressão
 
MaDKit
MaDKitMaDKit
MaDKit
 
UPPAAL
UPPAALUPPAAL
UPPAAL
 
Questionário Sobre Teste de Software
Questionário Sobre Teste de SoftwareQuestionário Sobre Teste de Software
Questionário Sobre Teste de Software
 
Questions About Software Testing
Questions About Software TestingQuestions About Software Testing
Questions About Software Testing
 
Modelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário EletrônicoModelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário Eletrônico
 

Recently uploaded

Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptNathaliaFreitas32
 
classe gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptxclasse gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptxLuciana Luciana
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxMarcosLemes28
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdfjacquescardosodias
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptxMarlene Cunhada
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeitotatianehilda
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*Viviane Moreiras
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxFlviaGomes64
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptjricardo76
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º anoRachel Facundo
 
Renascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRenascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRafaelaMartins72608
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...DirceuNascimento5
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...MariaCristinaSouzaLe1
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 

Recently uploaded (20)

Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
classe gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptxclasse gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptx
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Renascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRenascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDF
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 

Timers and Interrupts no FreeRTOS

  • 1. UNIVERSIDADE DE PERNAMBUCO Software Timers and Interrupts no FreeRTOS
  • 2. UNIVERSIDADE DE PERNAMBUCO Roteiro: • • • • • • • • • • • Software Timers Tipos de Software Timers Habilitando o Software Timers Funções da API do Software Timers Interrupções Configurando as Prioridades Mecanismo de Sincronização Semáforo Binário Semáforo Contadores Queues Bibliografia
  • 3. UNIVERSIDADE DE PERNAMBUCO Software Timers • • • • Um software timer é basicamente um timer que possibilita uma função ser executada em determinado tempo no futuro. A função executada pelo software timer é chamada de função de callback, e o tempo entre a inicialização do timer e a execução da função de callback é chamada de período do timer. Portanto, com o software timer você consegue configurar uma função de callback para ser executada quando um período de tempo expirar. Um software timer deve ser explicitamente criado antes que ele possa ser usado.
  • 4. UNIVERSIDADE DE PERNAMBUCO • • A funcionalidade de software timer do FreeRTOS não faz parte do núcleo do kernel, e foi implementada de forma a não adicionar overhead de processamento à aplicação. Basicamente, a implementação de software timer do FreeRTOS atua como uma tarefa usando os recursos providos pelo FreeRTOS. Ela é composta por um conjunto de APIs que se comunicam com a tarefa de timer através de filas.
  • 5. UNIVERSIDADE DE PERNAMBUCO Tipos de Software Timers • • One-shot: executa a função de callback apenas uma vez, pode ser reiniciado manualmente. Auto-reload: após a execução da função de callback, reinicia sua execução automaticamente. Ou seja, executa a função de callback periodicamente.
  • 6. UNIVERSIDADE DE PERNAMBUCO Habilitando o Software Timer Para habilitar esta funcionalidade, adicione o arquivo timers.c ao projeto e configure as seguintes opções no arquivo de configuração FreeRTOSConfig.h: configUSE_TIMERS: “1” para habilitar a funcionalidade de timer. • configTIMER_TASK_PRIORITY: define a prioridade da tarefa de timer. • configTIMER_QUEUE_LENGTH: define o tamanho do queue da tarefa de timer. • configTIMER_TASK_STACK_DEPTH: define o tamanho do stack da tarefa de timer. •
  • 7. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions  xTimerCreate  xTimerIsTimerActive  pvTimerGetTimerID  xTimerStart  xTimerStop  xTimerChangePeriod  xTimerDelete  xTimerReset  xTimerStartFromISR  xTimerStopFromISR  xTimerChangePeriodFromISR  xTimerResetFromISR  xTimerGetTimerDaemonTaskHandle
  • 8. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xTimerCreate Parametros : pcTimerName : Um nome que é atribuído ao Timer. xtimerPeriod : Periodo de tempo necessário. uxAutoReload : Se for definido como pdTRUE quando xtimerPeriod expira, o tempo é reiniciado. Se for definido como pdFALSE após o termino do tempo o temporizador entra no estado adormecido. pvTimerID : Identificador que é atribuído ao temporizador que está sendo criado , usado para saber qual temporizador expirou. pxCallbackFunction : A função a ser chamada quando o tempo expirar.
  • 9. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xTimerCreate Retorno : Se o Timer for criado com sucesso o identificador do Timer é retornado. Se não houver espaço na pilha para alocar as estruturas do Timer, ou o período do Timer foi definido como 0 , é retornado NULL.
  • 10. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xTimerIsTimerActive Consulta um cronômetro para ver se ele está ativo ou inativo. Timers são criados no estado inativo. Parâmetros: xtimer : O timer que está sendo consultado. Retorno: pdFALSE será retornado se o timer está inativo. Um valor diferente de pdFALSE será devolvido se o timer está ativo.
  • 11. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xtimerDelete : Parâmetros : xTimer : O Timer que está sendo excluído. xblockTime : Especifica o tempo que a tarefa deve ficar no estado bloqueado para esperar o envio do comando de exclusão para a fila de comandos de Timer. Retorno : Será retornado pdFAIL se o comando delete não pode ser enviado a fila de comandos de Timers , mesmo depois de o xBlockTime ter Acabado. Será retornado pdPASS se o comando for enviado com sucesso para a fila de comando de Timers.
  • 12. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions pvTimerGetTimerID Retorna o ID atribuído ao temporizador. Parâmetros: xTimer O temporizador sendo consultado. Retorno: O ID atribuído ao temporizador sendo consultado.
  • 13. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xTimerStartFromISR Retorno : Será retornado pdFAIL se o comando de inicio não pode ser enviado a fila de comandos de Timers. Será retornado pdPASS se o comando for enviado com sucesso para a fila de comando de Timers.
  • 14. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xTimerStopFromISR Parâmetros : xTimer : O timer a ser interrompido. pxHigherPriorityTaskWoken: Serve para, sair do estado bloqueado se a tarefa que está tendo seu comando na fila de Timer executado tiver uma prioridade menor que a interrupção, então é definido como pdTrue e há uma troca de contexto.
  • 15. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xTimerStopFromISR Retorno : Será retornado pdFAIL se o comando de parada não pode ser enviado a fila de comandos de Timers. Será retornado pdPASS se o comando for enviado com sucesso para a fila de comando de Timers
  • 16. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xTimerChangePeriodFromISR Muda o período de um Timer que foi previamente criado. Pode ser chamado para alterar o período de um Timer no estado ativo ou inativo. Parâmetros : xTimer : O Timer que está tendo seu período alterado. xnewPeriod : O novo prazo para a xTimer.
  • 17. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions Software Timer API Functions xTimerChangePeriodFromISR Parâmetros : pxHigherPriorityTaskWoken : Serve para , sair do estado bloqueado se a tarefa que está tendo seu comando da fila de Timer executado tiver uma prioridade menor que a interrupção, então, é definido como pdTrue e há uma troca de contexto
  • 18. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xTimerChangePeriodFromISR Retorno : Será retornado pdFAIL se o comando de mudança de tempo não pode ser enviado a fila de comandos de Timers. Será retornado pdPASS se o comando for enviado com sucesso para a fila de comando de Timers.
  • 19. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xtimerResetFromISR : Parâmetros: xTimer : O Timer iniciado / reiniciado. pxHigherPriorityTaskWoken : Serve para , sair do estado bloqueado se a tarefa que está tendo seu comando da fila de Timer executado tiver uma prioridade menor que a interrupção, então, é definido como pdTrue e há uma troca de contexto .
  • 20. UNIVERSIDADE DE PERNAMBUCO Software Timer API Functions xtimerResetFromISR Retorno : Será retornado pdFAIL se o comando reinicio não pode ser enviado a fila de comandos de Timers. Será retornado pdPASS se o comando for enviado com sucesso para a fila de comando de Timers
  • 21. UNIVERSIDADE DE PERNAMBUCO Interrupções Sistemas embarcados precisam tomar ações baseados em eventos externos. Normalmente os eventos são tratados através de interrupções, dentro da rotina de tratamento de interrupção (ISR).
  • 22. UNIVERSIDADE DE PERNAMBUCO O FreeRTOS usa 3 fontes de interrupção no porte para o ARM CortexM3/M4: • SysTick (System Tick Timer): É uma interrupção periódica usada pelo kernel para forçar a troca de contexto, setando o registrador PENDSV do NVIC, e consequentemente habilitando a exceção PendSV. • PendSV (Pended System Call): Esta exceção fica pendente e é executada assim que outras exceções com maior prioridade forem tratadas. É ela que faz a troca de contexto. • SVCall (System Service Call): É uma interrupção de software que pode ser usada para gerar chamadas de sistema. É usada pelo kernel basicamente para executar a primeira tarefa da aplicação.
  • 23. UNIVERSIDADE DE PERNAMBUCO Configurando as Prioridades Existem duas opções no arquivo de configuração do FreeRTOS para configurar as prioridades das interrupções usadas pelo kernel: • configKERNEL_INTERRUPT_PRIORITY: configura a prioridade das interrupções usadas pelo kernel (SysTick e PendSV). É normalmente configurada com a menor prioridade possível. • configMAX_SYSCALL_INTERRUPT_PRIORITY: define a interrupção de maior prioridade que pode usar a API do FreeRTOS. Isso porque, ao executar uma seção crítica, o kernel desabilita todas as interrupções de prioridade menor ou igual à definida por esta constante. Isso significa que o FreeRTOS nunca desabilita todas as interrupções por completo, mesmo dentro de seções críticas!
  • 24. UNIVERSIDADE DE PERNAMBUCO • Como todas as interrupções tem prioridade máxima (valor 0) por padrão no boot, as rotinas de tratamento de interrupção que usam serviços do FreeRTOS precisam ser inicializadas com um valor maior ou igual que configMAX_SYSCALL_INTERRUPT_PRIORITY; • Rotinas de interrupção extremamente críticas podem ter uma prioridade maior, implicando um valor menor que configMAX_SYSCALL_INTERRUPT_PRIORITY, mas não podem usar nenhuma função da API do FreeRTOS.
  • 25. UNIVERSIDADE DE PERNAMBUCO Mecanismo de Sincronização • Uma interrupção é capaz de deferir trabalho para uma tarefa através de mecanismos de sincronização. • O FreeRTOS sincronização: possui os seguintes mecanismos de • Semáforos Binários (Binary Semaphores) • Semáforos Contadores (Counting Semaphores) • Queues • Estes mecanismos de sincronização podem ser usados tanto para comunicação entre tarefas quanto para comunicação entre interrupções e tarefas.
  • 26. UNIVERSIDADE DE PERNAMBUCO Semáforo Binário • Um Semáforo Binário (Binary Semaphore) é um mecanismo de sincronização disponibilizado pelo FreeRTOS. • Ele pode ser usado para acordar (desbloquear) uma tarefa quando determinada interrupção acontecer, sincronizando a interrupção com a tarefa. • Desta forma, apenas o essencial é executado na interrupção, o restante do trabalho é deferido para a tarefa correspondente ao tratamento da interrupção.
  • 27. UNIVERSIDADE DE PERNAMBUCO Semáforo Contadores • Semáforos binários são úteis quando a frequência de interrupções é baixa. Mas quando a frequência de interrupções é alta, existe a possibilidade de perdermos interrupções. • O problema acontece quando mais de uma interrupção acontece no momento em que a tarefa ainda esta tratando o trabalho deferido pela interrupção anterior. • Para estes casos, podemos usar os semáforos contadores (counting semaphores) no lugar dos semáforos binários. Podemos usar os semáforos contadores para: • Tratar eventos. • Gerenciar o acesso à recursos.
  • 28. UNIVERSIDADE DE PERNAMBUCO Queues • Semáforos são usados para comunicar eventos entre tarefas, ou entre uma tarefa e uma interrupção. • Queues são usadas para comunicar eventos e transferir dados. • Portanto, você pode usar queues para transferir dados e deferir trabalho de uma interrupção para uma tarefa do RTOS. • Para trabalhar com queues em interrupções, use as funções que terminam com “FromISR”. • A queue usada para esta finalidade é chamada de Timer Command Queue (fila de comando do timer), sua implementação é privada para o FreeRTOS e não pode ser acessada ​ diretamente.
  • 29. UNIVERSIDADE DE PERNAMBUCO • Você pode usar algumas técnicas para transferir dados de uma interrupção para uma tarefa: • Se a taxa de transferência for baixa, você pode simplesmente transferir byte a byte usando um queue. • Se a taxa de transferência for alta, você pode salvar os dados transferidos em um buffer, e quando receber uma mensagem completa, notificar a tarefa com um semáforo ou enviar a mensagem com um queue. • Você pode também decodificar mensagens direto da ISR, e passar os dados já interpretados via queue para a tarefa. Este técnica só é válida se a decodificação dos dados forem rápidas o suficiente para serem executadas de dentro da ISR.
  • 30. UNIVERSIDADE DE PERNAMBUCO Bibliografia [1] PRADO, S. Desenvolvendo com o FreeRTOS. São Paulo, julho 2012. [2] FREERTOS. A Real Time Engineers. Disponível <http://www.freertos.org/ >. Acesso em: 28 set 2013. em:

Editor's Notes

  1. {"24":"Mas quanto do trabalho deve ser realizado dentro da ISR? E como uma ISR deve se comunicar com as outras tarefas da aplicação para gerar os eventos correspondentes e/ou processar os dados recebidos?\n","9":"Todos estão na biblioteca timers.h\n- xTimerHandle xTimerCreate ( const signed char *pcTimerName, portTickType xTimerPeriod, unsigned portBASE_TYPE uxAutoReload, void * pvTimerID, tmrTIMER_CALLBACK pxCallbackFunction ); http://www.freertos.org/FreeRTOS-timers-xTimerCreate.html\nportBASE_TYPE xTimerIsTimerActive( xTimerHandle xTimer ); http://www.freertos.org/FreeRTOS-timers-xTimerIsTimerActive.html\nvoid *pvTimerGetTimerID( xTimerHandle xTimer ); http://www.freertos.org/FreeRTOS-timers-pvTimerGetTimerID.html\nportBASE_TYPE xTimerStart( xTimerHandle xTimer, portTickType xBlockTime ); http://www.freertos.org/FreeRTOS-timers-xTimerStart.html\nportBASE_TYPE xTimerStop( xTimerHandle xTimer, portTickType xBlockTime ); http://www.freertos.org/FreeRTOS-timers-xTimerStop.html\nportBASE_TYPE xTimerChangePeriod( xTimerHandle xTimer, portTickType xNewPeriod, portTickType xBlockTime ); http://www.freertos.org/FreeRTOS-timers-xTimerChangePeriod.html\nportBASE_TYPE xTimerChangePeriod( xTimerHandle xTimer, portTickType xNewPeriod, portTickType xBlockTime );\nportBASE_TYPE xTimerDelete( xTimerHandle xTimer, portTickType xBlockTime ); http://www.freertos.org/FreeRTOS-timers-xTimerDelete.html\nportBASE_TYPE xTimerReset( xTimerHandle xTimer, portTickType xBlockTime ); http://www.freertos.org/FreeRTOS-timers-xTimerReset.html\nportBASE_TYPE xTimerStartFromISR ( xTimerHandle xTimer, portBASE_TYPE *pxHigherPriorityTaskWoken ); http://www.freertos.org/FreeRTOS-timers-xTimerStartFromISR.html\nportBASE_TYPE xTimerStopFromISR ( xTimerHandle xTimer, portBASE_TYPE *pxHigherPriorityTaskWoken ); http://www.freertos.org/FreeRTOS-timers-xTimerStopFromISR.html\nportBASE_TYPE xTimerChangePeriodFromISR ( xTimerHandle xTimer, portTickType xNewPeriod, portBASE_TYPE *pxHigherPriorityTaskWoken ); http://www.freertos.org/FreeRTOS-timers-xTimerChangePeriodFromISR.html\nportBASE_TYPE xTimerResetFromISR ( xTimerHandle xTimer, portBASE_TYPE *pxHigherPriorityTaskWoken ); http://www.freertos.org/FreeRTOS-timers-xTimerResetFromISR.html\nxTaskHandle xTimerGetTimerDaemonTaskHandle( void ); http://www.freertos.org/FreeRTOS-Software-Timer-API-Functions.html\n"}