I'd say with some delay after generating each address, things should become stable?
No this is false. You must wait for some predetermined propagation delays in each stage.
This can be made OK but some timing delay conditions.
If you take the 14th single output or Q2 on the 2nd IC, this can work if you slow down the clock.
But only if you use 12th counter output, Q12 as Clk2 in IC2 and Q1 Q2 become Q13, Q14.
Thus after Q14 goes high (some 5us after the clock edge), you must stop the clock process immediately and say "done". (or something like that)
The delay from Q14 going high after CLK1 went low depends on the IC delay. 14 stages each with delay shown below as 360 ns max. @ 5V, 25'C or Tdelay = 5 us. MAX.
This means your clock cannot go high for 5us before you stop the input clock count.
1. you must use the negative clk edge to latch the data into the Arduino ( or invert and use rising edge),
2. you must reduce the clock speed to a 10 us cycle or 100 kHz and both Arduino and 4040 clock on the same edge or something similar to prevent the race or metastable glitch and thus prevent memory transfer errors latch the data into the Arduino one < 180 ns so the Memory state stays the same from the previous edge and the memory is latched immediately in the Arduino.
View attachment 145926
Async. means Not Sync'd which means like a stadium "wave" and not every register is clocked by the same input rather from the previous stage only
.
Synchronous counter means every register uses the same input clock to sample the previous stage and uses many more gates.
There is a 10x faster version using 74HC4040 IC's but you are not in any hurry since I suspect this is a 1-timer\_ and we want a "controlled race condition" to be error free.