Ok, the actual interrupt thing might be a little overkill, though it should be possible to set up an interrupt, which fires every 250 ms. If the following function would be called approximately every 250 ms, it would do the job, i.e. every 8th second a 250 ms high pulse is sent to port 4.
static int last = 0;
static bool hi = false;
if (millis() - last > 8000) // cycle length 8 s
last = millis(); // record the time when pulse actually goes high
hi = true;
if (hi && millis() - last > 250) // wait until AT LEAST 250 ms has passed
hi = false;
For this to happen, one could use this library.
This library is not a real interrupt library. It is based on polling. You need a timer.run() call inside your loop. The faster your loop runs, the more accuracy you get in timing the pulse. But in this case it shouldn't be very critical. If it is, just put more timer.run() calls inside your loop.
Say you want the 250 ms pulse every 8 s, but your loop takes some 300 ms. Worst case is that your cycle will take 8299 ms and your pulse length will be 300 ms. This is quite unacceptable in many cases, but if the task is to keep your power bank on, it's quite ok.