Emission $T,...*XX et reception $C,...*XX conformes a docs/ESP32-UART.md.
Trame mesuree a 129 caracteres, checksum XOR verifie independamment.
Corrections trouvees au bring-up sur materiel :
- StartCpuTimer0() manquant : ConfigCpuTimer() laisse le timer arrete, donc
le tick d'emission ne se produisait jamais et rien ne partait sur la ligne.
- Suppression de "%f" dans sprintf. Sur C28x le support flottant de printf
passe par du long double 64 bits emule (frexpl/scalbnl/L$$DIV) : le CPU
partait a PC=0 des le premier envoi. Formatage decimal manuel a la place,
comme le prevoyait deja PROMPT §7 etape 7.
- RXFFIENA n'etait pas arme dans SCIFFRX : aucune interruption de reception.
- Recuperation de SCIRXST.RXERROR. Un FE/OE/PE/BRKDT le latche et bloque le
recepteur jusqu'a un SW RESET du SCI ; sans ca une seule perturbation
arretait la reception definitivement (constate : RXERROR+FE+BRKDT latches).
- Formatage borne : clamp des valeurs (NaN et saturation) puis snprintf avec
la capacite restante. Un champ qui ne tient pas est abandonne entierement,
ce que le protocole autorise, plutot que de deborder s_tx_frame.
- Emission non bloquante : send_telemetry() ne fait que mettre en attente,
uart_link_service_tx() pousse au plus une FIFO (4 octets) puis rend la
main. L'ancienne version monopolisait 22 ms par trame, incompatible avec
la priorite donnee a la boucle de regulation.
Plan memoire (F2802x_generic_flash.cmd) :
- les 4 secteurs flash du F28027 sont declares (32K mots au lieu de 8K)
- .ebss bascule en RAML0 : il etait colle juste apres .stack, donc tout
debordement de pile ecrasait silencieusement les globales
- pile portee a 1024 mots, seule dans RAMM1
LED : polarite reelle confirmee active-haut (cathode commune a la masse,
anodes pilotees par GPIO12/GPIO33 a travers 1k) -> LED_ACTIVE_LOW = 0.
Repond au point ouvert §9.2 du PROMPT.
safety_init() reste desactive dans main.c : bring-up isole LED+UART, a
reactiver quand l'etage de puissance sera cable.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
.mcp.json and CLAUDE.md are auto-generated by CCS with machine-specific
absolute paths and shouldn't be shared via git. The .cproject change
(likely from a CCS reimport) replaces the hardcoded C2000Ware install
path with a variable reference.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>