Simplest solution maght be to use the maxiters flag in solve(... ;maxiters=1000, ...). If you realy need a more more accurate timing you can use a callback function:
using DiffEqBase, OrdinaryDiffEq
u0 = [1.,0.]
function fun(du,u,p,t)
du[2] = -u[1]
du[1] = u[2]
sleep(0.1) # throttle the function
end
tspan = (0.0,10.0)
prob = ODEProblem(fun,u0,tspan)
struct Timer
tstart::Array{Float64,1}
runtime::Float64
Timer(t) = new([0.0],t)
end
function (timer::Timer)(u,t,integrator)
if timer.tstart[1] == 0.0
timer.tstart[1] = time()
end
time() - timer.tstart[1] >= timer.runtime && return true
end
affect!(integrator) = terminate!(integrator)
cb = DiscreteCallback(Timer(60),affect!)
sol = solve(prob,Tsit5(),callback=cb)