• Home
  • Chat IA
  • Recursos
  • Guru IA
  • Professores
Home
Recursos
Chat IA
Professores

·

Engenharia da Computação ·

Sinais e Sistemas

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Prova Sinais e Sistemas UFPE - Transformada Z, Fourier, Amostragem e Sistemas LTID

1

Prova Sinais e Sistemas UFPE - Transformada Z, Fourier, Amostragem e Sistemas LTID

Sinais e Sistemas

UFPE

Combinação Linear de Sinais Harmônicos e Representação por Série de Fourier

12

Combinação Linear de Sinais Harmônicos e Representação por Série de Fourier

Sinais e Sistemas

IFPB

Lista de Exercícios Resolvidos - Equações de Diferenças e Transformada Z

1

Lista de Exercícios Resolvidos - Equações de Diferenças e Transformada Z

Sinais e Sistemas

MULTIVIX

Cálculo de Exercícios sobre Sinais e Sistemas

21

Cálculo de Exercícios sobre Sinais e Sistemas

Sinais e Sistemas

UFOP

Sinais e Sistemas - Atividade de Avaliacao 2 - IFPB

4

Sinais e Sistemas - Atividade de Avaliacao 2 - IFPB

Sinais e Sistemas

IFPB

Atividade Avaliativa 2 Sinais e Sistemas IFPB - Convolução e Série de Fourier

8

Atividade Avaliativa 2 Sinais e Sistemas IFPB - Convolução e Série de Fourier

Sinais e Sistemas

IFPB

Prova de Sinais e Sistemas UFPE - Engenharia da Computacao - 2024

1

Prova de Sinais e Sistemas UFPE - Engenharia da Computacao - 2024

Sinais e Sistemas

UFPE

Sinais e Sistemas - 2ª Edição

592

Sinais e Sistemas - 2ª Edição

Sinais e Sistemas

UFPB

Prova de Sinais e Sistemas

20

Prova de Sinais e Sistemas

Sinais e Sistemas

UFPA

Lista de Exercícios Resolvidos - Transformada Z, Sistemas Discretos e Teorema da Amostragem

17

Lista de Exercícios Resolvidos - Transformada Z, Sistemas Discretos e Teorema da Amostragem

Sinais e Sistemas

UNIFEI

Texto de pré-visualização

Experimento 2 Criando e Aplicando o Conceito de Tarefas com FreeRTOS Valor 2 pontos de 10 Problema Considere um sistema de controle de distância de um robô em que além de verificação de distância em suas 4 laterais é necessário controle de velocidade das 4 rodas Para a verificação de obstáculos são utilizados 4 sensores ultrassônicos e para movimentação 4 motores cc Assim são consideradas as seguintes regras 1 A lei de controle que delimita a tensão de atuação via PWM dos motores deve incrementar e decrementar o dutycicle exponencialmente a medida que o sensor indica um afastamento ou aproximação respectivamente 2 A verificação de distância de cada sensor é considerada uma tarefa bibliotecas são permitidas 3 A tarefa de controle dos 4 motores é única Obs O Aluno deve definir a periodicidade de cada tarefa de acordo com a necessidade do problema Objetivo Desenvolver um sistema escalonado em executivo cíclico através de chamadas de função Dispositivos necessários Simulado ou Experimental Computador Simulador SimulIDE httpssimulidecomp FreeRTOS A FreeRTOS utiliza um sistema de contagem de tempo chamado de TickTimer como exemplo o ATMega usa 3 timers O WDT tambem pode ser utilizado para gerar tickTimer principalmente quando há um overhead de tarefa Ao se criar tarefas é possível indicar prioridades a elas Cada tarefa utiliza uma determinada quantidade de Ticks e o FreeRTOs os escalona conforme prioridade e disponibilidade da tarefa Caso uma tarefa não termine de executar em um Tick esta é interrompida e retorna para fila de apitos dando espaço para uma outra tarefa O primeiro passo para o uso da FreeRTOS é a instalação e posteriormente a inclusão da biblioteca ao projeto Agora podemos criar a tarefa conjunto de código a ser executado por exemplo fazer um LED ligar e desligar indefinidamente Para o FreeRTOS a tarefa nunca retorna nada logo são do tipo void e como passagem de parâmetro a entrada de um ponteiro obrigatoriamente do tipo void Esta é a construção obrigatória de uma tarefa Definida a tarefa esta deve ser instanciada dentro da função setup conforme segue A xTaskCreate deve receber 6 parâmetros divididos em conforme descrição 1 Tarefa a ser executada 2 Texto que serve apenas para se interpretar a função dessa tarefa 3 Tamanho da pilha que esta tarefa poderá utilizar para executar suas funções Stack size 4 Ponteiro com um parâmetro que se deseja passar à tarefa 5 Nível de prioridade 6 Ponteiro para uma outra tarefa que trabalha esta tarefa No caso apresentado a tarefa será executada até o estouro do tick será interrompida e verificado se há outra tarefa a ser executada Como não há o kernel retomara a tarefa Blink Outra função importante é a vTaskStartScheduller Ela inicia o agendador de tarefas do kernel pegando todas as tarefas criadas pela xTaskCreate e as organizando Esta função já está embutida na execução sem a necessidade de indicála no código Como contagem de tempo aconselhase o uso das ferramentas da própria biblioteca Como exemplo uma espera de tempo de 1 segundo Em uma programação concorrente temos mais de uma tarefa Estas irão concorrer sempre que a prioridade for igual Atividade Tarefa 1 Defina as características de tempo real de cada tarefa realizando testes de tempo de computação de cada tarefa utilizando a Biblioteca FreeRTOS Tarefa 2 Esquematize a execução através de um diagrama de fluxo temporal em um sistema de ciclo único maior e com um sistema de ciclos menor Utilize a habilitação e desabilitação de tarefas da biblioteca Lembre de avaliar a viabilidade de cada esquema Tarefa 3 Avalie o desempenho de execução em uma lógica de livre demanda do processador ou seja utilize as tarefas sem forçar sua habilitação ou desabilitação Tarefa 4 Desenvolva o relatório do experimento Da Avaliação do relatório Devem ser apresentados os códigos com resultados simulados Os ajustes de tempo devem estar bem descritos Os questionamentos devem ser bem respondidos e destalhados Da Avaliação do relatório Devem ser apresentados os códigos com resultados simulados Os ajustes de tempo devem estar bem descritos Os questionamentos devem ser bem respondidos e destalhados Experimento 2 Criando e Aplicando o Conceito de Tarefas com FreeRTOS Objetivo criar um sistema de controle para um robô que precisa monitorar a distância de obstáculos em 4 direções usando sensores ultrassônicos e controlar a velocidade de 4 motores DC com implementação completa com FreeRTOS Análise das Tarefas Sensores 4 tarefas separadas uma para cada sensor que leem os valores de distância Motores 1 tarefa única que controla a velocidade dos 4 motores com base nos dados dos sensores Prioridades As prioridades das tarefas devem ser ajustadas para garantir que o robô reaja adequadamente aos obstáculos Tarefa 1 Definição das Características de Tempo Real e Teste de Tempo de Computação 1 Descrição Tarefa dos Sensores Cada tarefa de sensor irá 1 Acionar o sensor ultrassônico 2 Ler o tempo de eco tempo que o pulso ultrassônico leva para ir e voltar 3 Converter o tempo em distância geralmente usando uma fórmula empírica 4 Armazenar o valor da distância para a tarefa de controle de motores utilizar Tarefa dos Motores 1 Ler os valores de distância de todos os sensores 2 Calcular a velocidade e direção de cada motor 3 Enviar os sinais de PWM para os motores Tempo de Computação É importante entender quanto tempo cada tarefa leva para executar Isso ajudará a definir as prioridades e os períodos de cada tarefa 2 Código em C include ArduinoFreeRTOSh Definições ajuste conforme seu hardware define TRIGGERPIN1 2 define ECHOPIN1 3 define TRIGGERPIN2 4 define ECHOPIN2 5 define TRIGGERPIN3 6 define ECHOPIN3 7 define TRIGGERPIN4 8 define ECHOPIN4 9 define MOTOR1PIN 10 define MOTOR2PIN 11 define MOTOR3PIN 12 define MOTOR4PIN 13 define VELOCIDADEMAX 255 Variáveis Globais para distâncias e controle volatile float distanceSensor1 volatile float distanceSensor2 volatile float distanceSensor3 volatile float distanceSensor4 volatile int motorSpeed1 volatile int motorSpeed2 volatile int motorSpeed3 volatile int motorSpeed4 Função para medir a distância com o sensor ultrassônico float measureDistanceint triggerPin int echoPin long duration float distance digitalWritetriggerPin LOW delayMicroseconds2 digitalWritetriggerPin HIGH delayMicroseconds10 digitalWritetriggerPin LOW duration pulseInechoPin HIGH distance duration 20 00343 Distância em cm return distance Tarefa do sensor 1 void sensorTask1void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor1 measureDistanceTRIGGERPIN1 ECHOPIN1 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 2 void sensorTask2void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor2 measureDistanceTRIGGERPIN2 ECHOPIN2 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 3 void sensorTask3void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor3 measureDistanceTRIGGERPIN3 ECHOPIN3 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 4 void sensorTask4void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor4 measureDistanceTRIGGERPIN4 ECHOPIN4 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa de controle dos motores void motorTaskvoid pvParameters TickTypet xLastWakeTime xTaskGetTickCount for Lógica de controle baseada nas distâncias motorSpeed1 distanceSensor1 50 VELOCIDADEMAX2 distanceSensor120 VELOCIDADEMAX2 0 motorSpeed2 distanceSensor2 50 VELOCIDADEMAX2 distanceSensor220 VELOCIDADEMAX2 0 motorSpeed3 distanceSensor3 50 VELOCIDADEMAX2 distanceSensor320 VELOCIDADEMAX2 0 motorSpeed4 distanceSensor4 50 VELOCIDADEMAX2 distanceSensor420 VELOCIDADEMAX2 0 Aplica as velocidades aos motores usando PWM analogWriteMOTOR1PIN absmotorSpeed1 analogWriteMOTOR2PIN absmotorSpeed2 analogWriteMOTOR3PIN absmotorSpeed3 analogWriteMOTOR4PIN absmotorSpeed4 Delay para a próxima iteração vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Ajustar período void setup Configuração dos pinos dos sensores e motores pinModeTRIGGERPIN1 OUTPUT pinModeECHOPIN1 INPUT pinModeTRIGGERPIN2 OUTPUT pinModeECHOPIN2 INPUT pinModeTRIGGERPIN3 OUTPUT pinModeECHOPIN3 INPUT pinModeTRIGGERPIN4 OUTPUT pinModeECHOPIN4 INPUT pinModeMOTOR1PINOUTPUT pinModeMOTOR2PINOUTPUT pinModeMOTOR3PINOUTPUT pinModeMOTOR4PINOUTPUT Criação das tasks xTaskCreatesensorTask1 Sensor1 128 NULL 1 NULL xTaskCreatesensorTask2 Sensor2 128 NULL 1 NULL xTaskCreatesensorTask3 Sensor3 128 NULL 1 NULL xTaskCreatesensorTask4 Sensor4 128 NULL 1 NULL xTaskCreatemotorTask Motores 256 NULL 2 NULL Inicia o escalonador já está embutido na ArduinoFreeRTOS void loop Não é preciso de nada aqui pois o FreeRTOS gerencia tudo Tarefa 2 Diagrama de Fluxo Temporal e HabilitaçãoDesabilitação de Tarefas 1 Análise Ciclo Único Maior Uma tarefa principal que coordena todo o sistema Essa tarefa pode 1 Habilitar as tarefas dos sensores 2 Esperar um período curto 3 Habilitar a tarefa dos motores 4 Desabilitar as tarefas dos sensores e motores 5 Repetir o ciclo Ciclo Menor As tarefas dos sensores executam em um ciclo menor mais frequente do que a tarefa de motores Isso garante que os dados dos sensores sejam atualizados frequentemente e a tarefa dos motores possa reagir rapidamente 2 Diagrama de Blocos 3 HabilitaçãoDesabilitação de Tarefas Utilizamse as funções vTaskSuspend e vTaskResume para desabilitar e habilitar as tarefas respectivamente É preciso armazenar a handle da tarefa no momento da criação Tarefa 3 Avaliação do Desempenho em Lógica de Livre Demanda 1 Descrição Técnica Lógica de Livre Demanda Nesse cenário as tarefas são executadas sempre que estão prontas para rodar e o escalonador do FreeRTOS as escolher Isso significa que não há um controle forçado sobre quando as tarefas devem ser executadas Avaliação o Prioridades Ajustamse as prioridades das tarefas para garantir que a tarefa dos motores tenha uma prioridade um pouco maior que as dos sensores garantindo que as ações dos motores sejam executadas após as leituras o Tempos Analisase como as tarefas interagem A tarefa de motores deve sempre obter as leituras mais recentes dos sensores o Overhead Avaliase o overhead do FreeRTOS e a latência das tarefas o tempo que leva para cada tarefa rodar Isso pode ser avaliado através da medição do tempo que cada tarefa leva para rodar ou usando ferramentas do FreeRTOS para análise de tempo Vantagens A lógica de livre demanda é geralmente mais flexível e fácil de implementar Desvantagens Em sistemas com muitos processos é preciso garantir que não haverá condições de starvation ou seja tarefas com baixa prioridade acabarem não executando Experimento 2 Criando e Aplicando o Conceito de Tarefas com FreeRTOS Objetivo criar um sistema de controle para um robô que precisa monitorar a distância de obstáculos em 4 direções usando sensores ultrassônicos e controlar a velocidade de 4 motores DC com implementação completa com FreeRTOS Análise das Tarefas Sensores 4 tarefas separadas uma para cada sensor que leem os valores de distância Motores 1 tarefa única que controla a velocidade dos 4 motores com base nos dados dos sensores Prioridades As prioridades das tarefas devem ser ajustadas para garantir que o robô reaja adequadamente aos obstáculos Tarefa 1 Definição das Características de Tempo Real e Teste de Tempo de Computação 1 Descrição Tarefa dos Sensores Cada tarefa de sensor irá 1 Acionar o sensor ultrassônico 2 Ler o tempo de eco tempo que o pulso ultrassônico leva para ir e voltar 3 Converter o tempo em distância geralmente usando uma fórmula empírica 4 Armazenar o valor da distância para a tarefa de controle de motores utilizar Tarefa dos Motores 1 Ler os valores de distância de todos os sensores 2 Calcular a velocidade e direção de cada motor 3 Enviar os sinais de PWM para os motores Tempo de Computação É importante entender quanto tempo cada tarefa leva para executar Isso ajudará a definir as prioridades e os períodos de cada tarefa 2 Código em C include ArduinoFreeRTOSh Definições ajuste conforme seu hardware define TRIGGERPIN1 2 define ECHOPIN1 3 define TRIGGERPIN2 4 define ECHOPIN2 5 define TRIGGERPIN3 6 define ECHOPIN3 7 define TRIGGERPIN4 8 define ECHOPIN4 9 define MOTOR1PIN 10 define MOTOR2PIN 11 define MOTOR3PIN 12 define MOTOR4PIN 13 define VELOCIDADEMAX 255 Variáveis Globais para distâncias e controle volatile float distanceSensor1 volatile float distanceSensor2 volatile float distanceSensor3 volatile float distanceSensor4 volatile int motorSpeed1 volatile int motorSpeed2 volatile int motorSpeed3 volatile int motorSpeed4 Função para medir a distância com o sensor ultrassônico float measureDistanceint triggerPin int echoPin long duration float distance digitalWritetriggerPin LOW delayMicroseconds2 digitalWritetriggerPin HIGH delayMicroseconds10 digitalWritetriggerPin LOW duration pulseInechoPin HIGH distance duration 20 00343 Distância em cm return distance Tarefa do sensor 1 void sensorTask1void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor1 measureDistanceTRIGGERPIN1 ECHOPIN1 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 2 void sensorTask2void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor2 measureDistanceTRIGGERPIN2 ECHOPIN2 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 3 void sensorTask3void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor3 measureDistanceTRIGGERPIN3 ECHOPIN3 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 4 void sensorTask4void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor4 measureDistanceTRIGGERPIN4 ECHOPIN4 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa de controle dos motores void motorTaskvoid pvParameters TickTypet xLastWakeTime xTaskGetTickCount for Lógica de controle baseada nas distâncias motorSpeed1 distanceSensor1 50 VELOCIDADEMAX2 distanceSensor120 VELOCIDADEMAX2 0 motorSpeed2 distanceSensor2 50 VELOCIDADEMAX2 distanceSensor220 VELOCIDADEMAX2 0 motorSpeed3 distanceSensor3 50 VELOCIDADEMAX2 distanceSensor320 VELOCIDADEMAX2 0 motorSpeed4 distanceSensor4 50 VELOCIDADEMAX2 distanceSensor420 VELOCIDADEMAX2 0 Aplica as velocidades aos motores usando PWM analogWriteMOTOR1PIN absmotorSpeed1 analogWriteMOTOR2PIN absmotorSpeed2 analogWriteMOTOR3PIN absmotorSpeed3 analogWriteMOTOR4PIN absmotorSpeed4 Delay para a próxima iteração vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Ajustar período void setup Configuração dos pinos dos sensores e motores pinModeTRIGGERPIN1 OUTPUT pinModeECHOPIN1 INPUT pinModeTRIGGERPIN2 OUTPUT pinModeECHOPIN2 INPUT pinModeTRIGGERPIN3 OUTPUT pinModeECHOPIN3 INPUT pinModeTRIGGERPIN4 OUTPUT pinModeECHOPIN4 INPUT pinModeMOTOR1PINOUTPUT pinModeMOTOR2PINOUTPUT pinModeMOTOR3PINOUTPUT pinModeMOTOR4PINOUTPUT Criação das tasks xTaskCreatesensorTask1 Sensor1 128 NULL 1 NULL xTaskCreatesensorTask2 Sensor2 128 NULL 1 NULL xTaskCreatesensorTask3 Sensor3 128 NULL 1 NULL xTaskCreatesensorTask4 Sensor4 128 NULL 1 NULL xTaskCreatemotorTask Motores 256 NULL 2 NULL Inicia o escalonador já está embutido na ArduinoFreeRTOS void loop Não é preciso de nada aqui pois o FreeRTOS gerencia tudo Tarefa 2 Diagrama de Fluxo Temporal e HabilitaçãoDesabilitação de Tarefas 1 Análise Ciclo Único Maior Uma tarefa principal que coordena todo o sistema Essa tarefa pode 1 Habilitar as tarefas dos sensores 2 Esperar um período curto 3 Habilitar a tarefa dos motores 4 Desabilitar as tarefas dos sensores e motores 5 Repetir o ciclo Ciclo Menor As tarefas dos sensores executam em um ciclo menor mais frequente do que a tarefa de motores Isso garante que os dados dos sensores sejam atualizados frequentemente e a tarefa dos motores possa reagir rapidamente 2 Diagrama de Blocos 3 HabilitaçãoDesabilitação de Tarefas Utilizamse as funções vTaskSuspend e vTaskResume para desabilitar e habilitar as tarefas respectivamente É preciso armazenar a handle da tarefa no momento da criação Tarefa 3 Avaliação do Desempenho em Lógica de Livre Demanda 1 Descrição Técnica Lógica de Livre Demanda Nesse cenário as tarefas são executadas sempre que estão prontas para rodar e o escalonador do FreeRTOS as escolher Isso significa que não há um controle forçado sobre quando as tarefas devem ser executadas Avaliação o Prioridades Ajustamse as prioridades das tarefas para garantir que a tarefa dos motores tenha uma prioridade um pouco maior que as dos sensores garantindo que as ações dos motores sejam executadas após as leituras o Tempos Analisase como as tarefas interagem A tarefa de motores deve sempre obter as leituras mais recentes dos sensores o Overhead Avaliase o overhead do FreeRTOS e a latência das tarefas o tempo que leva para cada tarefa rodar Isso pode ser avaliado através da medição do tempo que cada tarefa leva para rodar ou usando ferramentas do FreeRTOS para análise de tempo Vantagens A lógica de livre demanda é geralmente mais flexível e fácil de implementar Desvantagens Em sistemas com muitos processos é preciso garantir que não haverá condições de starvation ou seja tarefas com baixa prioridade acabarem não executando

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Prova Sinais e Sistemas UFPE - Transformada Z, Fourier, Amostragem e Sistemas LTID

1

Prova Sinais e Sistemas UFPE - Transformada Z, Fourier, Amostragem e Sistemas LTID

Sinais e Sistemas

UFPE

Combinação Linear de Sinais Harmônicos e Representação por Série de Fourier

12

Combinação Linear de Sinais Harmônicos e Representação por Série de Fourier

Sinais e Sistemas

IFPB

Lista de Exercícios Resolvidos - Equações de Diferenças e Transformada Z

1

Lista de Exercícios Resolvidos - Equações de Diferenças e Transformada Z

Sinais e Sistemas

MULTIVIX

Cálculo de Exercícios sobre Sinais e Sistemas

21

Cálculo de Exercícios sobre Sinais e Sistemas

Sinais e Sistemas

UFOP

Sinais e Sistemas - Atividade de Avaliacao 2 - IFPB

4

Sinais e Sistemas - Atividade de Avaliacao 2 - IFPB

Sinais e Sistemas

IFPB

Atividade Avaliativa 2 Sinais e Sistemas IFPB - Convolução e Série de Fourier

8

Atividade Avaliativa 2 Sinais e Sistemas IFPB - Convolução e Série de Fourier

Sinais e Sistemas

IFPB

Prova de Sinais e Sistemas UFPE - Engenharia da Computacao - 2024

1

Prova de Sinais e Sistemas UFPE - Engenharia da Computacao - 2024

Sinais e Sistemas

UFPE

Sinais e Sistemas - 2ª Edição

592

Sinais e Sistemas - 2ª Edição

Sinais e Sistemas

UFPB

Prova de Sinais e Sistemas

20

Prova de Sinais e Sistemas

Sinais e Sistemas

UFPA

Lista de Exercícios Resolvidos - Transformada Z, Sistemas Discretos e Teorema da Amostragem

17

Lista de Exercícios Resolvidos - Transformada Z, Sistemas Discretos e Teorema da Amostragem

Sinais e Sistemas

UNIFEI

Texto de pré-visualização

Experimento 2 Criando e Aplicando o Conceito de Tarefas com FreeRTOS Valor 2 pontos de 10 Problema Considere um sistema de controle de distância de um robô em que além de verificação de distância em suas 4 laterais é necessário controle de velocidade das 4 rodas Para a verificação de obstáculos são utilizados 4 sensores ultrassônicos e para movimentação 4 motores cc Assim são consideradas as seguintes regras 1 A lei de controle que delimita a tensão de atuação via PWM dos motores deve incrementar e decrementar o dutycicle exponencialmente a medida que o sensor indica um afastamento ou aproximação respectivamente 2 A verificação de distância de cada sensor é considerada uma tarefa bibliotecas são permitidas 3 A tarefa de controle dos 4 motores é única Obs O Aluno deve definir a periodicidade de cada tarefa de acordo com a necessidade do problema Objetivo Desenvolver um sistema escalonado em executivo cíclico através de chamadas de função Dispositivos necessários Simulado ou Experimental Computador Simulador SimulIDE httpssimulidecomp FreeRTOS A FreeRTOS utiliza um sistema de contagem de tempo chamado de TickTimer como exemplo o ATMega usa 3 timers O WDT tambem pode ser utilizado para gerar tickTimer principalmente quando há um overhead de tarefa Ao se criar tarefas é possível indicar prioridades a elas Cada tarefa utiliza uma determinada quantidade de Ticks e o FreeRTOs os escalona conforme prioridade e disponibilidade da tarefa Caso uma tarefa não termine de executar em um Tick esta é interrompida e retorna para fila de apitos dando espaço para uma outra tarefa O primeiro passo para o uso da FreeRTOS é a instalação e posteriormente a inclusão da biblioteca ao projeto Agora podemos criar a tarefa conjunto de código a ser executado por exemplo fazer um LED ligar e desligar indefinidamente Para o FreeRTOS a tarefa nunca retorna nada logo são do tipo void e como passagem de parâmetro a entrada de um ponteiro obrigatoriamente do tipo void Esta é a construção obrigatória de uma tarefa Definida a tarefa esta deve ser instanciada dentro da função setup conforme segue A xTaskCreate deve receber 6 parâmetros divididos em conforme descrição 1 Tarefa a ser executada 2 Texto que serve apenas para se interpretar a função dessa tarefa 3 Tamanho da pilha que esta tarefa poderá utilizar para executar suas funções Stack size 4 Ponteiro com um parâmetro que se deseja passar à tarefa 5 Nível de prioridade 6 Ponteiro para uma outra tarefa que trabalha esta tarefa No caso apresentado a tarefa será executada até o estouro do tick será interrompida e verificado se há outra tarefa a ser executada Como não há o kernel retomara a tarefa Blink Outra função importante é a vTaskStartScheduller Ela inicia o agendador de tarefas do kernel pegando todas as tarefas criadas pela xTaskCreate e as organizando Esta função já está embutida na execução sem a necessidade de indicála no código Como contagem de tempo aconselhase o uso das ferramentas da própria biblioteca Como exemplo uma espera de tempo de 1 segundo Em uma programação concorrente temos mais de uma tarefa Estas irão concorrer sempre que a prioridade for igual Atividade Tarefa 1 Defina as características de tempo real de cada tarefa realizando testes de tempo de computação de cada tarefa utilizando a Biblioteca FreeRTOS Tarefa 2 Esquematize a execução através de um diagrama de fluxo temporal em um sistema de ciclo único maior e com um sistema de ciclos menor Utilize a habilitação e desabilitação de tarefas da biblioteca Lembre de avaliar a viabilidade de cada esquema Tarefa 3 Avalie o desempenho de execução em uma lógica de livre demanda do processador ou seja utilize as tarefas sem forçar sua habilitação ou desabilitação Tarefa 4 Desenvolva o relatório do experimento Da Avaliação do relatório Devem ser apresentados os códigos com resultados simulados Os ajustes de tempo devem estar bem descritos Os questionamentos devem ser bem respondidos e destalhados Da Avaliação do relatório Devem ser apresentados os códigos com resultados simulados Os ajustes de tempo devem estar bem descritos Os questionamentos devem ser bem respondidos e destalhados Experimento 2 Criando e Aplicando o Conceito de Tarefas com FreeRTOS Objetivo criar um sistema de controle para um robô que precisa monitorar a distância de obstáculos em 4 direções usando sensores ultrassônicos e controlar a velocidade de 4 motores DC com implementação completa com FreeRTOS Análise das Tarefas Sensores 4 tarefas separadas uma para cada sensor que leem os valores de distância Motores 1 tarefa única que controla a velocidade dos 4 motores com base nos dados dos sensores Prioridades As prioridades das tarefas devem ser ajustadas para garantir que o robô reaja adequadamente aos obstáculos Tarefa 1 Definição das Características de Tempo Real e Teste de Tempo de Computação 1 Descrição Tarefa dos Sensores Cada tarefa de sensor irá 1 Acionar o sensor ultrassônico 2 Ler o tempo de eco tempo que o pulso ultrassônico leva para ir e voltar 3 Converter o tempo em distância geralmente usando uma fórmula empírica 4 Armazenar o valor da distância para a tarefa de controle de motores utilizar Tarefa dos Motores 1 Ler os valores de distância de todos os sensores 2 Calcular a velocidade e direção de cada motor 3 Enviar os sinais de PWM para os motores Tempo de Computação É importante entender quanto tempo cada tarefa leva para executar Isso ajudará a definir as prioridades e os períodos de cada tarefa 2 Código em C include ArduinoFreeRTOSh Definições ajuste conforme seu hardware define TRIGGERPIN1 2 define ECHOPIN1 3 define TRIGGERPIN2 4 define ECHOPIN2 5 define TRIGGERPIN3 6 define ECHOPIN3 7 define TRIGGERPIN4 8 define ECHOPIN4 9 define MOTOR1PIN 10 define MOTOR2PIN 11 define MOTOR3PIN 12 define MOTOR4PIN 13 define VELOCIDADEMAX 255 Variáveis Globais para distâncias e controle volatile float distanceSensor1 volatile float distanceSensor2 volatile float distanceSensor3 volatile float distanceSensor4 volatile int motorSpeed1 volatile int motorSpeed2 volatile int motorSpeed3 volatile int motorSpeed4 Função para medir a distância com o sensor ultrassônico float measureDistanceint triggerPin int echoPin long duration float distance digitalWritetriggerPin LOW delayMicroseconds2 digitalWritetriggerPin HIGH delayMicroseconds10 digitalWritetriggerPin LOW duration pulseInechoPin HIGH distance duration 20 00343 Distância em cm return distance Tarefa do sensor 1 void sensorTask1void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor1 measureDistanceTRIGGERPIN1 ECHOPIN1 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 2 void sensorTask2void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor2 measureDistanceTRIGGERPIN2 ECHOPIN2 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 3 void sensorTask3void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor3 measureDistanceTRIGGERPIN3 ECHOPIN3 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 4 void sensorTask4void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor4 measureDistanceTRIGGERPIN4 ECHOPIN4 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa de controle dos motores void motorTaskvoid pvParameters TickTypet xLastWakeTime xTaskGetTickCount for Lógica de controle baseada nas distâncias motorSpeed1 distanceSensor1 50 VELOCIDADEMAX2 distanceSensor120 VELOCIDADEMAX2 0 motorSpeed2 distanceSensor2 50 VELOCIDADEMAX2 distanceSensor220 VELOCIDADEMAX2 0 motorSpeed3 distanceSensor3 50 VELOCIDADEMAX2 distanceSensor320 VELOCIDADEMAX2 0 motorSpeed4 distanceSensor4 50 VELOCIDADEMAX2 distanceSensor420 VELOCIDADEMAX2 0 Aplica as velocidades aos motores usando PWM analogWriteMOTOR1PIN absmotorSpeed1 analogWriteMOTOR2PIN absmotorSpeed2 analogWriteMOTOR3PIN absmotorSpeed3 analogWriteMOTOR4PIN absmotorSpeed4 Delay para a próxima iteração vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Ajustar período void setup Configuração dos pinos dos sensores e motores pinModeTRIGGERPIN1 OUTPUT pinModeECHOPIN1 INPUT pinModeTRIGGERPIN2 OUTPUT pinModeECHOPIN2 INPUT pinModeTRIGGERPIN3 OUTPUT pinModeECHOPIN3 INPUT pinModeTRIGGERPIN4 OUTPUT pinModeECHOPIN4 INPUT pinModeMOTOR1PINOUTPUT pinModeMOTOR2PINOUTPUT pinModeMOTOR3PINOUTPUT pinModeMOTOR4PINOUTPUT Criação das tasks xTaskCreatesensorTask1 Sensor1 128 NULL 1 NULL xTaskCreatesensorTask2 Sensor2 128 NULL 1 NULL xTaskCreatesensorTask3 Sensor3 128 NULL 1 NULL xTaskCreatesensorTask4 Sensor4 128 NULL 1 NULL xTaskCreatemotorTask Motores 256 NULL 2 NULL Inicia o escalonador já está embutido na ArduinoFreeRTOS void loop Não é preciso de nada aqui pois o FreeRTOS gerencia tudo Tarefa 2 Diagrama de Fluxo Temporal e HabilitaçãoDesabilitação de Tarefas 1 Análise Ciclo Único Maior Uma tarefa principal que coordena todo o sistema Essa tarefa pode 1 Habilitar as tarefas dos sensores 2 Esperar um período curto 3 Habilitar a tarefa dos motores 4 Desabilitar as tarefas dos sensores e motores 5 Repetir o ciclo Ciclo Menor As tarefas dos sensores executam em um ciclo menor mais frequente do que a tarefa de motores Isso garante que os dados dos sensores sejam atualizados frequentemente e a tarefa dos motores possa reagir rapidamente 2 Diagrama de Blocos 3 HabilitaçãoDesabilitação de Tarefas Utilizamse as funções vTaskSuspend e vTaskResume para desabilitar e habilitar as tarefas respectivamente É preciso armazenar a handle da tarefa no momento da criação Tarefa 3 Avaliação do Desempenho em Lógica de Livre Demanda 1 Descrição Técnica Lógica de Livre Demanda Nesse cenário as tarefas são executadas sempre que estão prontas para rodar e o escalonador do FreeRTOS as escolher Isso significa que não há um controle forçado sobre quando as tarefas devem ser executadas Avaliação o Prioridades Ajustamse as prioridades das tarefas para garantir que a tarefa dos motores tenha uma prioridade um pouco maior que as dos sensores garantindo que as ações dos motores sejam executadas após as leituras o Tempos Analisase como as tarefas interagem A tarefa de motores deve sempre obter as leituras mais recentes dos sensores o Overhead Avaliase o overhead do FreeRTOS e a latência das tarefas o tempo que leva para cada tarefa rodar Isso pode ser avaliado através da medição do tempo que cada tarefa leva para rodar ou usando ferramentas do FreeRTOS para análise de tempo Vantagens A lógica de livre demanda é geralmente mais flexível e fácil de implementar Desvantagens Em sistemas com muitos processos é preciso garantir que não haverá condições de starvation ou seja tarefas com baixa prioridade acabarem não executando Experimento 2 Criando e Aplicando o Conceito de Tarefas com FreeRTOS Objetivo criar um sistema de controle para um robô que precisa monitorar a distância de obstáculos em 4 direções usando sensores ultrassônicos e controlar a velocidade de 4 motores DC com implementação completa com FreeRTOS Análise das Tarefas Sensores 4 tarefas separadas uma para cada sensor que leem os valores de distância Motores 1 tarefa única que controla a velocidade dos 4 motores com base nos dados dos sensores Prioridades As prioridades das tarefas devem ser ajustadas para garantir que o robô reaja adequadamente aos obstáculos Tarefa 1 Definição das Características de Tempo Real e Teste de Tempo de Computação 1 Descrição Tarefa dos Sensores Cada tarefa de sensor irá 1 Acionar o sensor ultrassônico 2 Ler o tempo de eco tempo que o pulso ultrassônico leva para ir e voltar 3 Converter o tempo em distância geralmente usando uma fórmula empírica 4 Armazenar o valor da distância para a tarefa de controle de motores utilizar Tarefa dos Motores 1 Ler os valores de distância de todos os sensores 2 Calcular a velocidade e direção de cada motor 3 Enviar os sinais de PWM para os motores Tempo de Computação É importante entender quanto tempo cada tarefa leva para executar Isso ajudará a definir as prioridades e os períodos de cada tarefa 2 Código em C include ArduinoFreeRTOSh Definições ajuste conforme seu hardware define TRIGGERPIN1 2 define ECHOPIN1 3 define TRIGGERPIN2 4 define ECHOPIN2 5 define TRIGGERPIN3 6 define ECHOPIN3 7 define TRIGGERPIN4 8 define ECHOPIN4 9 define MOTOR1PIN 10 define MOTOR2PIN 11 define MOTOR3PIN 12 define MOTOR4PIN 13 define VELOCIDADEMAX 255 Variáveis Globais para distâncias e controle volatile float distanceSensor1 volatile float distanceSensor2 volatile float distanceSensor3 volatile float distanceSensor4 volatile int motorSpeed1 volatile int motorSpeed2 volatile int motorSpeed3 volatile int motorSpeed4 Função para medir a distância com o sensor ultrassônico float measureDistanceint triggerPin int echoPin long duration float distance digitalWritetriggerPin LOW delayMicroseconds2 digitalWritetriggerPin HIGH delayMicroseconds10 digitalWritetriggerPin LOW duration pulseInechoPin HIGH distance duration 20 00343 Distância em cm return distance Tarefa do sensor 1 void sensorTask1void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor1 measureDistanceTRIGGERPIN1 ECHOPIN1 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 2 void sensorTask2void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor2 measureDistanceTRIGGERPIN2 ECHOPIN2 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 3 void sensorTask3void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor3 measureDistanceTRIGGERPIN3 ECHOPIN3 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa do sensor 4 void sensorTask4void pvParameters TickTypet xLastWakeTime xTaskGetTickCount for distanceSensor4 measureDistanceTRIGGERPIN4 ECHOPIN4 vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Mede a cada 20 ms Tarefa de controle dos motores void motorTaskvoid pvParameters TickTypet xLastWakeTime xTaskGetTickCount for Lógica de controle baseada nas distâncias motorSpeed1 distanceSensor1 50 VELOCIDADEMAX2 distanceSensor120 VELOCIDADEMAX2 0 motorSpeed2 distanceSensor2 50 VELOCIDADEMAX2 distanceSensor220 VELOCIDADEMAX2 0 motorSpeed3 distanceSensor3 50 VELOCIDADEMAX2 distanceSensor320 VELOCIDADEMAX2 0 motorSpeed4 distanceSensor4 50 VELOCIDADEMAX2 distanceSensor420 VELOCIDADEMAX2 0 Aplica as velocidades aos motores usando PWM analogWriteMOTOR1PIN absmotorSpeed1 analogWriteMOTOR2PIN absmotorSpeed2 analogWriteMOTOR3PIN absmotorSpeed3 analogWriteMOTOR4PIN absmotorSpeed4 Delay para a próxima iteração vTaskDelayUntilxLastWakeTime 20portTICKPERIODMS Ajustar período void setup Configuração dos pinos dos sensores e motores pinModeTRIGGERPIN1 OUTPUT pinModeECHOPIN1 INPUT pinModeTRIGGERPIN2 OUTPUT pinModeECHOPIN2 INPUT pinModeTRIGGERPIN3 OUTPUT pinModeECHOPIN3 INPUT pinModeTRIGGERPIN4 OUTPUT pinModeECHOPIN4 INPUT pinModeMOTOR1PINOUTPUT pinModeMOTOR2PINOUTPUT pinModeMOTOR3PINOUTPUT pinModeMOTOR4PINOUTPUT Criação das tasks xTaskCreatesensorTask1 Sensor1 128 NULL 1 NULL xTaskCreatesensorTask2 Sensor2 128 NULL 1 NULL xTaskCreatesensorTask3 Sensor3 128 NULL 1 NULL xTaskCreatesensorTask4 Sensor4 128 NULL 1 NULL xTaskCreatemotorTask Motores 256 NULL 2 NULL Inicia o escalonador já está embutido na ArduinoFreeRTOS void loop Não é preciso de nada aqui pois o FreeRTOS gerencia tudo Tarefa 2 Diagrama de Fluxo Temporal e HabilitaçãoDesabilitação de Tarefas 1 Análise Ciclo Único Maior Uma tarefa principal que coordena todo o sistema Essa tarefa pode 1 Habilitar as tarefas dos sensores 2 Esperar um período curto 3 Habilitar a tarefa dos motores 4 Desabilitar as tarefas dos sensores e motores 5 Repetir o ciclo Ciclo Menor As tarefas dos sensores executam em um ciclo menor mais frequente do que a tarefa de motores Isso garante que os dados dos sensores sejam atualizados frequentemente e a tarefa dos motores possa reagir rapidamente 2 Diagrama de Blocos 3 HabilitaçãoDesabilitação de Tarefas Utilizamse as funções vTaskSuspend e vTaskResume para desabilitar e habilitar as tarefas respectivamente É preciso armazenar a handle da tarefa no momento da criação Tarefa 3 Avaliação do Desempenho em Lógica de Livre Demanda 1 Descrição Técnica Lógica de Livre Demanda Nesse cenário as tarefas são executadas sempre que estão prontas para rodar e o escalonador do FreeRTOS as escolher Isso significa que não há um controle forçado sobre quando as tarefas devem ser executadas Avaliação o Prioridades Ajustamse as prioridades das tarefas para garantir que a tarefa dos motores tenha uma prioridade um pouco maior que as dos sensores garantindo que as ações dos motores sejam executadas após as leituras o Tempos Analisase como as tarefas interagem A tarefa de motores deve sempre obter as leituras mais recentes dos sensores o Overhead Avaliase o overhead do FreeRTOS e a latência das tarefas o tempo que leva para cada tarefa rodar Isso pode ser avaliado através da medição do tempo que cada tarefa leva para rodar ou usando ferramentas do FreeRTOS para análise de tempo Vantagens A lógica de livre demanda é geralmente mais flexível e fácil de implementar Desvantagens Em sistemas com muitos processos é preciso garantir que não haverá condições de starvation ou seja tarefas com baixa prioridade acabarem não executando

Sua Nova Sala de Aula

Sua Nova Sala de Aula

Empresa

Contato Blog

Legal

Termos de uso Política de privacidade Política de cookies Código de honra

Baixe o app

4,8
(35.000 avaliações)
© 2026 Meu Guru® • 42.269.770/0001-84