New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Insufficient checking on spike delay timer. #431
Comments
This is true - the issue is that if you overrun your timer just once, you will probably get stuck always overrunning it! Another idea is to set up timer2 to be the same as timer 1 but without looping. Then you can just run the check on timer2. Alternatives include setting up timer2 with the actual wait time and then having a spin1_wfi to wait for the interrupt. |
so just quickly jumping in as a fly by. But if that's to do with the spreader. we did some stuff with icub code for tdma'ing so that we handle the edge case. code below: //calculate max_counter;
woudl that help you guys at all? |
Not sure - looks like that could work too. |
if so, big thanks go to Arren Glover who generated that code in the first place. |
I think the code in neuron.c has been updated to take this issue into account, so this can probably be closed? |
Fixed in #539 |
In file sPyNNaker/neural_modelling/src/neuron/neuron.c, beginning at line 443.
While loop to wait enough time to space out spikes.
If the while loop is interrupted and the timer wraps around during the time when the interrupt is being serviced, when it returns from the interrupt it must wait for the timer to count down almost the entire timer tick again before continuing.
Solution may be to check (inside the while loop) if a timer wraparound has occurred and to escape the wait loop immediately if this is the case.
The text was updated successfully, but these errors were encountered: