Repository navigation
feat(firmware): Uno v3.0 com supervisão por marcos e robustez - #43
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…to v2.x Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…saida) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… passagem Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… confirmacao Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tes da partida nao confirma Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…res, saida segura a cada ciclo Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e bancada da v3.0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…de versao Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…igar o motor Um pulso que comecava antes da partida e terminava depois confirmava a entrega pelo maiorPulsoMs. O ACIONANDO_ESTEIRA repete a checagem da juncao antes de zerar a captura e iniciar o supervisor. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nout Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(19/20 ms) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…limita rajada de PCINT - sensorJuncaoZerar marca o pulso em curso; ao liberar, a largura dele nao entra em maiorPulsoMs (R1). - Mais de 8 bordas de uma juncao no mesmo millis() desligam a PCINT dela; sensoresAmostrar ressincroniza o nivel e religa. Uma rajada do LM393 no limiar nao deixa mais o loop e a WDT_vect sem CPU. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… serial e static_assert dos prazos - setup alimenta o watchdog antes e depois de lcdIniciar; lcdIniciar limpa a flag de timeout do I2C antes do init (sondagem de 0x27 sem resposta desligava a toa um LCD em 0x3F). - motoresAplicar roda de novo depois da serial e do LCD. - static_assert: prazoPartidaMs <= timeoutMs nas tres esteiras. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s checks obrigatorios Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a do reset Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 of 5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que muda
Firmware do Arduino Uno v3.0: reestruturação modular com supervisão da entrega por marcos e robustez de produto, resolvendo os problemas vistos em bancada em 02–03/10 (entrega da B sem débito, esteira C que mal move e dá timeout, Uno reiniciando, LCD apagado).
src/logica/(C++ puro: protocolo, filtro, supervisor, FSM, telas, causa do reset) testado no PC emtest/firmware_uno(43 testes, job novofirmware-logicano CI) esrc/hw/(motores, sensores, serial, LCD, diagnóstico). O.inosó orquestra.motor_sem_avanco); M2 junção em 12,5 s desde a partida (timeout); débito na confirmação; M3 3 s de saída com a junção liberando (peca_presa_saida). Junções capturadas por interrupção, pulso mínimo de 20 ms, só valem passagens que começaram depois da partida.inicio, LCD procurado em 0x27/0x3F e opcional (I²C travado desliga o LCD em vez de travar), limitador de rajadas de interrupção, textos na flash (RAM global de 55% para 46%), sem ArduinoJson no Uno.*_igual_v2); comandos, pinos, ESP32, servidor, frontend e simulador não mudaram. Campos opcionais novos (reset,lcd,ram_livre,fase,t_ms,bordas_juncao) e novos erros (sem_peca_topo,juncao_obstruida,motor_sem_avanco,peca_presa_saida).LiquidCrystal I2C@1.1.2fixada.docs/ARCHITECTURE.md§3 (marcos, erros, campos, diagrama),README.md,docs/CHANGELOG.md,docs/CI-CD.mde o roteirodocs/testes/roteiros/firmware_uno_v3_validacao.md.Rollback: firmware v2.x no commit
fddde08.Como validar
docker run --rm -v "<repo>:/w" -w /w gcc:14 make -C test/firmware_uno test→ 43 testes, 0 falhas.arduino-cli compile --fqbn arduino:avr:uno arduino/data_flow_inventory→ 44% da flash, 46% da RAM, sem avisos no código do projeto.test/server_metrics) passam.docs/testes/roteiros/firmware_uno_v3_validacao.md— começar pela calibração dos sensores de junção (passo 2); com a J2 sempre ocupada, a v3 recusa pedidos de B comjuncao_obstruida.Checklist
scripts/precommit-checks) — não executado; as validações acima (testes, compilação, suítes) foram executadas.envousecrets.hna mudançadocs/CHANGELOG.md(seção[Não publicado])tipo: descrição(feat,fix,docs,refactor,test,chore)🤖 Generated with Claude Code