💻 03 — Programação Aplicada a Sistemas Elétricos

Navegação Estrutural e Hubs


🧭 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:

  1. 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;
  2. 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;
  3. 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ênciaFundamentação TeóricaFerramental Computacional / PadrõesAplicação Prática em Engenharia Elétrica
1. Arquitetura e ToolchainArquiteturas Harvard vs. von Neumann; RISC vs. CISC; Compilação CruzadaToolchain GNU (arm-none-eabi-gcc, ld, as, objcopy); Linker Scripts .ldDimensionamento de seções de memória Flash ROM (.text, .rodata) e SRAM (.data, .bss, Stack)
2. Tipagem e BitwisePadrã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 DMAAritmética de Ponteiros (); Decaimento de Vetores; Passagem por ReferênciaOperadores & e *; Qualificadores const; Controladores DMA em Modo CircularBuffers circulares rápidos e arquitetura Ping-Pong para amostragem síncrona ADC sem carga na CPU
4. MMIO e InterrupçõesMemory-Mapped I/O; Padrão CMSIS; Controlador de Interrupções NVICSobreposiçã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éricosTransformada Discreta de Fourier de 1 ciclo; True RMS discreto; Álgebra Linear EsparsaC99 (<complex.h>); Python (scipy.sparse, NumPy); Newton-Raphson com Fatoração LUExtraçã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ítico volatile e 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) e extern; Á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 tipo ptrdiff_t; Decaimento de vetores para ponteiros (Array Decay) e a identidade canônica vetor[i] == *(vetor + i); Passagem de parâmetros por referência para buffers de oscilografia; Qualificadores const em 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 struct em 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áveis volatile; 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 OficialTítulo e Foco ProgramáticoAulas Vinculadas
00 - Plano de Ensino.pdfDiretrizes pedagógicas, ementa curricular oficial, competências e critérios avaliativos.Todas as Aulas
01 - Bases Para Programação de Sistemas Embarcados.pdfArquitetura de microcontroladores, bases de numeração, portas lógicas e ambientes de desenvolvimento.Aula 01
02 - Linguagem C Recursos Básicos.pdfTipos primitivos, operadores lógicos/relacionais, estruturas de controle (if, switch, for, while) e vetores.Aula 02
03 - Linguagem C Funções.pdfDeclaraçã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.pdfMapeamento 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):

Continuidade e Desdobramentos Posteriores: