💻 03 — Programação Aplicada a Sistemas Elétricos
Navegação Estrutural e Hubs
📍 Área: 06 Computação e Telecomunicações | 🏠 Hub Principal ⬅️ Disciplina Anterior: 02 Pensamento Computacional | ➡️ Próxima Disciplina: 04 Comunicações de Dados e Redes de Computadores
🧭 1. Visão Geral e Propósito Epistemológico
A disciplina de Programação Aplicada a Sistemas Elétricos estabelece a ponte direta entre a ciência da computação de baixo nível e a operação física dos sistemas eletroenergéticos. Longe de limitar-se à codificação genérica de algoritmos em ambientes de escritório, esta disciplina capacita o engenheiro eletricista a desenvolver software robusto, determinístico e de alta performance voltado para:
- Sistemas Embarcados de Missão Crítica: Microcontroladores industriais (famílias ARM Cortex-M e Texas Instruments C2000 DSP) operando em regime bare-metal ou sob sistemas operacionais de tempo real (FreeRTOS) em relés IEDs (norma IEC 61850), inversores solares e conversores de tração;
- Controle Direto de Hardware via Linguagem C (ISO C99): Manipulação cirúrgica de registradores mapeados em memória (Memory-Mapped I/O), operações bitwise com tempos de resposta de microssegundos e atendimento a interrupções de hardware com latência determinística;
- Simulação e Modelagem Numérica em Larga Escala (Python Científico): Extração fasorial por Transformada Discreta de Fourier de 1 ciclo, montagem de matrizes nodais de admitâncias esparsas () e resolução de equações não lineares de fluxo de carga via algoritmo de Newton-Raphson com fatoração triangular LU.
📊 2. Matriz de Competências e Habilidades Técnicas
| Domínio de Competência | Fundamentação Teórica | Ferramental Computacional / Padrões | Aplicação Prática em Engenharia Elétrica |
|---|---|---|---|
| 1. Arquitetura e Toolchain | Arquiteturas Harvard vs. von Neumann; RISC vs. CISC; Compilação Cruzada | Toolchain GNU (arm-none-eabi-gcc, ld, as, objcopy); Linker Scripts .ld | Dimensionamento de seções de memória Flash ROM (.text, .rodata) e SRAM (.data, .bss, Stack) |
| 2. Tipagem e Bitwise | Padrão ISO C99; Ponto Flutuante IEEE 754; Semântica do qualificador volatile | <stdint.h> (uint8_t, int16_t, uint32_t); Operadores Bitwise (&, |, ^, ~, <<, >>) | Controle de bits de habilitação de PWM, trip de disjuntores e decodificação de telemetria Modbus |
| 3. Gestão de Memória e DMA | Aritmética de Ponteiros (); Decaimento de Vetores; Passagem por Referência | Operadores & e *; Qualificadores const; Controladores DMA em Modo Circular | Buffers circulares rápidos e arquitetura Ping-Pong para amostragem síncrona ADC sem carga na CPU |
| 4. MMIO e Interrupções | Memory-Mapped I/O; Padrão CMSIS; Controlador de Interrupções NVIC | Sobreposição de struct em C; Rotinas ISR; Salvamento de contexto automático (Stacking) | Desarme ultrarrápido de disjuntores em faltas de sobrecorrente e temporização periódica de controle |
| 5. Algoritmos Numéricos | Transformada Discreta de Fourier de 1 ciclo; True RMS discreto; Álgebra Linear Esparsa | C99 (<complex.h>); Python (scipy.sparse, NumPy); Newton-Raphson com Fatoração LU | Extração de fasores fundamentais de , montagem esparsa da Matriz e Fluxo de Carga |
🎓 3. Estrutura Curricular e Grade de Aulas (Gold Standard)
flowchart TD MOC["03 Programação Aplicada a Sistemas Elétricos"] --> A1["Aula 01: Arquitetura Embarcada e Toolchain"] MOC --> A2["Aula 02: Linguagem C e Operadores Bitwise"] MOC --> A3["Aula 03: Ponteiros e Gestão de Memória"] MOC --> A4["Aula 04: Memory-Mapped I/O e ISR"] MOC --> A5["Aula 05: Algoritmos Numéricos em C e Python"] A1 --> A2 A2 --> A3 A3 --> A4 A4 --> A5
Grade Detalhada de Aulas:
Aula 01 — Arquitetura de Sistemas Embarcados e Cadeia de Compilação Cruzada
- Ementa Analítica: Sistemas embarcados em engenharia elétrica (IEDs, inversores de potência, medidores inteligentes); Comparação arquitetural: von Neumann (gargalo de barramento único) vs. Harvard (barramentos de instrução e dados separados); Processadores RISC ARM Cortex-M; O conceito e a necessidade da compilação cruzada (Cross-Compilation Host x86_64 Target ARM); As 4 etapas formais da toolchain GNU: Pré-processamento (
cpp), Compilação C (gcc), Montagem (as) e Ligação (ld); Anatomia de seções de memória binárias ELF:.text,.rodata,.data,.bss, Heap e Stack; Papel do Linker Script (.ld) e rotinas de startup; Formatos binários (ELF, Intel HEX, Raw BIN) e gravação via OpenOCD / SWD. - Diagrama Técnico:
![[prog_aula01_cross_compilation_toolchain_embarcados.svg]]
Aula 02 — Linguagem C Aplicada à Engenharia: Tipos Primitivos, Modificadores e Operadores Bitwise
- Ementa Analítica: Padrão ISO C99 e a eliminação de ambiguidades via biblioteca
<stdint.h>(uint8_t,int16_t,uint32_t); Aritmética de complemento de dois para inteiros com sinal; Ponto flutuante IEEE 754 de precisão simples e dupla e custo de emulação de software vs hardware FPU; O modificador críticovolatilee os riscos de otimizações agressivas de compilador (-O2/-O3) em laços de espera de registradores; Modificadores de escopo e armazenamento:const(alocação em Flash ROM),static(encapsulamento de arquivo e retenção local) eextern; Álgebra booleana em registradores de 32 bits: operadores bitwise (&,|,^,~,<<,>>); Os quatro idiomas canônicos: setar bit, limpar bit, alternar bit e testar bit; Mascaramento de campos contíguos (bitmasking). - Diagrama Técnico:
![[prog_aula02_tipos_dados_bitwise_registradores.svg]]
Aula 03 — Ponteiros, Aritmética de Endereços e Passagem por Referência
- Ementa Analítica: Modelo linear de endereçamento de memória de 32 bits e alinhamento natural de barramento (armadilhas de desalinhamento e UsageFault); Operadores de endereço (
&) e derreferenciação (*); Aritmética formal de ponteiros e escala automática de tipos (); Subtração de ponteiros e tipoptrdiff_t; Decaimento de vetores para ponteiros (Array Decay) e a identidade canônicavetor[i] == *(vetor + i); Passagem de parâmetros por referência para buffers de oscilografia; Qualificadoresconstem ponteiros (dado constante vs. ponteiro constante); Implementação de Buffers Circulares (Ring Buffer) com otimização bitwise de potência de 2; Controlador DMA (Direct Memory Access) e arquitetura de Buffer Duplo (Ping-Pong Buffer) com interrupções Half-Transfer e Transfer-Complete. - Diagrama Técnico:
![[prog_aula03_ponteiros_aritmetica_memoria_dma.svg]]
Aula 04 — Mapeamento de Memória, Registradores de Hardware e Interrupções em C
- Ementa Analítica: Paradigma de Entrada e Saída Mapeada em Memória (MMIO) no espaço linear de ; Barramentos de periféricos AHB e APB; Padrão CMSIS da ARM para abstração de registradores através da sobreposição de estruturas
structem C; Definição e uso de ponteiros base de periféricos (GPIOA->ODR,GPIOA->BSRR); Controlador de Interrupções Vetorizadas (NVIC); Vantagens da abordagem por interrupção frente ao polling; Tabela de Vetores de Interrupção na Flash; Ciclo de interrupção: detecção assíncrona, salvamento automático de contexto por hardware (Stacking de 8 registradores em 12 ciclos), execução da ISR, limpeza mandatória da flag pendente (EXTI->PR) e desempilhamento (Unstacking); Boas práticas em ISRs: brevidade, ausência de laços bloqueantes, comunicação via variáveisvolatile; Prevenção de condições de corrida e seções críticas atômicas (__disable_irq()e__enable_irq()). - Diagrama Técnico:
![[prog_aula04_memory_mapped_io_interrupcoes_isr.svg]]
Aula 05 — Algoritmos Numéricos em C e Python: Fasores, Matrizes e Solução de Circuitos
- Ementa Analítica: Arquitetura de software híbrida: C99 na borda de tempo real e Python na modelagem analítica central; Algoritmo da Transformada Discreta de Fourier de 1 ciclo (Filtro Cosseno/Seno de ciclo completo) para extração fasorial da componente fundamental de ; Rejeição teórica total de harmônicos inteiros e implementação recursiva em janela deslizante ; Cálculo de True RMS, potência ativa (), reativa (), aparente () e fator de potência () em tempo real; Suporte nativo a números complexos em C99 (
<complex.h>) e Python; Modelagem computacional de redes de potência: montagem vetorizada da Matriz Nodal de Admitâncias () em formato esparso CSR/LIL (scipy.sparse); Resolução do problema não linear de Fluxo de Potência via Método de Newton-Raphson com Matriz Jacobiana e Fatoração Triangular LU; Convergência quadrática local e análise de sensibilidade. - Diagrama Técnico:
![[prog_aula05_algoritmos_numericos_fasores_matriz_admitancia.svg]]
📚 4. Mapeamento das Materiais Teóricos de Referência e Materiais de Apoio
Os arquivos didáticos oficiais presentes no diretório da disciplina cobrem os seguintes módulos programáticos:
| Arquivo PDF Oficial | Título e Foco Programático | Aulas Vinculadas |
|---|---|---|
00 - Plano de Ensino.pdf | Diretrizes pedagógicas, ementa curricular oficial, competências e critérios avaliativos. | Todas as Aulas |
01 - Bases Para Programação de Sistemas Embarcados.pdf | Arquitetura de microcontroladores, bases de numeração, portas lógicas e ambientes de desenvolvimento. | Aula 01 |
02 - Linguagem C Recursos Básicos.pdf | Tipos primitivos, operadores lógicos/relacionais, estruturas de controle (if, switch, for, while) e vetores. | Aula 02 |
03 - Linguagem C Funções.pdf | Declaração de funções, passagem de parâmetros por valor e referência, recursão e bibliotecas padrão. | Aula 03 |
04 - Linguagem C Nos Sitemas Embarcados.pdf | Mapeamento de registradores de hardware, temporizadores, conversores ADC, rotinas ISR e testes. | Aula 04, Aula 05 |
🔗 5. Conexões e Matriz de Dependência Curricular
Dependências Anteriores (Pré-Requisitos):
- 01 Lógica de Programação: Algoritmos fundamentais, estruturas de decisão e laços de repetição.
- 02 Pensamento Computacional: Decomposição de sistemas, níveis de abstração e complexidade assintótica Big-O.
- 02 Circuitos Elétricos: Leis de Kirchhoff, cálculo fasorial senoidal em regime permanente e potência complexa.
Continuidade e Desdobramentos Posteriores:
- 04 Comunicações de Dados e Redes de Computadores: Pilha TCP/IP, sockets de rede em C, protocolos de enlace e tempo de propagação.
- 05 Redes Industriais: Protocolos determinísticos de automação em tempo real (Modbus-RTU, DNP3 e IEC 61850).
- 05 Microprocessadores: Arquitetura interna de microprocessadores, controladores de barramento e assembly nativo.
- 07 Planejamento e Análise de Sistemas de Energia Elétrica: Solução computacional de redes de centenas de barras via fluxo de carga e curto-circuito.
- 09 Sistemas de Proteção e Medição: Implementação de funções de proteção numérica (ANSI 50/51/21/87) em firmware de relés IEDs.