"Clicking" Brick and Unpredictable Performance - L
At low battery levels the NXT can exhibit unpredictable performance.
This problem exhibits itself when the battery level is high enough to operate the CPUs on the NXT but it is not high enough for the slightly higher voltages required to program flash memory on the NXT CPU. The NXT will behave OK until you perform an operation that tries to write to flash memory. At low voltages, the flash memory operation can result in corrupted memory at unpredictable addresses, not just the address that is trying to be rewritten.
One symptom of this is when the NXT is is firmware reload mode -- i.e. the brick is "clicking" waiting for a reload of firmware -- and the brick refuses to accept the reload and the brick keeps "clicking".
The solution is simple. Replace the batteries!
ROBOTC is "smart" enough to detect this problem. The ROBOTC IDE checks the battery level before trying to download firmware or write a file to the NXT and will abort the operation if the voltage is too low.
However, ROBOTC can't check the voltage if the brick is already in "boot" mode (i.e. it is already clicking) which might occur if you manually put the brick in boot mode via the "secret" button on the bottom of the NXT. Or if boot mode was entered using a different development system.
If your batteries are "weak" then putting a large drain on the batteries -- e.g. operating motors at full power, especially when there's a large load on the motors or even a stall condition -- can pull the battery level below a level for reliable operation of the CPU. This is another case where battery replacement might be the solution to unpredictable performance of your NXT programs.
Note: this problem occurs at voltages that are still high enough that they don't trigger the on-brick "Low Voltage" indication.