We know that the current pyro configuration mechanism is difficult to understand and program correctly and encourage people to reach out to us with questions.
Let's step through these issues one at a time.
Pyro D fired during ascent because it was programmed to fire after the first motor burned as soon as the rocket was below 499 feet. That turned out to be during ascent.
Pyro A didn't fire either because the altimeter never reached Drogue state (it didn't detect a solid apogee), or because there wasn't any time between Drogue and Main states (this happens if Drogue occurs below the Main altitude).
Pyro C didn't fire -- you're seeing the time at which it was inhibited, presumably due to the tilt limit being exceeded. This is mis-leading and I should fix it so that it doesn't appear like this in the log.
Pyro D shows a steep voltage drop because the igniter went 'open' which makes the pyro voltage drop. That's how we tell if an igniter is connected at all.
Let's figure out how to configure things to do what you wanted.
- Apogee Backup (Pyro A): Flight State after: Drogue. Delay after other conditions: 1s.
- Main Backup (Pyro D): Flight State after Drogue: Height above pad less than: 499 ft.
- Sustainer Ignition (Pyro C): After motor number: 1 Angle from vertical less than: 20. Delay after other conditions: 3s.
I recommend using 'Flight State After: Drogue' to determine when the rocket is descending because that takes all of the apogee-detection logic into account, including any programmed apogee lockout and built-in logic that avoids false apogee determination due to mach transition effects.
'After motor number: 1' is the almost the same as 'Flight state after: Boost' as the flight computer counts motor burnouts based on when the state transitions from Boost to Fast/Coast. I prefer to use it as it extends to more than two stages nicely.
During the 'Delay after other conditions' period, which starts when all of the other conditions are simultaneously true, TeleMega continuously tests those conditions and if they ever become false, then that igniter is disabled for the flight. In the case of this flight, that means TeleMega is monitoring the tilt angle for the three seconds after the first motor burnout; if the rocket ever tilts too far, that igniter will not fire.
I'd love a copy of the .eeprom file if you can send it to me, and if you have any further questions, please don't hesitate to reach out to us. Helping people fly safely and successfully is the best part of this job.