46ddf30a64d8c1fc3de7839c6a676370ba46556f
safety_init() complet est maintenant appele a la place de safety_arm_emustop_only() : comparateurs + Digital Compare + Trip Zone. Seuils DAC verifies sur cible a 601 / 603, conformes au calcul de docs/mesure-cartepuissance.md pour 3,0 A. CORRECTIF -- les trips ne remontaient pas au logiciel (safety.c) TZFLG.INT est le drapeau GLOBAL d'interruption Trip Zone : tant qu'il n'est pas efface via TZCLR.INT, plus AUCUNE interruption TZ n'est generee. Les ISR ne faisaient que PIEACK. Consequence : le premier trip de la session (un EMUSTOP provoque par une pause du debogueur) consommait l'unique notification, et tous les suivants coupaient bien le PWM en materiel mais en SILENCE, sans lever de drapeau logiciel. Constate au banc : surintensite reelle sur I2, EPwm2Regs.TZFLG = 0x0D (INT + OST + DCAEVT1, donc trip comparateur bien latche), PWM2 coupe, et pourtant LED au nominal. Ce defaut etait invisible en testant un seul trip a la fois. Il ne serait apparu qu'en exploitation, sous la forme "la protection coupe mais l'IHM n'affiche aucun defaut". Second piege evite : effacer INT alors que la surintensite persiste regenere l'evenement immediatement -> tempete d'interruptions qui affamerait la boucle principale, donc plus de telemetrie ni de LED, au pire moment. L'ISR desarme donc TZEINT.OST : une seule notification par episode. Le rearmement est fait par safety_clear_faults() uniquement, jamais automatiquement (PROMPT §8). safety_clear_faults() efface desormais DCAEVT1 (sinon le prochain trip serait attribue a une surintensite meme s'il vient d'EMUSTOP), INT, et rearme TZEINT.OST. Arret global sur defaut (main.c) enter_safe_state() : les deux etages inhibes (PWM + Stagex-EN) ET HV_EN coupe. Sur un boost en cascade, laisser tourner l'etage 2 pendant que l'etage 1 est coupe n'a pas de sens. Couper HV_EN n'est pas redondant : un boost a 0 % de duty ne donne PAS 0 V en sortie, le chemin Vin -> L -> diode -> Cout reste passant ; HV_EN (VOM1271) est le seul organe qui isole reellement la charge (PROMPT §6 etape 6). Les Trip Zones restent independantes en materiel : cet arret global est la couche systeme au-dessus, executee au rythme de la boucle principale. La coupure rapide (~30 ns) reste la porte ET + le Trip Zone. Stagex-EN est maintenant pilote en continu : 1 au nominal, 0 sur defaut. Inhibition SUPPLEMENTAIRE, le logiciel ne peut jamais outrepasser la coupure materielle deja faite par COMPxOUT sur l'autre entree de la porte. Valide au banc : injection de 2 A sur le shunt 2 avec seuil abaisse a 1,5 A -> les deux etages coupes, LED rouge fixe, defaut latche. ATTENTION, toujours en place dans main.c : le harnais de bring-up force le PWM a 50 % en dur, et Stagex-EN passe desormais a 1 automatiquement au demarrage. Des que les drivers UCC27517 seront montes, la carte se mettra donc a decouper A LA MISE SOUS TENSION, sans commande -- exactement ce que le PROMPT §6 etape 6 interdit (demarrage a 0 % + rampe de soft-start). Retirer ce harnais AVANT de monter les drivers. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
convertisseur DC/DC haute tension double étage
Languages
C
81.2%
Batchfile
18.8%