Histórico de releases
Acompanhe as versões do firmware do AEM-60DC8 — release notes públicas, binários disponíveis sob solicitação.
- v1.2307 de jun. de 2026Estável
- Contador de erros de CRC honesto em barramento multidrop: o painel MODBUS do LCD e os registradores 40074/40075 mostravam ~6–8% de erro num barramento saudável — eram, na verdade, as respostas dos OUTROS escravos sendo contadas como erro de linha.
- Num barramento com vários escravos, cada um recebe fisicamente as respostas dos demais; o parser valida o CRC antes do filtro de endereço, então a resposta do vizinho (mal interpretada como requisição) falhava no CRC e inflava o contador.
- Agora só conta erro de CRC em frames endereçados a este escravo (ou broadcast): num barramento limpo o valor passa a ser ≈0. A visibilidade total (incl. tráfego estrangeiro) fica preservada no histograma de diagnóstico.
- Mudança apenas de exibição/diagnóstico — sem caminho de controle, sem mudança no protocolo Modbus (C-001 inalterado). Revisado pela device-qa (aprovado para EVT, sem P0).
Binário disponível sob solicitação ([email protected])
- v1.2207 de jun. de 2026Estável
- Novo registrador de RESET de diagnóstico (Modbus W-only 40034, magic 0xD1A6): zera de uma vez os totais de frames RX/TX, o contador agregado de CRC e os contadores de erro UART (FE/NE/PE/TX) e de diagnóstico de TX, dando uma linha de base "desde o reset".
- Corrige o falso alarme de "~5% de erros" na interface: aquele percentual é um acumulado-desde-o-boot (estoque histórico de uma janela de contenção passada), não a taxa ao vivo — o barramento atual está limpo (delta de CRC em 4 s = 0).
- Escrita protegida por magic (FC16 qty=1): qualquer valor diferente de 0xD1A6 é rejeitado (`ILLEGAL_DATA_VALUE`), evitando que uma varredura de registradores apague a evidência; a leitura de 40034 retorna 0.
- Contadores são apenas de diagnóstico (sem dependência de watchdog/heartbeat) — o reset não tem efeito colateral. Contrato C-001 rotacionado; requer espelho na Utility.
Binário disponível sob solicitação ([email protected])
- v1.2106 de jun. de 2026Estável
- TX RS-485 não-bloqueante (corrige RR-005): a transmissão Modbus passou a ser por interrupção/DMA, liberando a CPU durante o envio. Elimina o reset por IWDG que ocorria sob leitura sustentada de blocos grandes (96 registradores consecutivos a 9600 bps).
- Liberação determinística do barramento: o sinal DE é baixado dentro da ISR de TX-complete (USART TC), na escala de interrupção e não do escalonador, garantindo turnaround RS-485 consistente.
- Novo bloco de diagnóstico de TX (Modbus R/O 40226–40233): contadores TX_STARTED, TX_TC_CB, timeouts e abortos, para provar em campo que a transmissão não deixa estado pendente.
- Diagnóstico de heartbeat do watchdog (Modbus R/O 40220–40225): janelas de heartbeat ausente por tarefa e margem ao timeout do IWDG, tornando a correção verificável em silício.
- Contrato C-001 rotacionado (novos blocos 40220–40225 e 40226–40233); requer espelho na Utility.
Binário disponível sob solicitação ([email protected])
- v1.2005 de jun. de 2026Estável
- Contadores de erro de RX UART no Modbus (R/O 40030–40033): expõe framing (FE), ruído (NE), paridade (PE) e erro de TX separadamente do contador agregado de CRC, para diagnóstico de campo sem SWD.
- Nova página 2 do dashboard DIAG_HEALTH no LCD ("UART RX"): espelha FE/NE/PE/TxE + CRC; o painel agora cicla 3 páginas (utilização / pressão RTOS / erros UART).
- Flush determinístico de RX no boot/reconfiguração: descarta bytes capturados durante a estabilização da linha UART, evitando que um frame parcial de power-on seja lido como erro de CRC na primeira leitura.
- Aditivo, sem mudança no caminho crítico de RX/TX. Contrato C-001 rotacionado (novo bloco 40030–40033); requer espelho na Utility.
Binário disponível sob solicitação ([email protected])
- v1.1905 de jun. de 2026Estável
- Auto-repeat com aceleração nos botões UP/DOWN: segurar agora repete com curva controlada (500 ms → 250 → 100 → 50 ms) em vez de emitir um único evento longo.
- Aceleração de passo (1 → 5 → 10) nos editores de ponto flutuante (limiares V/NTC, calibração, debounce de DI), com clamp de mín/máx — sem wrap silencioso.
- Perfis por contexto: editores numéricos rápidos, navegação de menu (200 ms fixo) e entrada de senha (400 ms fixo); páginas principais/confirmações preservam as ações deliberadas de pressionar-e-segurar (2 s).
- Sem mudança na camada Modbus — C-001 inalterado.
Binário disponível sob solicitação ([email protected])
- v1.1805 de jun. de 2026Estável
- Novo registrador Modbus de idioma da interface `MBMAP_USER_LANGUAGE` (40067, R/W): valores {0=EN, 1=PT, 2=ES}, padrão PT. Um master pode trocar o idioma do dispositivo remotamente, sem usar o menu do LCD.
- Escrita validada (FC16 qty=1): valores fora da faixa são rejeitados (`ILLEGAL_DATA_VALUE`), aplicados ao vivo na i18n do LCD e persistidos em EEPROM.
- O bootloader lê o mesmo byte no boot, localizando também suas próprias telas — idioma consistente entre app e BL.
- Contrato C-001 rotacionado (b9cea6a0 → c3b0c3b5); a Utility deve adicionar o registrador 40067.
Binário disponível sob solicitação ([email protected])
- v1.1705 de jun. de 2026Estável
- Primeiro build released que substitui a v1.16: incorpora toda a remediação de alarme da v1.16 e fecha o gate de bancada M1/M2 sobre o candidato assinado v1.17.
- Correção i18n (ES): rótulo de entrada de senha `STR_PWD_VALUE` de "Pwd:" para "Contr:", alinhando com as demais telas de senha em espanhol (apenas LCD, sem mudança de comportamento).
- Sem mudança na camada Modbus — C-001 não rotacionado.
Binário disponível sob solicitação ([email protected])
- v1.1604 de jun. de 2026Estável
- Engine de alarme por canal unificado: o relé agora honra os delays UV/OV e a histerese configurados por canal (Modbus 40400–40423), em vez do delay/histerese globais usados antes.
- Precedência de falha de sensor: em amostra não-finita ou stuck (Fase-4), a causa publicada em 40300 + LED + ALARM_SUMMARY passa a ser SENSOR_FAULT (antes era reportado erroneamente UV), sem contaminar os contadores UV/OV.
- Validação Modbus mais estrita: faixas com v_min ≥ v_max são rejeitadas (`ILLEGAL_DATA_VALUE 0x03`) tanto em escrita simples quanto em whole-frame FC16.
- Reset determinístico após reconfiguração: ao escrever novo threshold/delay, a contagem PENDING em curso é cancelada e o canal reavalia do NORMAL com a nova configuração.
- Snapshot atômico da configuração: o avaliador 10 Hz lê toda a configuração do canal em uma única seção crítica, eliminando frames-torn durante um FC16.
Binário disponível sob solicitação ([email protected])
- v1.1504 de jun. de 2026Estável
- Novo bloco R/O `RELAY_OVERRIDE_TELEM` (Modbus 40210–40219): expõe a visibilidade do estado de override do relé (operador VINCULADO/DESVINCULADO) sem inflar a superfície de autenticação Modbus.
- Contadores separados de desativação: distingue OPERATOR_RELEASE (liberação manual via escrita 0) de LEASE_EXPIRY (lease vencido quando o master parou de renovar) — antes era um único contador agregado.
- Duração ativa acumulada em uint32 segundos saturante (~136 anos, nunca dá overflow); leitura coerente em uma única FC03 qty=10.
- Hardening do crash: o `Error_Handler()` não fica mais em loop morto; grava breadcrumb `.noinit` (arquivo/linha/PC) e entra em panic blinker no LED, com IWDG reciclando a placa pra captura no reset_log.
- Build guard `BKP2R`: previne compilação acidental com forensics ativo que sobrescreveria contadores de segurança.
Binário disponível sob solicitação ([email protected])
- v1.1404 de jun. de 2026Estável
- Validação calendar-aware do RTC via FC16 (40131–40135): datas inválidas como 2026-02-29, 2028-02-30, dia 0/32 ou mês 0/13 agora são rejeitadas com `ILLEGAL_DATA_VALUE 0x03` sem alterar o RTC.
- Validação leap-year unificada entre LCD e Modbus: ambos usam o mesmo helper `rtc_driver_days_in_month`, eliminando divergência de validação entre interfaces.
- Faixa de ano aceita: 2025..2099; mês 1..12; dia conforme dias reais do mês (28/29/30/31).
Binário disponível sob solicitação ([email protected])
- v1.1303 de jun. de 2026Estável
- Nova configuração de debounce por canal de entrada digital (DI), exposta em Modbus 40180–40187, unidade decisegundos (1..255 ds = 100 ms a 25.5 s).
- Bloco canônico R/W de configuração DI em 40174–40176 (mode, polaridade, alarm enable) — substitui o caminho R/O anterior; espelhos R/O em 40169–40171 mantidos pra leitura.
- Atomicidade FC16 do whole-frame estendida pros blocos DI: configuração completa pode ser escrita em uma única transação Modbus; frames cobrindo registros reservados são limpiamente rejeitados.
- Persistência via CRC CCITT-16 no bloco primário: corte de energia no meio de uma escrita é detectado no boot e dispara recovery pra factory defaults (em vez de garbage parcial).
Binário disponível sob solicitação ([email protected])
- v1.1002 de jun. de 2026Estável
- Watchdog Fase 3 ativo: o IWDG só é renovado quando as 3 tasks supervisionadas (SAMPLE | MODBUS | UI) batem heartbeat dentro da janela de 200 ms; uma task travada agora é resetada e a causa fica em `MBMAP_RESET_REASON_WATCHDOG`.
- Pulso de teste do relé tornou-se não-bloqueante: a UI task não fica mais bloqueada via `HAL_Delay` durante teste, mantendo o heartbeat batendo. Precedência do relé: pulso de teste > override > alarme.
- Barreira de registro no startup: o IWDG é refresheado incondicionalmente até toda task supervisionada bater heartbeat ao menos uma vez (ou até `WDT_REG_BARRIER_MS` de 4000 ms), evitando reset falso durante boot lento mas saudável.
Binário disponível sob solicitação ([email protected])
- v1.0902 de jun. de 2026Estável
- Override do relé via Modbus (40172–40173): operador pode forçar o relé OFF (modo 1) ou ON (modo 2) com lease monotônico de 3 s, ou liberar pro automático (modo 0 = VINCULADO/AUTO).
- Falha pro modo seguro: qualquer caminho de incerteza (lease vencido, reboot, watchdog, power-cycle) resolve pra AUTO — não existe estado preso em DESVINCULADO.
- Status R/O packed em 40173 (bit0 relé físico, bit1 override ativo, bits 8..11 motivo) lido coerentemente com 40172 em uma única FC03 qty=2.
- Capability gate por SKU: o override fica DISABLED por default e só é provisionado em builds aprovados (`-DAEM_RELAY_OVERRIDE_CAPABLE=1`); SKUs não-capazes NACKam com reason=cap-disabled.
Binário disponível sob solicitação ([email protected])
- v1.0801 de jun. de 2026Estável
- Telemetria autoritativa de alarme em 40164–40171: `SYS_HEAP_FREE` (heap livre live em uint32), `ALARM_SUMMARY` (estado canônico do LED vermelho/relé), `NTC_ALARM_STATE`, `DI_ALARM_BITMAP` e mirrors un-shadowed da config DI.
- Cliente Modbus para de re-derivar (e errar) o estado de alarme: agora basta ler `ALARM_SUMMARY` (40166) pra ter o estado canônico que aciona o relé.
Binário disponível sob solicitação ([email protected])
- v1.0631 de mai. de 2026Estável
- Gating de canal ativo/inativo (Fase 7): máscaras por canal `v_alarm_enabled_mask` (40424) pros 6 canais analógicos e `di_active_mask` (40425) pros DIs. Canais inativos são excluídos da avaliação de alarme e do LCD.
- Novo bitmap DI mascarado live em 40426: `digital_io_read_di_bitmap() & di_active_mask` em endereço não-contestado (o mirror legado em 40140 fica shadowed pelo C-013 nos builds ≥272).
- LCD compactado: só renderiza canais analógicos/DI ativos, com hint de estado vazio ("No active chan." / "Enable in Setup") quando um grupo não tem nenhum habilitado.
- Correção da colisão BL-unlock: diagnósticos R/O `AEMUP_REJ_BUFFER` e `TELEM_BOOT_FAIL_REASON` realocados de 40098/40099 pra 40148/40149, liberando o bloco de challenge/response do bootloader.
Binário disponível sob solicitação ([email protected])
- v1.0530 de mai. de 2026Estável
- Correção crítica L1: config de alarme por canal Fase 6 realocada do bloco EEPROM secundário (0x200+) pra cauda do bloco primário (0x0F1, 0x0F8–0x0FF) — antes o bloco secundário aliasava o primário no CAT24C02 256 B e qualquer escrita em 0x200+ corrompia silenciosamente a config primária.
- Delays UV/OV per-canal empacotados como nibbles de 4 bits (0–15 s) no tail primário; nova versão de layout EEPROM 0x03 com migração automática a partir de 0x02.
- Breadcrumbs L2 em `.noinit` SRAM: estrutura `save_all_breadcrumb_t` preserva phase marker, PC, LR, xPSR através de soft resets. HardFault handler grava crash_pc/lr/xpsr; logado no boot seguinte.
- Validação FC16 dos delays Fase 6 (40400–40415) limita 0–15; hysteresis (40416–40423) retorna `ILLEGAL_DATA_ADDRESS` (persistência depende do upgrade pra CAT24C16).
Binário disponível sob solicitação ([email protected])
- v1.1.010 de mai. de 2026Obsoleto
- Mapa Modbus consolidado em 29 holding registers (08 voltagens, NTC + 16 thresholds, baud index, slave ID).
- Auto-rotação do LCD entre SCREEN_VOLTAGE / SCREEN_DI_FAULT / SCREEN_TEMP_FAULT / SCREEN_VOLTAGE_FAULT a cada 5 s.
- Senha de calibração default ajustada para 4 dígitos (1000).
- Persistência de thresholds e baudrate em EEPROM CAT24C02.
- Suporte a baud rates 4800 / 9600 / 19200 / 38400 / 57600 / 115200 via index na HR 40028.
Binário disponível sob solicitação ([email protected])
- v1.0.017 de mar. de 2026Obsoleto
- Versão inicial: 8 canais DC, RS-485 Modbus RTU, LCD 16×4, 3 teclas, NTC.
- Limitação conhecida: thresholds não persistiam após power-cycle (corrigido em 1.1.0).
Binário disponível sob solicitação ([email protected])
Para acesso a betas e canais privados, fale com o engenheiro de aplicação responsável pela sua conta.