I am attempting to make a UPDI programmer that can send the 12V pulse needed to activate UPDI when the chip is in one of the other modes (RESET or GPIO), but so far I am not having any success.
I have an ATtiny814 chip which I have successfully programmed using UPDI, and the last thing I managed to do was write the SYSCFG0 fuse to put the pin in RESET mode. The chip still runs the program inside it just fine, but no longer responds to UPDI on the pin.
Next, I've attached a circuit to generate a 12V pulse on the pin for 1msec, before the programmer talks UPDI to it. If I don't have this circuit actually attached to a chip, then the 12V pulse works just fine, followed by UPDI sending the initial BREAK and initial commands, which then eventually fails because no chip answers. All good so far. See the "UPDI-opencircuit" picture, attaached. The topmost yellow trace shows the voltage on the UPDI pin of the chip. Next in cyan is the TX output of the UART bridge which is hoping to talk UPDI, and finally in pink is the output from the 12V pulse generator. The 12V pulse reaches its full height, and the BREAK condition and subsequent UART activity is visible on the (open) pin.
But talking to the actual chip this all fails. The other two scope captures show the result, and also a zoomed-in portion of the 12V pulse specifically. Note how the 12V pulse generator in pink reaches a good peak of 13.6V, but the UPDI pin only gets to 8.8V. Later, when the UART tries to send its BREAK condition (the cyan trace goes low), the UPDI pin doesn't really see that as it seems to be holding the pin high itself. What appears to be happening is that when the 12V pulse is generated, it isn't strong enough to overcome whatever inside the ATtiny814 is driving that pin, because at the UPDI pin itself the pulse only reaches about 8.8V (as measured by the scope), which isn't enough to trigger the VCC*2 of the ATtiny's detector. This stops it from releasing the pin.
The reason the voltages sag before the 12V pulse, is that I also have my circuit interrupting the power supply to the ATtiny for 20msec beforehand, to let it do a poweron reset immediately before I try to give that 12V pulse. This happens much within the 8.8msec that the datasheet says the chip would be refrain from driving the pin on startup, if it was in GPIO mode.
So in summary - I'm not sure how I can reprogram this chip any more. I can't get a 12V pulse into it to kick it into UPDI mode any more. What am I doing wrong here?