| | Debugging
|
| Do you guys have an established mechanism for debugging? I'm thinking of writing certain numbers to the display using cputw(). The idea being that the number frozen forever on the display will be the (approximately) last place the code was ok before (...) (26 years ago, 15-Mar-99, to lugnet.robotics.rcx.legos)
| | | | Re: Debugging
|
| (...) That's the method I've used. Just be sure to put an lcd_refresh() after the cputw() call - I can't remember if cputw() does the lcd_refresh() or not. Another thing I've done is write out a number where the upper byte indicates a position in (...) (26 years ago, 16-Mar-99, to lugnet.robotics.rcx.legos)
| | | | Re: Debugging
|
| (...) I don't think it does. Of course, the source would answer definitively, but I also know that until I remembered to put the refreshes in there, I didn't get useful output. (...) I did that too. In my case, the lower byte was the priority (...) (26 years ago, 16-Mar-99, to lugnet.robotics.rcx.legos)
| | | | Re: Debugging
|
| (...) Oh, you're doing stuff inside the scheduler. Yeah, msleep doesn't work too well there :-) Yes, the pauses were only so I could see what was going on. Another thing you could do is print messages out the IR port; but I'm not sure how it would (...) (26 years ago, 17-Mar-99, to lugnet.robotics.rcx.legos)
| | | | Re: Debugging
|
| (...) However, last night, I wrote a brute force (spin loop) msleep which works fine in the scheduler. I found that 800 iterations of an empty for loop with a 16 bit index comes pretty close to 1ms. Granted, I cheated a little, knowing that the (...) (26 years ago, 17-Mar-99, to lugnet.robotics.rcx.legos)
| | | | Re: Debugging
|
| (...) It's what I'm doing for now in my debugger work. I haven't tried it out yet, though. (...) I carefully looked at the opcodes, and found that the shortest opcodes are all 2 bytes, and hand-coded the 2 byte instruction that jumps to itself. The (...) (26 years ago, 17-Mar-99, to lugnet.robotics.rcx.legos)
| | | | Re: Debugging
|
| (...) Try delay(). It's the non-scheduler version of msleep(). If you have a version that's better calibrated, please patch delay() in conio.c to reflect that. (...) A branch to itself is probably the best you can do, as you need an atomic (...) (26 years ago, 20-Mar-99, to lugnet.robotics.rcx.legos)
| |