> Some of the things I plan to do are:
IMO the right way is to implement a Stream class and use the existing code (eg, update_firmware()) without changes. Should be easy once you realize that...
Type: Posts; User: jonr
> Some of the things I plan to do are:
IMO the right way is to implement a Stream class and use the existing code (eg, update_firmware()) without changes. Should be easy once you realize that...
The MAX7221 can supply up to 40ma/segment or anything less than that. The LED can handle 30ma/segment or anything less than that.
Other than the common cathode/anode issue, "can drive" is mostly knowing the current capability vs desired LED current. Do use current control (vs driving with a fixed voltage).
My conclusion is that I'm never going to run arduino on my base machine - ie, I'm going to always run it in a VM.
On top of that DOS attack, there is this - which evidently makes the original flaw worse then expected.
https://www.zdnet.com/article/security-firm-blumira-discovers-major-new-log4j-attack-vector/
This still seems like the way to go for doing something predictable when new is used without the recommended '(std::nothrow)' and a null check.
Here is code that compiles in new.cpp (but isn't...
I don't know if the log4j bug can be exploited via arduino, but I think the safe thing is to assume that it can. So to avoid malicious code running on your computer, it might be wise to upgrade...
Interesting, it looks like one can independently overload new when used with and without the std::nothrow option.
void* operator new(std::size_t size) noexcept {
// malloc and abort if it...
> Can use use a #define or template or some other way ...
+1 on wanting a way to select between two different versions of new(). If (std::nothrow) isn't specified, then new() should abort on...
Note that the most elegant way to use the FlasherX with a new input device is to implement a minimal Stream class for the device. Then update_firmware() works without any modifications.
On the...
I only tool a very brief look, but I think a LTC1157 has the right voltage specs and would drive the mosfets for two motors. I didn't check timing - but there might be similar 3.3V, dual gate...
For example, a SSM3K56CT has a 1 nC gate charge. Doesn't a teensy pin source and sink current, meaning that the mosfet will turn off about as fast as it turns on with no pull-down resistor?
IMO, it's worth learning to use LTSpice. It makes things like this easy and is good for visualizing the results.
Last I knew, good teensy ADC practice was pinMode(xx, INPUT_DISABLE) and a low impedance source.
I used the Paul R swept sine wave method here:
https://stackoverflow.com/questions/22597392/generating-swept-sine-waves
With hardware time stamping, I'd expect excellent performance without a RTOS.
PTPv2 is a required part of AES67.
Once you do anything with undefined behavior, ANY subsequent behavior become legal. Crash, random values, etc.
Consider using a teensy 4.1. Faster CPU and 16 contiguous bits with a single read. I use a different ADC with different handshaking, but run a single channel at 12 Msps.
The ADS8558 will...
When someone talks about red 12v leds, IMO it's likely that there is some current limiting device included in that description.
I'd put a 1K resistor in series with the gate. As is, damage might be possible.
+1 on using a small logic level mosfet rated for 3.3V VGS.
> interrupt priority set to 0 on INPUT pin.
This will jitter occasionally because various things unnecessarily turn *all* interrupts off and then do things for who knows how long. I propose that...
> Can we get higher frequencies? If so, how? thank you
You could add a flip-flop clock divider circuit. But I second the recommendation to just use a teensy 4.0.
> even if you have 2 sides each
Seems to me that with 3D, you could have 4 sides x 144 mm˛ = 576 mm˛.
Thermally, one could put the IMXRT chip on the top. But it's not clear to me that...
Besides timing and deadlocks, the slightly simplified answer is don't call any non-re-entrant function that might be called from elsewhere. I don't know of a list and non-re-entrant can be hard to...
I'd just remove the biquad calls (you don't need filters on top of a convolution filter), but here it is anyway:
26138
26139
> Define a variable like: volatile bool data_update_in_progress = false;
My understanding is that the compiler might re-order code around this, perhaps putting the set to true after your updates. ...
What you are doing should be more common. Ie don't turn off any more interrupts than necessary.
Also, don't turn back on interrupts that were off from previous code. Unfortunately, code like...
I think you could use an IntervalTimer and then NVIC_DISABLE_IRQ(my_timer);
You could get more accuracy by multiplying millis() by some floating point adjustment value (close to 1.0).
Generic advice - keep simplifying the software until the problem goes away. So in this case, down to a single channel with no averaging.
Here is the code, provided without any support - it will require changes. Your correction impulse response needs to be converted to a C array of floats.
As much as possible, I'd stick to standard protocols. Like RTP.
Looks like flux residue - which you could clean off with 99% alcohol.
I assume everyone has seen this:
https://forum.pjrc.com/threads/66201-Teensy-4-1-How-to-start-using-FlexIO
My application (fast ADC) needs 12 bits of parallel input at about 50 Mhz. I suppose it doesn't matter if the clock signal is generated by the teensy or externally. But it needs to be low jitter.
...
I'd like to see a FlexIO library that allowed fast input of parallel data with an external clock source.
This should be helpful:
https://www.baldengineer.com/low-side-vs-high-side-transistor-switch.html
If you want individual cell (vs pack) monitoring, then the diyBMSv4 approach is worth looking at.
Be aware of the effect on total pack capacity. Without active balancing, you are limited by the lowest cell capacity. And by any imbalance.
An INA230 could be used to measure current with a low side shunt. Maybe it could handle measuring 72V if you added a voltage divider.
Thanks for the info.
So one shouldn't expect teensy Strings to act like a C++ std::string or according to Arduino documentation (where we find "reserve() Returns Nothing").
@bvernham: this adds...
> you can mitigate much of the risk by using the reserve(size)
This leads to how does one safely use reserve()?
> reserve(): A bad_alloc exception is thrown if the function needs to allocate...
> no one ever checks the return value of new anyway, not even the standard library ... probably better off just enabling exceptions
So if one uses a teensy and the standard library, this is the...
The crash I saw was caused by this same bug.
> String it supposed to drop data when it can't allocate memory, so you get a proper String variable which is blank.
Here is code that eventually drops data but doesn't result in a String variable...
I did some tests:
Looks like "new" with no memory will return NULL which is non-conforming C++.
String operations that can't allocate more memory generally quietly fail, with who knows what...
What is the proper way to detect an out-of-memory failure of "new" or some std::string related statement (eg, S += "x") in a teensy program?
+1 on what Paul said. For some cases, the MISRA-C policy of "Dynamic heap memory allocation shall not be used" is best.
> the odds are very low,
But note that if there is any chance of...
As I read the spec sheet, anything 3.6-5.5V should be OK.
> connect 3 regular LEDs
Of course application matters, but I have found 1mA to be plenty bright for generic indicator LEDs.