Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

4
  • 1
    Doing a lot of serial printing at a low baud rate will of course cause you to fall behind. You should try to determine where your code gets stuck in the fast case. It looks like you have a possible race condition with potentially clearing the interrupt flag before acting on it, also you do an exact equality comparison on a length that might be able (?) to exceed that. Try putting a counter in your while() loop and printing some output if you are stuck there for a long time. Make sure you aren't overflowing any 16 bit variables... Commented Mar 27, 2018 at 18:37
  • @ChrisStratton Well, the above code has been modified by me. I have used long instead of int, and I am quite sure that overflow shouldn't be occuring, and used serial printing for debugging. But none of these seemed to help since the board freezes randomly anywhere. There is no pattern. Also, pressing the reset button should restart the code (which happens for other simpler codes), but it's not happening. The board remains frozen.This is the code in case you wanna see it. Commented Mar 28, 2018 at 14:36
  • @ChrisStratton Also, it should not be a case of integer overflow, because I have tested overflow on other simpler programs. In case overflow occurs, the value simply rolls over, it does not freeze the program execution. Commented Mar 28, 2018 at 14:42
  • 1
    Again, your best route to a solution is probably going to be figuring out where in the program it does get stuck. Commented Mar 28, 2018 at 16:18