I did some time measurements on the response time of the "naked" interrupt. The test bench is a TK85 (ZX81 clone) that have a signal named /KBD that goes low when it's time to read the keyboard
The /KBD signal goes to pin D2 on arduino (INT0). The interrupt is "naked" meaning it does not have any overhead to save the context.
//
// Update the state of the outputs according to the state of the Keyboard Matrix
//
ISR (INT0_vect, ISR_NAKED) {
asm volatile (
"cbi %2,5 \n\t" // drop !WAIT line
"in __tmp_reg__,__SREG__ \n\t" // Save status register
...
...
The average latency of the signal varied from 667ns to 750ns.
The Timings Tx are related to the Z80 I/O Read cycle
When superimposed, the measuremens become more clear (really??)
The measurements above lead to the conclusion is that even the AVR with a "naked" interrupt could not provide a response that is fast enough to activate the /Wait signal on the correct time.
Than can be seen on the measurement below, where the next instruction have its first cycle incorrectly extended by the AVR output
So far so bad, but I still have some cards to play....
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.