The sym file is unsorted, kind of hard to make sense of it. I found the instruction in the lst file, which is readable, but I don't know where in the code (whose library) it is happening.
Is there a way to make a sorted sym file? It's...
That output usually means the access violation occurred in a library function - those don’t tend to have debug information available. You should find a .sym file in the same folder as the .elf, with a bit of digging around you should be able to...
@defragster
[arm/bin] $ ./arm-none-eabi-addr2line -e ~/Library/Caches/arduino/sketches/C798958FCBDCA6AB7A9C28AB1D2FD52A/teensy-electronic-lead-screw.ino.elf 0x2179E
??:?
[arm/bin] $
This is not enlightening, is it? ??:? what kind of answer is...
Well got another error during high speed operation. Fastest lathe speed, and fastest feed rate.
The output is different than I've seen before. I know where the breadcrumbs are.
(2,8) main loop after using an instance of elapsedMillis
(3,4)...
Grand experiment starting. Have littered my code with breadcrumbs. Entered using an #if defined(mycrumbs). Breadcrumb(n,x); #endif.
On the one hand, I hope I capture something so I have a clue where to look, and on the other hand, I hope...
Turns out that the write method, calls this one:
size_t ILI9341_t3n::write(uint8_t c) { return write(&c, 1); }
You can probably get rid o warning like:
tft.write((const uint8_t *)&c, 1);
This write method generates a warning about an invalid conversion. It may work, but the tft.print(c) seems adequate for my purpose. Now there's only two line wraps, which is a lot more readable. I'm at 8 point font though! But it's readable...
I must say the formatting of the serial console and the display are very different. How can I make the display similar to the console. It seems that CR and LF aren't allowed for the display? How can I handle that? I just get a run on sentence...
I interspersed some bread crumbs all at level 2 with differing values in my loop code. So I have bread crumb (2,1) through (2,10) I'm trying to interpret the result. I forced an error in the main loop using elapsedMillis and then referencing a...
This sort of works. I get it on the display and on the serial console. I don't understand the results. Think I will ask about that in a different thread.
I recently experienced a Teensy crash/reset while controlling a motor on a lathe. Quite often, there isn't even a console attached, just an ILI9341. Trying to install bread crumbs and whatnot in my code now.
I want to both write to serial AND...
Thanks for the insight. Hadn't appreciated the differing value settings to a single bread crumb. That's helpful.
Since this is the first instance of this reset happening to me on code that has been running for 18 months, it's going to be...
While I am asking, how many bread crumbs can one place? In other words, what is the maximum number?
#pragma once
#include <Printable.h>
#include <WString.h>
class CrashReportClass: public Printable {
public:
virtual size_t printTo(Print&...
Thanks for the tips. I eventually found the CrashReport link and saved it. I will check out the addr2line utility as well.
At the moment, I have no idea whether this was a loose connector problem, (mechanical), or a crash due to code. The day...
I unfortunately had a reset while in operation of my lathe while it was feeding, being controlled by a Teensy4.1. I need to find out if this was due to some bug that was introduced recently, or it was "merely" a loosely fitting USB connector...
Understood about syncing to the power line and all.
10 Million ticks of the 600 MHz processor clock is 16.6666 ms.
However, in my case I have a pre-existing 20ms timer, so two counts are 40ms. Good enough. 40ms is 25 Hz, which is a pretty...
Well, thought about this, and came up with something simple. Pretty much what both of you said. I have a variable displaycount that is incremented every 20ms so the simple statement
if ( (displaycount % 2 == 0) && ( (menu == 0)||(menu ==...
Thanks for that clear and concise explanation. It's quite helpful. Need to digest that. Currently calling the function too often. I had implemented a counter like scheme for my RPM updates, probably should extend that to the display. My RPM...
The tft display is updated normally only if the Z value has changed. So if no movement, there's no update. But if moving fast, I need to throttle talking to the display. And the rate that Z changes is dependent on what parameters the operator...
I've used EncoderTool on my electronic lead screw project for my lathe, for both the rotary encoders and the linear quadrature encoders. The library is fast enough to keep up with my needs of 150K interrupts per second. That corresponds to 2200...
I have an electronic lead screw system running on a Teensy4.1 which has been running for about a year and a half. It's been working amazingly well, far beyond my expectations.
I'm adding some features and finding that I'm writing to the ILI9341...
Thanks. Appreciate it. I implemented a variation of this, and my time base of measurements seems reasonable now. I've found some interesting things going on in the system (ELS) as a result. So this exercise has been very helpful.
Is it just a simple call like
auto t0 = HiResClock::now();
sufficient? And then if I want, I can use some method to put it into a usable format? Basically convert from auto to ns, or seconds, or whatever?
Not always. Occasionally that doesn't happen, because I'm muxing several outputs together. Which is why I had to write a parsing routine to separate the parameters.
# USBSerial1
time[us], ztogo
Step, 3711407.260000
3713285.671667, 10.191...