Sumário do Curso
🤖 Sistemas embarcados
"A educação é a arma mais poderosa que você pode usar para mudar o mundo." — Nelson Mandela (Adaptado para Tecnologia)
🧭 Atalhos Rápidos
-
Trilha de Aprendizagem --- Veja o Mapa da Jornada.
-
Slides Interativos --- Acesse as Apreasentações.
-
Quizzes de Revisão --- Teste seus Conhecimentos.
-
Projetos Práticos --- Mão na massa nos Projetos.
-
Exercícios --- Pratique com Desafios.
-
Setups --- Configure seu Ambiente.
🗺️ Mapa da Jornada
O curso está dividido em 4 Módulos Estratégicos projetados para uma progressão cognitiva sólida.
- Módulo 1: Fundamentos e Conceitos Iniciais.
- Módulo 2: Aprofundamento Técnico.
- Módulo 3: Prática e Consolidação.
- Módulo 4: Especialização e Projeto Final.
Plano de Ensino 🧭
Curso: Sistemas Embarcados
Público-alvo: Estudantes de ADS, Ciência da Computação e Desenvolvedores de Software
Carga Horária: 20 Aulas (80 Horas Teórico-Práticas)
🎯 1. Objetivos do Curso
- Compreender os fundamentos conceituais e arquiteturais de Sistemas Embarcados.
- Aplicar padrões de projeto, sintaxe moderna e boas práticas da indústria.
- Desenvolver soluções completas através de exercícios práticos e desafios de projeto.
📚 2. Cronograma de Aulas (Matriz de 20 Semanas)
| Aula | Tema Central | Atividades e Entregas |
|---|---|---|
| 01 | Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 02 | Famílias de Microcontroladores e Ambiente de Desenvolvimento ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 03 | Organização de Memória e Mapa de Registradores em C ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 04 | Entradas e Saídas Digitais (GPIO) e Circuitos de Interface ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 05 | Modulação por Largura de Pulso (PWM) e Controle de Atuadores ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 06 | Conversão Analógico-Digital (ADC) e Sensores Resistivos ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 07 | Timers de Hardware e Temporização sem Bloqueio ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 08 | Interrupções de Hardware (ISR) e Tratamento Assíncrono ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 09 | Comunicação Serial Assíncrona (UART / USART) ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 10 | Barramento I2C (Inter-Integrated Circuit) ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 11 | Barramento SPI (Serial Peripheral Interface) ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 12 | Redes Industriais e Automotivas: Barramento CAN ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 13 | Introdução a Sistemas Operacionais de Tempo Real (RTOS) ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 14 | Gerenciamento de Tarefas (Tasks) no FreeRTOS ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 15 | Comunicação e Sincronização: Filas e Mutexes no FreeRTOS ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 16 | Gerenciamento de Energia e Modos de Baixo Consumo (Low Power) ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 17 | Conectividade Sem Fio: Pilhas Wi-Fi e Bluetooth Low Energy (BLE) ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 18 | Telemetria e Mensageria IoT com o Protocolo MQTT ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 19 | Segurança em Firmware e Atualizações Remotas (OTA) ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 20 | Projeto Capstone: Estação IoT de Monitoramento Autônoma ️ | Teoria, Prática Guiada, Quiz e Exercícios |
🧠 3. Metodologia de Ensino
- Teoria Fundamentada: Aulas com conceitos detalhados, diagramas arquiteturais e sintaxe de referência.
- Ciclo Teoria ⇄ Prática: Cada aula conta com Quiz Interativo (10 questões) para validação imediata, Lista de Exercícios Sanfonados (com Gabarito Explicado) e Desafio de Projeto Prático.
- Laboratório Contínuo: Ambientes configurados passo a passo na seção de Setups da plataforma.
💼 4. Competências e Perfil Desenvolvido
- Dominar as ferramentas e fluxos de desenvolvimento de Sistemas Embarcados.
- Resolver problemas técnicos de alta complexidade com código limpo e performático.
- Construir portfólio prático com 20 projetos aplicados.
📊 5. Critérios de Avaliação
- 20 Listas de Exercícios: Resolução individual dividida em Básico, Intermediário e Desafio.
- 20 Quizzes Interativos: Validação formativa com feedback imediato via JavaScript.
- 20 Desafios de Projetos: Aplicações práticas consolidando o aprendizado de cada unidade.
Aulas
Módulo 1 – Fundamentos de Sistemas Embarcados e Arquitetura
Aula 01 - Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores ⚙️
Objetivo Pedagógico
Objetivo: Conceitos essenciais de sistemas embarcados, restrições de tempo real, arquiteturas Von Neumann vs. Harvard e diferenças entre microprocessadores e microcontroladores.
📑 1. Fundamentos Teóricos & Conceituação
Conceitos essenciais de sistemas embarcados, restrições de tempo real, arquiteturas Von Neumann vs. Harvard e diferenças entre microprocessadores e microcontroladores. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Sistemas Embarcados: Requisito essencial para garantir operação determinística e estável. - Microcontrolador vs Microprocessador: Requisito essencial para garantir operação determinística e estável. - Arquitetura Harvard: Requisito essencial para garantir operação determinística e estável. - Superloop: Requisito essencial para garantir operação determinística e estável. - Restrições de Tempo Real: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Exemplo de Superloop em C Bare-Metal para Microcontrolador
#include <stdint.h>
#include <stdbool.h>
#define SYS_CLOCK_HZ 16000000UL
void system_init(void) {
// Configura clocks e periféricos básicos
}
int main(void) {
system_init();
// Superloop principal (Round-Robin não-preemptivo)
while (true) {
// 1. Aquisição de sensores
// 2. Processamento da lógica de controle
// 3. Atualização de atuadores e saídas
}
return 0;
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 02 - Famílias de Microcontroladores e Ambiente de Desenvolvimento ⚙️
Objetivo Pedagógico
Objetivo: Panorama das principais famílias (ARM Cortex-M, ESP32, AVR, RISC-V). Instalação e uso do PlatformIO no VS Code e simulador online Wokwi.
📑 1. Fundamentos Teóricos & Conceituação
Panorama das principais famílias (ARM Cortex-M, ESP32, AVR, RISC-V). Instalação e uso do PlatformIO no VS Code e simulador online Wokwi. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Famílias de Microcontroladores e Ambiente de Desenvolvimento"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - ARM Cortex-M: Requisito essencial para garantir operação determinística e estável. - ESP32: Requisito essencial para garantir operação determinística e estável. - AVR ATmega328P: Requisito essencial para garantir operação determinística e estável. - PlatformIO: Requisito essencial para garantir operação determinística e estável. - Toolchain GCC Cross-Compiler: Requisito essencial para garantir operação determinística e estável. - Wokwi: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
; platformio.ini - Configuração de projeto PlatformIO para ESP32
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = espidf
monitor_speed = 115200
upload_speed = 921600
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 03 - Organização de Memória e Mapa de Registradores em C ⚙️
Objetivo Pedagógico
Objetivo: Segmentação de memória em MCUs (Flash, SRAM, EEPROM), modificadores volatile e const, e acesso a registradores mapeados em memória (MMIO) com ponteiros.
📑 1. Fundamentos Teóricos & Conceituação
Segmentação de memória em MCUs (Flash, SRAM, EEPROM), modificadores volatile e const, e acesso a registradores mapeados em memória (MMIO) com ponteiros. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Organização de Memória e Mapa de Registradores em C"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Flash vs SRAM: Requisito essencial para garantir operação determinística e estável. - Modificador volatile: Requisito essencial para garantir operação determinística e estável. - Memory-Mapped I/O (MMIO): Requisito essencial para garantir operação determinística e estável. - Máscaras de Bits: Requisito essencial para garantir operação determinística e estável. - Endianness: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Acesso direto a registradores via Memory-Mapped I/O (MMIO)
#include <stdint.h>
#define GPIO_BASE 0x3FF44000UL
#define GPIO_OUT_REG (*(volatile uint32_t *)(GPIO_BASE + 0x0004))
#define GPIO_ENABLE_REG (*(volatile uint32_t *)(GPIO_BASE + 0x0020))
void gpio_set_high(uint8_t pin) {
GPIO_OUT_REG |= (1UL << pin);
}
void gpio_set_low(uint8_t pin) {
GPIO_OUT_REG &= ~(1UL << pin);
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 04 - Entradas e Saídas Digitais (GPIO) e Circuitos de Interface ⚙️
Objetivo Pedagógico
Objetivo: Modos de operação de GPIO (Input, Output Push-Pull, Open-Drain). Resistores internos de pull-up/down e técnicas de debouncing de chaves mecânicas.
📑 1. Fundamentos Teóricos & Conceituação
Modos de operação de GPIO (Input, Output Push-Pull, Open-Drain). Resistores internos de pull-up/down e técnicas de debouncing de chaves mecânicas. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Entradas e Saídas Digitais (GPIO) e Circuitos de Interface"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Push-Pull: Requisito essencial para garantir operação determinística e estável. - Open-Drain: Requisito essencial para garantir operação determinística e estável. - Pull-Up / Pull-Down: Requisito essencial para garantir operação determinística e estável. - Debounce Hardware e Software: Requisito essencial para garantir operação determinística e estável. - Acoplamento Óptico: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Leitura de botão com debouncing temporal em software
#include <stdint.h>
#include <stdbool.h>
bool button_read_debounced(uint32_t current_time_ms) {
static uint32_t last_debounce_time = 0;
static bool last_state = true;
static bool button_state = true;
bool reading = gpio_get_level(PIN_BUTTON);
if (reading != last_state) {
last_debounce_time = current_time_ms;
}
if ((current_time_ms - last_debounce_time) > 50) {
if (reading != button_state) {
button_state = reading;
}
}
last_state = reading;
return (button_state == false); // Pressionado (Pull-up ativo em LOW)
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Módulo 2 – Periféricos Básicos e Aquisição de Sinais
Aula 05 - Modulação por Largura de Pulso (PWM) e Controle de Atuadores ⚙️
Objetivo Pedagógico
Objetivo: Fundamentos de PWM: frequência, período e duty cycle. Controle de intensidade luminosa em LEDs e modulação de velocidade em motores DC com Ponte H.
📑 1. Fundamentos Teóricos & Conceituação
Fundamentos de PWM: frequência, período e duty cycle. Controle de intensidade luminosa em LEDs e modulação de velocidade em motores DC com Ponte H. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Modulação por Largura de Pulso (PWM) e Controle de Atuadores"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Duty Cycle: Requisito essencial para garantir operação determinística e estável. - Frequência PWM: Requisito essencial para garantir operação determinística e estável. - Resolução em Bits: Requisito essencial para garantir operação determinística e estável. - Controle de Motores DC: Requisito essencial para garantir operação determinística e estável. - Servomotores (50 Hz): Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Configuração de PWM no ESP32 (Driver LEDC)
#include "driver/ledc.h"
void pwm_init(void) {
ledc_timer_config_t timer_conf = {
.speed_mode = LEDC_LOW_SPEED_MODE,
.duty_resolution = LEDC_TIMER_10_BIT, // 0 a 1023
.timer_num = LEDC_TIMER_0,
.freq_hz = 5000, // 5 kHz para motor
.clk_cfg = LEDC_AUTO_CLK
};
ledc_timer_config(&timer_conf);
ledc_channel_config_t ch_conf = {
.gpio_num = 18,
.speed_mode = LEDC_LOW_SPEED_MODE,
.channel = LEDC_CHANNEL_0,
.timer_sel = LEDC_TIMER_0,
.duty = 512, // 50% de Duty Cycle
.hpoint = 0
};
ledc_channel_config(&ch_conf);
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 06 - Conversão Analógico-Digital (ADC) e Sensores Resistivos ⚙️
Objetivo Pedagógico
Objetivo: Princípios de amostragem, quantização, resolução e tensão de referência. Condicionamento de sinal para sensores analógicos (LDR, NTC e sensores industriais 4-20mA).
📑 1. Fundamentos Teóricos & Conceituação
Princípios de amostragem, quantização, resolução e tensão de referência. Condicionamento de sinal para sensores analógicos (LDR, NTC e sensores industriais 4-20mA). Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Conversão Analógico-Digital (ADC) e Sensores Resistivos"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Resolução do ADC: Requisito essencial para garantir operação determinística e estável. - Taxa de Amostragem (Nyquist): Requisito essencial para garantir operação determinística e estável. - Tensão de Referência (Vref): Requisito essencial para garantir operação determinística e estável. - Média Móvel: Requisito essencial para garantir operação determinística e estável. - Divisor de Tensão: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Leitura de sensor analógico com média móvel para filtragem de ruído
#include <stdint.h>
#define WINDOW_SIZE 8
uint32_t adc_read_filtered(void) {
static uint32_t readings[WINDOW_SIZE] = {0};
static uint8_t index = 0;
static uint32_t sum = 0;
sum -= readings[index];
readings[index] = adc_raw_read();
sum += readings[index];
index = (index + 1) % WINDOW_SIZE;
return sum / WINDOW_SIZE;
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 07 - Timers de Hardware e Temporização sem Bloqueio ⚙️
Objetivo Pedagógico
Objetivo: Arquitetura dos temporizadores internos: prescaler, contadores ascendentes/descendentes, modos de recarga automática e comparação de eventos.
📑 1. Fundamentos Teóricos & Conceituação
Arquitetura dos temporizadores internos: prescaler, contadores ascendentes/descendentes, modos de recarga automática e comparação de eventos. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Timers de Hardware e Temporização sem Bloqueio"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Prescaler: Requisito essencial para garantir operação determinística e estável. - Contador (CNT): Requisito essencial para garantir operação determinística e estável. - Auto-Reload (ARR): Requisito essencial para garantir operação determinística e estável. - Non-blocking Design: Requisito essencial para garantir operação determinística e estável. - Máquinas de Estados: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Arquitetura de Máquina de Estados Não-Bloqueante com Base de Tempo
typedef enum { ESTADO_IDLE, ESTADO_PROCESSANDO, ESTADO_ALARME } estado_t;
void app_loop(uint32_t current_tick) {
static uint32_t last_sensor_tick = 0;
static estado_t estado_atual = ESTADO_IDLE;
// Amostragem periódica a cada 500ms sem travar a CPU
if (current_tick - last_sensor_tick >= 500) {
last_sensor_tick = current_tick;
processar_leitura_sensores();
}
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 08 - Interrupções de Hardware (ISR) e Tratamento Assíncrono ⚙️
Objetivo Pedagógico
Objetivo: Mecanismo de interrupção externa (EXTI), vetor de interrupções (NVIC), salvamento de contexto, prioridades e boas práticas de projeto em rotinas ISR.
📑 1. Fundamentos Teóricos & Conceituação
Mecanismo de interrupção externa (EXTI), vetor de interrupções (NVIC), salvamento de contexto, prioridades e boas práticas de projeto em rotinas ISR. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Interrupções de Hardware (ISR) e Tratamento Assíncrono"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - ISR (Interrupt Service Routine): Requisito essencial para garantir operação determinística e estável. - Vetor de Interrupções: Requisito essencial para garantir operação determinística e estável. - Context Switching: Requisito essencial para garantir operação determinística e estável. - Flag Pattern: Requisito essencial para garantir operação determinística e estável. - Latência de Interrupção: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Tratamento seguro de interrupção externa via Flag Pattern
#include <stdint.h>
#include <stdbool.h>
volatile bool g_button_event = false;
// Rotina de Serviço de Interrupção (ISR) - Deve ser o mais rápida possível!
void IRAM_ATTR gpio_isr_handler(void* arg) {
g_button_event = true; // Sinaliza a tarefa principal, sem delays ou printf
}
void processar_eventos(void) {
if (g_button_event) {
g_button_event = false;
// Executa processamento pesado fora da ISR
acionar_rele_seguranca();
}
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Módulo 3 – Protocolos de Comunicação Serial e Barramentos
Aula 09 - Comunicação Serial Assíncrona (UART / USART) ⚙️
Objetivo Pedagógico
Objetivo: Estrutura do frame UART (Start bit, 8 bits de dados, paridade, Stop bits). Configuração de baud rates e implementação de Buffers Circulares (Ring Buffers).
📑 1. Fundamentos Teóricos & Conceituação
Estrutura do frame UART (Start bit, 8 bits de dados, paridade, Stop bits). Configuração de baud rates e implementação de Buffers Circulares (Ring Buffers). Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Comunicação Serial Assíncrona (UART / USART)"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Baud Rate: Requisito essencial para garantir operação determinística e estável. - Frame UART: Requisito essencial para garantir operação determinística e estável. - Ring Buffer: Requisito essencial para garantir operação determinística e estável. - Transmissão Assíncrona: Requisito essencial para garantir operação determinística e estável. - Níveis Lógicos TTL vs RS232: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Implementação de Ring Buffer em C para UART RX
#define BUFFER_SIZE 64
typedef struct {
uint8_t buffer[BUFFER_SIZE];
volatile uint8_t head;
volatile uint8_t tail;
} ring_buffer_t;
bool ring_buffer_put(ring_buffer_t *rb, uint8_t data) {
uint8_t next = (rb->head + 1) % BUFFER_SIZE;
if (next == rb->tail) return false; // Buffer cheio
rb->buffer[rb->head] = data;
rb->head = next;
return true;
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 10 - Barramento I2C (Inter-Integrated Circuit) ⚙️
Objetivo Pedagógico
Objetivo: Comunicação mestre-escravo a 2 fios (SDA e SCL). Endereçamento de 7 bits, resistores de pull-up, condições de Start/Stop e leitura de sensores digitais.
📑 1. Fundamentos Teóricos & Conceituação
Comunicação mestre-escravo a 2 fios (SDA e SCL). Endereçamento de 7 bits, resistores de pull-up, condições de Start/Stop e leitura de sensores digitais. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Barramento I2C (Inter-Integrated Circuit)"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Linhas SDA e SCL: Requisito essencial para garantir operação determinística e estável. - Pull-Up Externo: Requisito essencial para garantir operação determinística e estável. - Endereçamento 7-bit: Requisito essencial para garantir operação determinística e estável. - START / STOP / ACK: Requisito essencial para garantir operação determinística e estável. - Multi-dispositivo: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Leitura de registrador de sensor via barramento I2C
#include "driver/i2c.h"
esp_err_t i2c_read_sensor_reg(uint8_t dev_addr, uint8_t reg_addr, uint8_t *data, size_t len) {
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
i2c_master_start(cmd);
i2c_master_write_byte(cmd, (dev_addr << 1) | I2C_MASTER_WRITE, true);
i2c_master_write_byte(cmd, reg_addr, true);
i2c_master_start(cmd); // Repeated Start
i2c_master_write_byte(cmd, (dev_addr << 1) | I2C_MASTER_READ, true);
i2c_master_read(cmd, data, len, I2C_MASTER_LAST_NACK);
i2c_master_stop(cmd);
esp_err_t ret = i2c_master_cmd_begin(I2C_NUM_0, cmd, pdMS_TO_TICKS(1000));
i2c_cmd_link_delete(cmd);
return ret;
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 11 - Barramento SPI (Serial Peripheral Interface) ⚙️
Objetivo Pedagógico
Objetivo: Comunicação síncrona full-duplex de alta velocidade. Linhas MOSI, MISO, SCK e CS/SS. Modos de clock (CPOL e CPHA) e integração de memórias Flash e displays.
📑 1. Fundamentos Teóricos & Conceituação
Comunicação síncrona full-duplex de alta velocidade. Linhas MOSI, MISO, SCK e CS/SS. Modos de clock (CPOL e CPHA) e integração de memórias Flash e displays. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Barramento SPI (Serial Peripheral Interface)"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Full-Duplex: Requisito essencial para garantir operação determinística e estável. - MOSI / MISO / SCK / CS: Requisito essencial para garantir operação determinística e estável. - Polaridade de Clock (CPOL): Requisito essencial para garantir operação determinística e estável. - Fase de Clock (CPHA): Requisito essencial para garantir operação determinística e estável. - Altas Velocidades (>10 MHz): Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Transmissão Full-Duplex via SPI
#include "driver/spi_master.h"
void spi_send_command(spi_device_handle_t spi, uint8_t cmd, uint8_t *data, size_t len) {
spi_transaction_t t;
memset(&t, 0, sizeof(t));
t.length = 8 * (len + 1); // Comprimento em bits
t.tx_buffer = data;
spi_device_polling_transmit(spi, &t);
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 12 - Redes Industriais e Automotivas: Barramento CAN ⚙️
Objetivo Pedagógico
Objetivo: Protocolo CAN 2.0B e CAN-FD. Sinalização diferencial (CAN_H e CAN_L), imunidade a ruídos eletromagnéticos (EMI), arbitragem por prioridade e segurança automotiva.
📑 1. Fundamentos Teóricos & Conceituação
Protocolo CAN 2.0B e CAN-FD. Sinalização diferencial (CAN_H e CAN_L), imunidade a ruídos eletromagnéticos (EMI), arbitragem por prioridade e segurança automotiva. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Redes Industriais e Automotivas: Barramento CAN"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Sinal Diferencial: Requisito essencial para garantir operação determinística e estável. - CAN_H e CAN_L: Requisito essencial para garantir operação determinística e estável. - Arbitragem Não-Destrutiva: Requisito essencial para garantir operação determinística e estável. - Identificadores de Mensagem: Requisito essencial para garantir operação determinística e estável. - Imunidade Eletromagnética: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Estrutura de Mensagem CAN 2.0B
typedef struct {
uint32_t identifier; // ID de 11 bits (padrão) ou 29 bits (estendido)
uint8_t data_length_code; // 0 a 8 bytes
uint8_t data[8];
bool is_extended;
} can_frame_t;
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Módulo 4 – Sistemas Operacionais de Tempo Real (RTOS) e IoT
Aula 13 - Introdução a Sistemas Operacionais de Tempo Real (RTOS) ⚙️
Objetivo Pedagógico
Objetivo: Conceito de determinismo e tempo real (Hard vs. Soft Real-Time). Arquitetura do FreeRTOS, escalonador preemptivo baseado em prioridades e o papel do SysTick.
📑 1. Fundamentos Teóricos & Conceituação
Conceito de determinismo e tempo real (Hard vs. Soft Real-Time). Arquitetura do FreeRTOS, escalonador preemptivo baseado em prioridades e o papel do SysTick. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Introdução a Sistemas Operacionais de Tempo Real (RTOS)"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Hard vs Soft Real-Time: Requisito essencial para garantir operação determinística e estável. - Escalonamento Preemptivo: Requisito essencial para garantir operação determinística e estável. - FreeRTOS Kernel: Requisito essencial para garantir operação determinística e estável. - SysTick Timer: Requisito essencial para garantir operação determinística e estável. - Determinismo: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Estrutura Básica de Inicialização do FreeRTOS
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
void app_main(void) {
// O kernel do FreeRTOS assume o controle do fluxo de execução
xTaskCreate(vTaskTelemetry, "Telemetry", 4096, NULL, 5, NULL);
xTaskCreate(vTaskControl, "Control", 2048, NULL, 10, NULL);
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 14 - Gerenciamento de Tarefas (Tasks) no FreeRTOS ⚙️
Objetivo Pedagógico
Objetivo: Criação de tarefas com xTaskCreate. Estados de uma tarefa (Running, Ready, Blocked, Suspended). Alocação de stack por tarefa e detecção de Stack Overflow.
📑 1. Fundamentos Teóricos & Conceituação
Criação de tarefas com xTaskCreate. Estados de uma tarefa (Running, Ready, Blocked, Suspended). Alocação de stack por tarefa e detecção de Stack Overflow. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Gerenciamento de Tarefas (Tasks) no FreeRTOS"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - xTaskCreate: Requisito essencial para garantir operação determinística e estável. - Estados de Tarefa: Requisito essencial para garantir operação determinística e estável. - Stack Allocation: Requisito essencial para garantir operação determinística e estável. - vTaskDelayUntil: Requisito essencial para garantir operação determinística e estável. - Prioridade de Tarefas: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Implementação de Tarefa Periódica no FreeRTOS
void vTaskSensor(void *pvParameters) {
TickType_t xLastWakeTime = xTaskGetTickCount();
const TickType_t xFrequency = pdMS_TO_TICKS(100); // 10 Hz
for (;;) {
ler_sensor_temperatura();
// Libera a CPU para tarefas de menor prioridade até o próximo tick
vTaskDelayUntil(&xLastWakeTime, xFrequency);
}
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 15 - Comunicação e Sincronização: Filas e Mutexes no FreeRTOS ⚙️
Objetivo Pedagógico
Objetivo: Comunicação entre tarefas via Filas (Queues). Semáforos binários para sinalização de interrupções e Mutex com herança de prioridade para evitar Inversão de Prioridade.
📑 1. Fundamentos Teóricos & Conceituação
Comunicação entre tarefas via Filas (Queues). Semáforos binários para sinalização de interrupções e Mutex com herança de prioridade para evitar Inversão de Prioridade. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Comunicação e Sincronização: Filas e Mutexes no FreeRTOS"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - FreeRTOS Queues: Requisito essencial para garantir operação determinística e estável. - Semáforo Binário: Requisito essencial para garantir operação determinística e estável. - Mutex: Requisito essencial para garantir operação determinística e estável. - Inversão de Prioridade: Requisito essencial para garantir operação determinística e estável. - Herança de Prioridade: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Sincronização de Recurso Compartilhado (I2C) com Mutex
SemaphoreHandle_t xI2CMutex;
void vTaskAccessI2C(void *pv) {
for (;;) {
if (xSemaphoreTake(xI2CMutex, portMAX_DELAY) == pdTRUE) {
// Acesso exclusivo ao barramento I2C
i2c_write_data();
xSemaphoreGive(xI2CMutex);
}
vTaskDelay(pdMS_TO_TICKS(50));
}
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 16 - Gerenciamento de Energia e Modos de Baixo Consumo (Low Power) ⚙️
Objetivo Pedagógico
Objetivo: Estratégias de economia de energia em dispositivos a bateria. Modos Light Sleep e Deep Sleep. Fontes de despertar (RTC Timer, GPIO) e retenção de dados na RTC SRAM.
📑 1. Fundamentos Teóricos & Conceituação
Estratégias de economia de energia em dispositivos a bateria. Modos Light Sleep e Deep Sleep. Fontes de despertar (RTC Timer, GPIO) e retenção de dados na RTC SRAM. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Gerenciamento de Energia e Modos de Baixo Consumo (Low Power)"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Deep Sleep: Requisito essencial para garantir operação determinística e estável. - RTC Memory: Requisito essencial para garantir operação determinística e estável. - Wakeup Sources: Requisito essencial para garantir operação determinística e estável. - Consumo em Microamperes (uA): Requisito essencial para garantir operação determinística e estável. - Otimização de Bateria: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Configuração de Deep Sleep de 60 segundos com retenção em RTC SRAM
#include "esp_sleep.h"
RTC_DATA_ATTR static int boot_count = 0;
void entrar_em_deep_sleep(void) {
boot_count++;
esp_sleep_enable_timer_wakeup(60 * 1000000ULL); // 60 segundos
esp_deep_sleep_start();
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 17 - Conectividade Sem Fio: Pilhas Wi-Fi e Bluetooth Low Energy (BLE) ⚙️
Objetivo Pedagógico
Objetivo: Arquitetura de rádio no ESP32. Modos Wi-Fi Station e Access Point. Fundamentos de BLE: Perfis GAP e GATT, Serviços, Características e Notificações.
📑 1. Fundamentos Teóricos & Conceituação
Arquitetura de rádio no ESP32. Modos Wi-Fi Station e Access Point. Fundamentos de BLE: Perfis GAP e GATT, Serviços, Características e Notificações. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Conectividade Sem Fio: Pilhas Wi-Fi e Bluetooth Low Energy (BLE)"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Wi-Fi Station / AP: Requisito essencial para garantir operação determinística e estável. - BLE GAP / GATT: Requisito essencial para garantir operação determinística e estável. - Serviços e Características: Requisito essencial para garantir operação determinística e estável. - Pilha LwIP: Requisito essencial para garantir operação determinística e estável. - Event Groups: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Inicialização Wi-Fi Station com FreeRTOS Event Groups
#include "esp_wifi.h"
#include "esp_event.h"
void wifi_init_sta(void) {
esp_netif_init();
esp_event_loop_create_default();
esp_netif_create_default_wifi_sta();
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
esp_wifi_init(&cfg);
esp_wifi_set_mode(WIFI_MODE_STA);
esp_wifi_start();
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 18 - Telemetria e Mensageria IoT com o Protocolo MQTT ⚙️
Objetivo Pedagógico
Objetivo: Arquitetura Publish/Subscribe. Brokers MQTT (Mosquitto, EMQX), tópicos hierárquicos, níveis de QoS (0, 1, 2), mensagens retained e autenticação TLS.
📑 1. Fundamentos Teóricos & Conceituação
Arquitetura Publish/Subscribe. Brokers MQTT (Mosquitto, EMQX), tópicos hierárquicos, níveis de QoS (0, 1, 2), mensagens retained e autenticação TLS. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Telemetria e Mensageria IoT com o Protocolo MQTT"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - MQTT Pub/Sub: Requisito essencial para garantir operação determinística e estável. - Broker MQTT: Requisito essencial para garantir operação determinística e estável. - QoS 0, 1 e 2: Requisito essencial para garantir operação determinística e estável. - Formato JSON / CBOR: Requisito essencial para garantir operação determinística e estável. - Criptografia TLS/SSL: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Publicação periódica de telemetria em formato JSON via MQTT
#include "mqtt_client.h"
void mqtt_publish_telemetry(esp_mqtt_client_handle_t client, float temp, float umid) {
char payload[128];
snprintf(payload, sizeof(payload), "{"temperatura": %.2f, "umidade": %.2f}", temp, umid);
esp_mqtt_client_publish(client, "sensores/estacao01/telemetria", payload, 0, 1, 0);
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 19 - Segurança em Firmware e Atualizações Remotas (OTA) ⚙️
Objetivo Pedagógico
Objetivo: Segurança em hardware: Secure Boot e criptografia de Flash. Mecanismos de atualização Over-The-Air (OTA) com particionamento duplo e rollback automático em falhas.
📑 1. Fundamentos Teóricos & Conceituação
Segurança em hardware: Secure Boot e criptografia de Flash. Mecanismos de atualização Over-The-Air (OTA) com particionamento duplo e rollback automático em falhas. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Segurança em Firmware e Atualizações Remotas (OTA)"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Particionamento Dual OTA: Requisito essencial para garantir operação determinística e estável. - Secure Boot: Requisito essencial para garantir operação determinística e estável. - Flash Encryption: Requisito essencial para garantir operação determinística e estável. - Rollback Automático: Requisito essencial para garantir operação determinística e estável. - Integridade SHA-256: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Tabela de Partições Flash para Suporte a OTA Seguro
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x4000,
otadata, data, ota, 0xd000, 0x2000,
phy_init, data, phy, 0xf000, 0x1000,
ota_0, app, ota_0, 0x10000, 0x180000,
ota_1, app, ota_1, 0x190000,0x180000,
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 20 - Projeto Capstone: Estação IoT de Monitoramento Autônoma ⚙️
Objetivo Pedagógico
Objetivo: Projeto de consolidação: desenvolvimento de um dispositivo autônomo industrial integrando FreeRTOS, sensores I2C, envio MQTT seguro, gestão de bateria e OTA.
📑 1. Fundamentos Teóricos & Conceituação
Projeto de consolidação: desenvolvimento de um dispositivo autônomo industrial integrando FreeRTOS, sensores I2C, envio MQTT seguro, gestão de bateria e OTA. Em projetos de engenharia eletrônica e sistemas computacionais embarcados, a precisão temporal, a contenção de recursos de memória e a confiabilidade contínua são requisitos mandatórios de projeto.
📐 Arquitetura Conceitual & Fluxo de Operação
graph TD
A["Entrada / Periféricos"] --> B["Projeto Capstone: Estação IoT de Monitoramento Autônoma"]
B --> C["Processamento e Validação"]
C --> D["Saída / Atuador / Rede"]
style A fill:#e3f2fd,stroke:#1565c0
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#e8f5e9,stroke:#2e7d32
style D fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Princípios de Engenharia
Nesta unidade, exploramos detalhadamente os seguintes conceitos: - Integração Hardware-Software: Requisito essencial para garantir operação determinística e estável. - FreeRTOS Dual-Core: Requisito essencial para garantir operação determinística e estável. - Confiabilidade Industrial: Requisito essencial para garantir operação determinística e estável. - Watchdog Timer: Requisito essencial para garantir operação determinística e estável. - Produto Comercial: Requisito essencial para garantir operação determinística e estável.
🛠️ 2. Implementação Técnica & Código em C/C++
Abaixo está o exemplo prático estruturado de acordo com as normas de desenvolvimento bare-metal / FreeRTOS para a família estudada:
// Arquitetura Final Integrada do Projeto Capstone
void app_main(void) {
init_hardware();
init_nvs_storage();
init_wifi_and_mqtt();
xTaskCreatePinnedToCore(vTaskSensors, "Sensors", 4096, NULL, 5, NULL, 1);
xTaskCreatePinnedToCore(vTaskTelemetry, "Telemetry", 4096, NULL, 4, NULL, 0);
xTaskCreatePinnedToCore(vTaskPowerManager, "Power", 2048, NULL, 3, NULL, 0);
}
💡 Análise Passo a Passo do Código
- Configuração de Registradores / Drivers: O hardware é parametrizado antes da ativação das interrupções globais.
- Tratamento Seguro: Utilização de tipos com largura fixa (
uint8_t,uint32_t) da biblioteca<stdint.h>para garantir portabilidade entre arquiteturas de 8, 16 e 32 bits. - Eficiência e Baixo Consumo: Minimização de ciclos de clock desperdiçados e liberação do barramento para outros periféricos.
🎯 3. Próximos Passos & Sequência Prática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Exercícios
🏋️ Exercícios do Curso
Lista completa das 20 unidades de exercicios organizadas em 5 módulos didáticos.
-
Módulo 1: Fundamentos (01 a 04) ---
-
Módulo 2: Conceitos Essenciais (05 a 08) ---
-
Módulo 3: Aplicação Prática (09 a 12) ---
-
Módulo 4: Padrões e Ferramentas (13 a 16) ---
-
Módulo 5: Avançado e Capstone (17 a 20) ---
Exercícios da Aula 01: Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 02: Famílias de Microcontroladores e Ambiente de Desenvolvimento 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Famílias de Microcontroladores e Ambiente de Desenvolvimento, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Famílias de Microcontroladores e Ambiente de Desenvolvimento, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 03: Organização de Memória e Mapa de Registradores em C 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Organização de Memória e Mapa de Registradores em C, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Organização de Memória e Mapa de Registradores em C, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 04: Entradas e Saídas Digitais (GPIO) e Circuitos de Interface 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Entradas e Saídas Digitais (GPIO) e Circuitos de Interface, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Entradas e Saídas Digitais (GPIO) e Circuitos de Interface, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 05: Modulação por Largura de Pulso (PWM) e Controle de Atuadores 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Modulação por Largura de Pulso (PWM) e Controle de Atuadores, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Modulação por Largura de Pulso (PWM) e Controle de Atuadores, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 06: Conversão Analógico-Digital (ADC) e Sensores Resistivos 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Conversão Analógico-Digital (ADC) e Sensores Resistivos, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Conversão Analógico-Digital (ADC) e Sensores Resistivos, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 07: Timers de Hardware e Temporização sem Bloqueio 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Timers de Hardware e Temporização sem Bloqueio, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Timers de Hardware e Temporização sem Bloqueio, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 08: Interrupções de Hardware (ISR) e Tratamento Assíncrono 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Interrupções de Hardware (ISR) e Tratamento Assíncrono, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Interrupções de Hardware (ISR) e Tratamento Assíncrono, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 09: Comunicação Serial Assíncrona (UART / USART) 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Comunicação Serial Assíncrona (UART / USART), qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Comunicação Serial Assíncrona (UART / USART), garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 10: Barramento I2C (Inter-Integrated Circuit) 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Barramento I2C (Inter-Integrated Circuit), qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Barramento I2C (Inter-Integrated Circuit), garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 11: Barramento SPI (Serial Peripheral Interface) 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Barramento SPI (Serial Peripheral Interface), qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Barramento SPI (Serial Peripheral Interface), garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 12: Redes Industriais e Automotivas: Barramento CAN 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Redes Industriais e Automotivas: Barramento CAN, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Redes Industriais e Automotivas: Barramento CAN, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 13: Introdução a Sistemas Operacionais de Tempo Real (RTOS) 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Introdução a Sistemas Operacionais de Tempo Real (RTOS), qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Introdução a Sistemas Operacionais de Tempo Real (RTOS), garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 14: Gerenciamento de Tarefas (Tasks) no FreeRTOS 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Gerenciamento de Tarefas (Tasks) no FreeRTOS, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Gerenciamento de Tarefas (Tasks) no FreeRTOS, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 15: Comunicação e Sincronização: Filas e Mutexes no FreeRTOS 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Comunicação e Sincronização: Filas e Mutexes no FreeRTOS, qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Comunicação e Sincronização: Filas e Mutexes no FreeRTOS, garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoExercícios da Aula 16: Gerenciamento de Energia e Modos de Baixo Consumo (Low Power) 🏋️
Orientações
Resolva as questões práticas implementando os algoritmos em linguagem C/C++ para sistemas embarcados. Após tentar solucionar individualmente, consulte o Gabarito Explicado para conferir a justificativa técnica e o código recomendado.
🟢 Nível 1: Básico (Conceitual e Sintaxe)
- Explique por que a arquitetura Harvard é amplamente preferida em microcontroladores de tempo real em comparação com a arquitetura Von Neumann.
- No contexto de Gerenciamento de Energia e Modos de Baixo Consumo (Low Power), qual é a função essencial do modificador
volatileao declarar ponteiros para registradores mapeados em memória?
🟡 Nível 2: Intermediário (Aplicação e Cálculos)
- Suponha um microcontrolador operando a 16 MHz. Calcule o valor do Prescaler necessário para que um timer de 16 bits gere um overflow a cada 10 milissegundos.
- Desenvolva um trecho de código em C que configure uma máscara de bits para ligar o pino GPIO 5 sem alterar o estado dos outros pinos no registrador de saída.
🔴 Nível 3: Desafio Técnico (Engenharia de Firmware)
- Projete uma função completa em C com tratamento de concorrência que implemente a rotina principal para Gerenciamento de Energia e Modos de Baixo Consumo (Low Power), garantindo tratamento de erros e sem bloqueio excessivo da CPU.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura Harvard vs. Von Neumann - **Fundamentação:** A arquitetura Harvard possui barramentos físicos separados para memória de programa (Flash) e memória de dados (SRAM). - **Vantagem Técnica:** Permite a busca simultânea da próxima instrução e a leitura/escrita de operandos de dados no mesmo ciclo de clock, eliminando o gargalo de Von Neumann e proporcionando execução estritamente determinística. ### Questão 2: Papel do Modificador `volatile` - **Fundamentação:** O modificador `volatile` instrui o compilador C a desabilitar otimizações de cache em registradores da CPU para aquela variável ou endereço de memória. - **Justificativa:** Como registradores de hardware periférico podem mudar de valor espontaneamente sem ação direta do software, a cada leitura o compilador é obrigado a acessar o endereço físico real na memória. ### Questão 3: Cálculo de Prescaler de Timer - **Cálculo:** Para uma frequência de 100 Hz (período de 10 ms) com clock de 16 MHz e timer de 16 bits (limite de 65.535 ticks): Com Prescaler = 64: Frequência do timer = 16.000.000 / 64 = 250.000 Hz. Contagem para 10 ms = 250.000 * 0,01 s = 2.500 ticks. - **Conclusão:** Configura-se Prescaler = 64 e valor de recarga (ARR) = 2.500. ### Questão 4: Manipulação de Bits para GPIO ### Questão 5: Implementação do Desafio TécnicoProjetos
🚀 Projetos do Curso
Lista completa das 20 unidades de projetos organizadas em 5 módulos didáticos.
-
Módulo 1: Fundamentos (01 a 04) ---
-
Módulo 2: Conceitos Essenciais (05 a 08) ---
-
Módulo 3: Aplicação Prática (09 a 12) ---
-
Módulo 4: Padrões e Ferramentas (13 a 16) ---
-
Módulo 5: Avançado e Capstone (17 a 20) ---
Projeto 01: Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_01_setup(void) {
// Inicialização de periféricos
}
void projeto_01_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_01_setup();
while (1) {
projeto_01_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 02: Famílias de Microcontroladores e Ambiente de Desenvolvimento 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Famílias de Microcontroladores e Ambiente de Desenvolvimento.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Famílias de Microcontroladores e Ambiente de Desenvolvimento em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_02_setup(void) {
// Inicialização de periféricos
}
void projeto_02_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_02_setup();
while (1) {
projeto_02_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 03: Organização de Memória e Mapa de Registradores em C 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Organização de Memória e Mapa de Registradores em C.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Organização de Memória e Mapa de Registradores em C em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_03_setup(void) {
// Inicialização de periféricos
}
void projeto_03_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_03_setup();
while (1) {
projeto_03_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 04: Entradas e Saídas Digitais (GPIO) e Circuitos de Interface 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Entradas e Saídas Digitais (GPIO) e Circuitos de Interface.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Entradas e Saídas Digitais (GPIO) e Circuitos de Interface em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_04_setup(void) {
// Inicialização de periféricos
}
void projeto_04_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_04_setup();
while (1) {
projeto_04_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 05: Modulação por Largura de Pulso (PWM) e Controle de Atuadores 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Modulação por Largura de Pulso (PWM) e Controle de Atuadores.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Modulação por Largura de Pulso (PWM) e Controle de Atuadores em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_05_setup(void) {
// Inicialização de periféricos
}
void projeto_05_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_05_setup();
while (1) {
projeto_05_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 06: Conversão Analógico-Digital (ADC) e Sensores Resistivos 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Conversão Analógico-Digital (ADC) e Sensores Resistivos.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Conversão Analógico-Digital (ADC) e Sensores Resistivos em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_06_setup(void) {
// Inicialização de periféricos
}
void projeto_06_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_06_setup();
while (1) {
projeto_06_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 07: Timers de Hardware e Temporização sem Bloqueio 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Timers de Hardware e Temporização sem Bloqueio.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Timers de Hardware e Temporização sem Bloqueio em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_07_setup(void) {
// Inicialização de periféricos
}
void projeto_07_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_07_setup();
while (1) {
projeto_07_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 08: Interrupções de Hardware (ISR) e Tratamento Assíncrono 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Interrupções de Hardware (ISR) e Tratamento Assíncrono.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Interrupções de Hardware (ISR) e Tratamento Assíncrono em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_08_setup(void) {
// Inicialização de periféricos
}
void projeto_08_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_08_setup();
while (1) {
projeto_08_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 09: Comunicação Serial Assíncrona (UART / USART) 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Comunicação Serial Assíncrona (UART / USART).
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Comunicação Serial Assíncrona (UART / USART) em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_09_setup(void) {
// Inicialização de periféricos
}
void projeto_09_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_09_setup();
while (1) {
projeto_09_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 10: Barramento I2C (Inter-Integrated Circuit) 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Barramento I2C (Inter-Integrated Circuit).
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Barramento I2C (Inter-Integrated Circuit) em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_10_setup(void) {
// Inicialização de periféricos
}
void projeto_10_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_10_setup();
while (1) {
projeto_10_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 11: Barramento SPI (Serial Peripheral Interface) 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Barramento SPI (Serial Peripheral Interface).
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Barramento SPI (Serial Peripheral Interface) em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_11_setup(void) {
// Inicialização de periféricos
}
void projeto_11_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_11_setup();
while (1) {
projeto_11_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 12: Redes Industriais e Automotivas: Barramento CAN 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Redes Industriais e Automotivas: Barramento CAN.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Redes Industriais e Automotivas: Barramento CAN em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_12_setup(void) {
// Inicialização de periféricos
}
void projeto_12_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_12_setup();
while (1) {
projeto_12_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 13: Introdução a Sistemas Operacionais de Tempo Real (RTOS) 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Introdução a Sistemas Operacionais de Tempo Real (RTOS).
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Introdução a Sistemas Operacionais de Tempo Real (RTOS) em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_13_setup(void) {
// Inicialização de periféricos
}
void projeto_13_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_13_setup();
while (1) {
projeto_13_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 14: Gerenciamento de Tarefas (Tasks) no FreeRTOS 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Gerenciamento de Tarefas (Tasks) no FreeRTOS.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Gerenciamento de Tarefas (Tasks) no FreeRTOS em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_14_setup(void) {
// Inicialização de periféricos
}
void projeto_14_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_14_setup();
while (1) {
projeto_14_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 15: Comunicação e Sincronização: Filas e Mutexes no FreeRTOS 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Comunicação e Sincronização: Filas e Mutexes no FreeRTOS.
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Comunicação e Sincronização: Filas e Mutexes no FreeRTOS em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_15_setup(void) {
// Inicialização de periféricos
}
void projeto_15_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_15_setup();
while (1) {
projeto_15_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Projeto 16: Gerenciamento de Energia e Modos de Baixo Consumo (Low Power) 🚀
Escopo do Projeto
Objetivo: Implementar uma solução de engenharia embarcada completa para validação prática dos conceitos de Gerenciamento de Energia e Modos de Baixo Consumo (Low Power).
🎯 1. Contexto & Desafio de Engenharia
Você atua como engenheiro de firmware em uma empresa de automação e Internet das Coisas (IoT). O cliente necessita de um subsistema confiável baseado em microcontroladores que resolva os requisitos de Gerenciamento de Energia e Modos de Baixo Consumo (Low Power) em regime contínuo (24/7), com alta imunidade a ruídos elétricos e consumo otimizado.
📋 2. Requisitos Obrigatórios de Projeto
- R1 (Inicialização e Hardware): Configuração correta de clocks e registradores periféricos na inicialização.
- R2 (Não-Bloqueio): Proibido o uso de laços de espera bloqueantes (
delaycego) na rotina crítica de controle. - R3 (Tratamento de Exceções): Detecção de timeouts de hardware com sinalização via código de erro ou LED de diagnóstico.
- R4 (Modularidade): Código organizado em arquivos de cabeçalho (
.h) e implementação (.c).
🔌 3. Diagrama do Circuito & Conexões
graph LR
Fonte["⚡ Fonte 3.3V / 5V"] --> MCU["🧠 Microcontrolador (ESP32 / STM32)"]
Sensores["📡 Sensores / Sinais"] -->|GPIO / I2C / SPI| MCU
MCU -->|PWM / UART / CAN| Atuadores["⚙️ Atuador / Telemetria"]
style Fonte fill:#fff3e0,stroke:#e65100
style MCU fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style Sensores fill:#e8f5e9,stroke:#2e7d32
style Atuadores fill:#f3e5f5,stroke:#7b1fa2
💻 4. Esqueleto de Código de Partida
#include <stdint.h>
#include <stdbool.h>
void projeto_16_setup(void) {
// Inicialização de periféricos
}
void projeto_16_run(void) {
// Loop de controle com temporização via ticks
}
int main(void) {
projeto_16_setup();
while (1) {
projeto_16_run();
}
return 0;
}
📦 5. Critérios de Avaliação e Entrega
- Código-fonte compilando sem warnings com flag
-Wall. - Simulação validada no Wokwi ou gravação física em hardware de bancada.
- Relatório sucinto contendo diagrama de tempo e log de execução capturado via terminal serial.
Quizzes
🧠 Quizzes de Fixação
Lista completa das 20 unidades de quizzes organizadas em 5 módulos didáticos.
-
Módulo 1: Fundamentos (01 a 04) ---
-
Módulo 2: Conceitos Essenciais (05 a 08) ---
-
Módulo 3: Aplicação Prática (09 a 12) ---
-
Módulo 4: Padrões e Ferramentas (13 a 16) ---
-
Módulo 5: Avançado e Capstone (17 a 20) ---
🧠 Quiz 01 – Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores
- Qual é o princípio fundamental abordado em Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Introdução aos Sistemas Embarcados e Arquitetura de Microcontroladores, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 02 – Famílias de Microcontroladores e Ambiente de Desenvolvimento
- Qual é o princípio fundamental abordado em Famílias de Microcontroladores e Ambiente de Desenvolvimento?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Famílias de Microcontroladores e Ambiente de Desenvolvimento, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 03 – Organização de Memória e Mapa de Registradores em C
- Qual é o princípio fundamental abordado em Organização de Memória e Mapa de Registradores em C?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Organização de Memória e Mapa de Registradores em C, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 04 – Entradas e Saídas Digitais (GPIO) e Circuitos de Interface
- Qual é o princípio fundamental abordado em Entradas e Saídas Digitais (GPIO) e Circuitos de Interface?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Entradas e Saídas Digitais (GPIO) e Circuitos de Interface, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 05 – Modulação por Largura de Pulso (PWM) e Controle de Atuadores
- Qual é o princípio fundamental abordado em Modulação por Largura de Pulso (PWM) e Controle de Atuadores?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Modulação por Largura de Pulso (PWM) e Controle de Atuadores, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 06 – Conversão Analógico-Digital (ADC) e Sensores Resistivos
- Qual é o princípio fundamental abordado em Conversão Analógico-Digital (ADC) e Sensores Resistivos?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Conversão Analógico-Digital (ADC) e Sensores Resistivos, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 07 – Timers de Hardware e Temporização sem Bloqueio
- Qual é o princípio fundamental abordado em Timers de Hardware e Temporização sem Bloqueio?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Timers de Hardware e Temporização sem Bloqueio, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 08 – Interrupções de Hardware (ISR) e Tratamento Assíncrono
- Qual é o princípio fundamental abordado em Interrupções de Hardware (ISR) e Tratamento Assíncrono?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Interrupções de Hardware (ISR) e Tratamento Assíncrono, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 09 – Comunicação Serial Assíncrona (UART / USART)
- Qual é o princípio fundamental abordado em Comunicação Serial Assíncrona (UART / USART)?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Comunicação Serial Assíncrona (UART / USART), qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 10 – Barramento I2C (Inter-Integrated Circuit)
- Qual é o princípio fundamental abordado em Barramento I2C (Inter-Integrated Circuit)?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Barramento I2C (Inter-Integrated Circuit), qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 11 – Barramento SPI (Serial Peripheral Interface)
- Qual é o princípio fundamental abordado em Barramento SPI (Serial Peripheral Interface)?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Barramento SPI (Serial Peripheral Interface), qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 12 – Redes Industriais e Automotivas: Barramento CAN
- Qual é o princípio fundamental abordado em Redes Industriais e Automotivas: Barramento CAN?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Redes Industriais e Automotivas: Barramento CAN, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 13 – Introdução a Sistemas Operacionais de Tempo Real (RTOS)
- Qual é o princípio fundamental abordado em Introdução a Sistemas Operacionais de Tempo Real (RTOS)?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Introdução a Sistemas Operacionais de Tempo Real (RTOS), qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 14 – Gerenciamento de Tarefas (Tasks) no FreeRTOS
- Qual é o princípio fundamental abordado em Gerenciamento de Tarefas (Tasks) no FreeRTOS?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Gerenciamento de Tarefas (Tasks) no FreeRTOS, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 15 – Comunicação e Sincronização: Filas e Mutexes no FreeRTOS
- Qual é o princípio fundamental abordado em Comunicação e Sincronização: Filas e Mutexes no FreeRTOS?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Comunicação e Sincronização: Filas e Mutexes no FreeRTOS, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 16 – Gerenciamento de Energia e Modos de Baixo Consumo (Low Power)
- Qual é o princípio fundamental abordado em Gerenciamento de Energia e Modos de Baixo Consumo (Low Power)?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Gerenciamento de Energia e Modos de Baixo Consumo (Low Power), qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 17 – Conectividade Sem Fio: Pilhas Wi-Fi e Bluetooth Low Energy (BLE)
- Qual é o princípio fundamental abordado em Conectividade Sem Fio: Pilhas Wi-Fi e Bluetooth Low Energy (BLE)?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Conectividade Sem Fio: Pilhas Wi-Fi e Bluetooth Low Energy (BLE), qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 18 – Telemetria e Mensageria IoT com o Protocolo MQTT
- Qual é o princípio fundamental abordado em Telemetria e Mensageria IoT com o Protocolo MQTT?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Telemetria e Mensageria IoT com o Protocolo MQTT, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 19 – Segurança em Firmware e Atualizações Remotas (OTA)
- Qual é o princípio fundamental abordado em Segurança em Firmware e Atualizações Remotas (OTA)?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Segurança em Firmware e Atualizações Remotas (OTA), qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
🧠 Quiz 20 – Projeto Capstone: Estação IoT de Monitoramento Autônoma
- Qual é o princípio fundamental abordado em Projeto Capstone: Estação IoT de Monitoramento Autônoma?
- ( ) Utilizar laços bloqueantes em alta frequência sem controle de tempo.
- (x) Garantir controle determinístico, confiabilidade de hardware e gestão eficiente de recursos.
- ( ) Desabilitar todos os mecanismos de interrupção e temporizadores.
-
( ) Ignorar as especificações elétricas do fabricante do microcontrolador.
-
Por que o uso do modificador
volatileé mandatório em sistemas embarcados? - (x) Para impedir que o compilador otimize acessos a variáveis modificadas por hardware ou ISR.
- ( ) Para aumentar automaticamente o clock da CPU.
- ( ) Para converter variáveis de ponto flutuante em números inteiros.
-
( ) Para criptografar o código binário na memória Flash.
-
Em relação a Projeto Capstone: Estação IoT de Monitoramento Autônoma, qual característica diferencia um microcontrolador de um microprocessador?
- ( ) Microprocessadores integram CPU, Flash e RAM em um único chip monolítico.
- (x) Microcontroladores integram processador, memórias (RAM/Flash) e periféricos no mesmo silício.
- ( ) Microcontroladores operam sempre com frequências acima de 4 GHz.
-
( ) Microcontroladores não possuem registradores internos.
-
Qual é a conduta técnica correta ao escrever uma Rotina de Serviço de Interrupção (ISR)?
- ( ) Executar rotinas lentas como gravação síncrona em Flash e chamadas longas de printf.
- (x) Manter a rotina o mais rápida possível, apenas sinalizando flags ou eventos para a tarefa principal.
- ( ) Inserir chamadas delay para estabilizar a tensão elétrica.
-
( ) Alocar dinamicamente blocos de memória na heap dentro da interrupção.
-
Qual é a vantagem da arquitetura Harvard em microcontroladores de tempo real?
- (x) Barramentos independentes para instruções e dados, permitindo acesso simultâneo em um ciclo.
- ( ) Menor número de pinos de encapsulamento físico no CI.
- ( ) Compatibilidade nativa exclusiva com a arquitetura x86.
-
( ) Impossibilidade de execução de código compilado em C.
-
Como um engenheiro de firmware deve tratar o efeito de bouncing mecânico em botões?
- ( ) Ignorar o fenômeno pois ele não interfere em circuitos digitais.
- (x) Aplicar filtragem RC por hardware ou debouncing temporal em software por temporização/estados.
- ( ) Elevar a frequência do cristal de clock para mascarar o ruído elétrico.
-
( ) Configurar o pino de entrada como saída analógica de alta impedância.
-
Qual protocolo serial síncrono utiliza 4 linhas (MOSI, MISO, SCK e CS) em regime Full-Duplex?
- ( ) I2C.
- ( ) UART.
- (x) SPI (Serial Peripheral Interface).
-
( ) CAN Bus.
-
Qual é o papel fundamental do Escalonador (Scheduler) em um Sistema Operacional de Tempo Real (RTOS)?
- ( ) Traduzir comandos em linguagem assembly para C++.
- (x) Determinar qual tarefa deve executar a cada instante de tempo com base em prioridades.
- ( ) Queimar fusíveis térmicos de proteção na placa de circuito impresso.
-
( ) Desligar a alimentação de todos os pinos de GPIO.
-
Em dispositivos IoT a bateria, qual técnica é mais eficaz para estender a autonomia operacional para anos?
- ( ) Deixar a CPU sempre em clock máximo processando laços vazios.
- (x) Colocar o microcontrolador em Deep Sleep na maior parte do tempo e despertar apenas para medições periódicas.
- ( ) Trocar o firmware a cada ciclo de transmissão.
-
( ) Desativar os resistores internos de pull-up.
-
Qual protocolo de camada de aplicação baseado em Publish/Subscribe é padrão de mercado para telemetria IoT em embarcados?
- ( ) FTP.
- ( ) Telnet.
- (x) MQTT.
- ( ) POP3.
Slides
Configuração
Ambientes de Desenvolvimento e Simulação 🛠️
Guias completos para configurar suas ferramentas profissionais de desenvolvimento para Sistemas Embarcados e IoT.
-
PlatformIO IDE (VS Code) --- O ambiente profissional mais robusto para C/C++ embarcado.
-
Simulador Wokwi --- Simule circuitos complexos, Wi-Fi e sensores sem hardware físico.
-
Drivers & ESP-IDF --- Comunicação USB-Serial e framework nativo Espressif.
-
Arduino IDE 2.x --- Prototipagem rápida e ecossistema de bibliotecas.
Setup 01: Ambiente de Desenvolvimento com VS Code & PlatformIO 🛠️
O PlatformIO IDE é o ecossistema profissional padrão para desenvolvimento de sistemas embarcados e IoT.
1. Pré-Requisitos
- Ter o Visual Studio Code instalado no sistema.
- Ter o interpretador Python 3.10+ instalado e adicionado ao
PATH. - Ter o Git instalado.
2. Instalação do PlatformIO
- Abra o VS Code.
- Acesse a aba de Extensões (
Ctrl + Shift + X). - Pesquise por PlatformIO IDE (oficial da PlatformIO Foundation).
- Clique em Install e aguarde a conclusão da instalação automática do Core.
- Reinicie o VS Code quando solicitado.
3. Criando seu Primeiro Projeto
- Clique no ícone de formiga do PlatformIO na barra lateral.
- Selecione Open -> New Project.
- Escolha o nome
meu_primeiro_firmware. - Selecione a placa (ex:
Espressif ESP32 Dev Module). - Framework:
ArduinoouESP-IDF.
Setup 02: Simulação de Circuitos e Firmware com Wokwi 🌐
O Wokwi é um simulador online avançado que permite desenvolver código para ESP32, Arduino, Raspberry Pi Pico e STM32 sem a necessidade de comprar hardware físico.
1. Acessando a Plataforma
- Acesse o simulador oficial: https://wokwi.com
- Crie uma conta gratuita para salvar e compartilhar seus circuitos e firmwares.
2. Placas Suportadas no Curso
- ESP32 DevKit V1: Simulação de Wi-Fi real, Bluetooth BLE, FreeRTOS dual-core e periféricos.
- Arduino Uno (ATmega328P): Simulação de registradores de 8 bits e arquitetura AVR.
3. Integração com o VS Code
Você pode rodar as simulações do Wokwi diretamente dentro do seu VS Code:
1. Instale a extensão Wokwi Simulator no VS Code.
2. Obtenha sua licença gratuita de desenvolvedor com o comando Wokwi: Request a License.
3. Abra o projeto e execute a simulação com um clique.
Setup 03: Toolchain ESP-IDF e Drivers USB Serial 🔌
Para gravar firmwares em placas físicas ESP32, é fundamental instalar os drivers USB para comunicação com os chips de conversão serial.
1. Drivers USB Serial Comuns
A maioria das placas de desenvolvimento utiliza um dos dois chips: - Silicon Labs CP2102 / CP2104: Driver oficial disponível no site da Silicon Labs. - WCH CH340 / CH341: Driver amplamente utilizado em placas econômicas.
2. Verificação da Porta Serial
No terminal ou no Gerenciador de Dispositivos:
- No Windows: Verifique em Portas (COM e LPT) se aparece Silicon Labs CP210x (COMx).
- No Linux: Execute ls -l /dev/ttyUSB* ou ls -l /dev/ttyACM*.
Setup 04: Arduino IDE 2.x com Pacote de Placas ESP32 ⚡
Para projetos rápidos e prototipagem com bibliotecas prontas da comunidade Arduino.
1. Instalação da IDE
- Baixe e instale a versão mais recente em arduino.cc/en/software.
2. Adicionando a URL do ESP32
- Vá em Arquivo -> Preferências.
- No campo URLs do Gerenciador de Placas Adicionais, adicione:
- Abra o Gerenciador de Placas, pesquise por
esp32por Espressif Systems e clique em Instalar.
Sobre
Sobre o Curso 🎓
O curso LINUX – Fundamentos e Prática foi desenvolvido para capacitar iniciantes no uso do sistema operacional que move a internet, servidores e o desenvolvimento de software moderno.
🚀 Por que aprender Linux?
- Soberania Digital: Entenda como seu computador realmente funciona.
- Carreira: Fundamental para DevOps, Backend, Segurança e Cloud.
- Eficiência: O terminal permite automatizar tarefas em segundos.
👨🏫 Metodologia
Utilizamos uma abordagem prática onde cada conceito teórico é imediatamente aplicado no terminal. O curso foca em distribuições baseadas em Debian (como Ubuntu e Mint), que são o padrão de mercado para desktop e servidores.
Roadmap do Projeto 🗺️
Acompanhe a evolução do seu aprendizado e do conteúdo do curso.
🟢 Fase 1: Fundamentos (Concluído)
- Introdução e História do Software Livre
- Instalação em VM e Dual Boot
- Navegação no Sistema de Arquivos
- Comandos essenciais (
ls,cd,mkdir)
🟡 Fase 2: Administração (Em andamento)
- Permissões de arquivos (
chmod,chown) - Gerenciamento de usuários e grupos
- Gerenciamento de pacotes (
apt) - Monitoramento de recursos (
top,htop)
🟠 Fase 3: Automação e Redes
- Scripts complexos em Bash
- Configuração de redes e SSH
- Agendamento de tarefas (
cron)
🔴 Fase 4: DevOps e Projeto Final
- Docker para desenvolvedores
- Configuração de servidores Web
- Apresentação do Projeto Integrador
Materiais Extras 📚
Aprimore seus conhecimentos com recursos adicionais selecionados.
🐧 Documentação Oficial
⌨️ Prática de Terminal
📖 Livros Recomendados
- A Linha de Comando Linux (William Shotts)
- Descobrindo o Linux (Eric Wilder)
🛠️ Ferramentas
- VS Code: Com extensão Remote - SSH.
- MobyXterm: Cliente SSH para Windows.
- VirtualBox: Para laboratórios locais.
🏷️ Índice de Tags Didáticas
Navegue pelas aulas, exercícios e projetos do curso organizados por temas, tecnologias e conceitos fundamentais:
tags.md:145-167/name
Versão para Impressão
Esta página foi gerada automaticamente para impressão.