static const SPISettings wifi_SPISettings(12000000L, MSBFIRST, SPI_MODE0);
Well the Uno cannot run SPI even that fast, so perhaps try something slower.
Clocking the chip slower won't reduce the bandwidth of the RFI, just the amount of it. Fast chips have fast edges and fast edges spray harmonics all up through the microwave spectrum. You need to screen/shield really...
Just having a ground plane in-between isn't a Faraday cage, the plane is acting as a coupler I suspect.
The 4.x teensy puts out way more EMI than your previous setup (its 600MHz clocked and drawing ~100mA), both...
You haven't set the SPI frequency - the default is much higher on some Teensys - perhaps your interconnect can't handle fast logic signals?
Also you aren't connecting CS to pin 10 - could that be the issue?
Have...
Well the velocity of sound in MDF is apparently about 2500m/s, so a time difference of 10µs would be about 25mm, so I'd suggest sampling at that sort of rate, ie 100kSPS for each sensor. Some experimentation with a 2...
No I think the DONE bit is only set by HW, so you have to clear it in SW if triggering a cycle and you want to see it change at the end. Nothing automatic about the SW as you have to write that! In other words the HW...
Well a plastic case can't be grounded unless its got internal nickel plating.
Could this be friction generating static? Static charges only happen with insulators, so perhaps you haven't used metal in the right...
Also its vital that flux is present when heating, or you may just oxidize the surfaces before the solder can wet them. More flux, less solder, is often useful advice for beginners - and don't apply heat for more than a...
Its wise to always use caps wiper-to-ground to prevent RF pickup. Value is not critical for this use, but should be ceramic and 1nF or more will work, close as possible to the analog pin on the Teensy. With a fader...
Define omega as unsigned (its completely overflowing an uint8_t - on a 32 bit processor int and unsigned are faster that smaller types), and best make it local to the function updateDC() as that's the only place its...
Are you asking how to read characters from a file (if so which library are you using?), or more generally how to do ad-hoc parsing of a stream/file?
I note that code is broken, for instance:
while(getc(in_file)...
I guess you have to be lucky with the timing of an upload that someone with similar interest is around that day or two. I guess I didn't put it in git as no-one got back at the time. Feel free to post fixed version...
Since you have to implement the anti-aliasing filter in analog, its usual for 'scope sampling rates to be at least 5 times the nominal bandwidth, so 200MHz 'scopes tend to be 1GSPS or 2GSPS. This sampling-rate headroom...
50MHz will be pushing it without transmission-line / impedance controlled signals. To run a 3.3V single-ended logic signal impedance-matched requires 30 to 60mA, which is why things break down at higher speeds where...
The T4 is little-endian, you must read the LSB first.
Also this line:
kk_recvd = ((Serial1.read()<<8) + Serial1.read());
Does not have a defined order of execution - expressions do not impose a...
The ringing you see is probably the ground lead of your probe - it has inductance. For really fast signals there are little ground springs you can use on a probe to allow much less inductance probing of a board. See...
Most of that will be the loop overhead I suspect. The best way to time very short instruction sequences is to unroll the loop by a decent factor, 10 or more, so that the loop overhead is amortized by that factor.
Digital inputs require fast edges or they can oscillate and generate pulse swarms, and consume excess power - analog signals should go through a comparator to sharpen up the edges - for a fast chip you probably need...
Any CMOS chip can be fried by touching, as they are static sensitive and anti-static precautions should be followed when handling them. The first steps to this are banishing nylon carpets and nylon/synthetic clothing,...
Some of those through-hole pads are more like vias - not a large enough pad area for a soldering iron to make contact. I suggest using non-round pads for closely spaced through-hole components: See tip (5) on this page...
Typically you want to disable interrupts, then set the timer registers one after another with linearly ascending values and enough nops between to compensate, and probably do this twice to ensure the code is cached...
Its a virtual ground called HP_VGND and "headphone virtual ground" in the datasheet and there's a very stark warning about not connecting it to GND ever.
How much more clear could they have been?
And you've checked the fader pin-out is what you expect?
By the way with lead-free solder be sure to use the 4% silver sort, the other kind is not eutectic and not very workable, certainly not for re-work. Check the...
High speed signals need a continuous return path close to them at all points, otherwise they simply find a return path (path of least _inductance_). This can involve the return current jumping onto any trace that...
Then you can't detect clipping from the speaker outputs without a good low pass filter as well as voltage divider - you need to remove the switching frequency. Most class D outputs are bridged too, so the signal is...
float has only 24 bits mantissa, less than int as a fixed point type, quite often in DSP fixed point is a good fit as the range is strictly defined for an ADC or DAC. But its more cumbersome to work with.
Can be done with only 1 multiply:
output += A * (input-output);
This structure avoids having 1-A in addition to A. It also allows fast execution on hardware without a multiplier by choosing A to have only a few...
More importantly a speaker is an inductive load and could fry a pin directly from inductive kickback. Series resistance may not protect against that directly, although reducing the maximum current involved reduces the...
There's a lot of capacitance on the integration gate and shift gate inputs according to the datasheet, it likely needs a high current buffer to drive these at full speed. The application circuit of the datasheet hints...
Both input and output should be i2s1, not i2s2.
Perhaps temporarily reroute the i2s input to the i2s output and check that works, if so then the playback is likely the issue.
Maybe this can help a bit - I use python's scipy.signal library all the time for stuff like this, it basically can do what matlab does without cost or lock-in - see this:...
Sounds like bus-keeper mode is enabled on the inputs. See this thread: https://forum.pjrc.com/threads/69671-Teensy-4-0-4-1-web-pages-need-a-warning-about-INPUT_DISABLE-on-Analog-Inputs?highlight=bus-keeper
Method call has overhead, especially virtual methods. Do you need virtual methods?
For ultimate speed drop all the class definitions and loop over your filters (i.e. table-driven). Normally each filter would just...
The MAX4466 isn't upto audio really, very noisy at 80nV/√Hz, gain-bandwidth product is a few 100kHz (you want more like 10MHz for low distortion audio)
The MAX9814, despite being designed for microphones is still a...
Just limit the current that can flow into the pin to a low value - analog inputs are high impedance (10^10 ohms or more), until the protection diodes conduct. Limit the current and in the inbuilt protection diodes do...
Unconnected digital inputs should have pull-ups or pull-downs enabled so they don't float (probably already the case for momentary switch inputs), analog inputs for pots must have their voltage defined, perhaps just tie...
Yes, they are configured to the I2S unit 1, IIRC. Only a small number of pins can be thus configured in hardware, the chip datasheet has the full details as to which pins can be configured to which units.
However...
Its rather large to hang on a pin, rather depends how much current the rest of the circuit pulls from the supply.
You could make the resistors larger and C1 smaller, or more simply just add 1k after the capacitor to...
Ah, and looking at some PWM ISR I wrote a couple of years back I see I used it myself - easy to forget something like this when you switch between processors.
I dot't think you don't need a DSB barrier for communicating between ISR and main program since they are both running on the processor using the same cache as the T4 is a single processor architecture.
The barrier is...
Are you using screened cable? If not you'll be picking up a lot of background electrical noise until the Teensy audio board drives the output. Powered down the outputs will float around may be a volt or so free to...
Its much more common to do this "low side switching" via open-drain or open-collector as no level shifting is needed. If the load were 12V for instance its easy to use one external transistor as a switch - high-side...
In a ribbon its best to stick to one ground every 2 or 3 pins, then each signal wire is next to a ground. With ground every 4 pins you increase the amount of crosstalk, but if you have to live with it you have to. ...
The A4988 is 3 or 5V compatible, but if the chip is powered at 5V its inputs need to be 5V, so it depends on what's on the breakout board and how you power it.
The DRV8825 generates its own 3.3V logic supply and its...
What speed is this SPI? Is there a datasheet for the device? If its not superfast you could just use a 74LVC74 DQ latch to halve the outgoing SCLK frequency, with #CS to set or reset it as appropriate.
Oh certainly, you need a DC blocking capacitor and a CMOS protection network on the input, so a capacitor, a resistor, and two schottky diodes - many examples on the net, but without protection you could easily come a...
BTW range depends on bandwidth and wavelength too, 2.4GHz isn't the best frequency for long range with its fairly short wavelength, and being full of WiFi and microwave ovens, but line-of-sight is the easiest situation...
From what I can glean that connector has microphone and headphone audio pins, ground, power and PTT. However the headphone audio may have 6V DC imposed on it, which could be a big issue as that's enough to instantly...
That's a recipe for a rather deaf radio. Keep transceivers away from heavy EMI (such as a 600MHz processor), best to be on a separate PCB, and screened from it. The RF noise floor can be as low as a few nanovolts from...
Why not 3.3V and the 16 bit wide 74LVC16245? Are you intending chips like the 74LVC4245 for the level shifting?
My feeling is that parallel is rarely needed these days unless you have a very high throughput datapath...
For further averaging in software I'd suggest using a low pass digital filter as these have lower latency and you can easily tune the bandwidth. The simple one-pole low pass digital filter can be coded in a one-line...
There's a standard piece of kit for doing this in industrial/commercial situations, the PID controller, which is a basic programmable feedback control system. Any microcontroller can be programmed to do PID control,...
Its definitely not that easy to do on a complex ARM processor as there are several systems that need to be correctly setup before you see any output at all, namely power and clocking setup for the relevant hardware,...
Heat is carried by radiation, convection and conduction - if the main board gets hot it radiates heat directly into the underside of the T4, as well as some conducted heat along the pins and convected heat through the...
This isn't how audio signals typically work. Each signal is simplex (one direction), as the driving end is low impedance and the receiving end high impedance.
I think you should be using an audio input for your...
This sort of synchronization at high speed is probably best done with DMA, though its complex to set up and you have to read quite a lot to figure if and how it can be arranged. Other approaches might be using some DQ...
Yes, in C/C++ the default conversion from float to int is truncation, adding 0.5 works for positive values to turn truncation to rounding. The better way is to round explicitly in floating point before conversion to...
A strain-gauge on every key? That's the standard way to measure force, but requires a load-cell amp chip for each key like the HX711.
the standard cheapish MIDI approach is two opto-sensors or contact switches for...
arm_covolve is neural net stuff - there's arm_conv_xxxx and arm_fir_xxxx families of functions for convolution - not sure why there are two sets though. Teensy uses the arm_fir_fast_q15 in filter_fir.h/cpp
Forced air cooling or heatsinking will help - the issue is the die of the processor is way hotter than ambient with only passive cooling, and ambient is being held up at 60C or so. Chip-top heatsinking and/or a...
https://github.com/PaulStoffregen/cores
There are separate subdirectories for each type of Teensy. These files live in there, and define AUDIO_SAMPLE_RATE_EXACT amongst other things.
uint32_t n =...
Just counting the period from those graphs confirms this is a 344Hz, ie once-per-audio-block pulsed noise, not 375Hz, not ground loop issues, this is a software issue, perhaps not enough AudioMemory?
Yes I would confirm that the only things you should be doing in constructors is initializing member variables, nothing that relies on other classes to be in a working state.
One invaluable technique is to auto-call a...
The problem is more relevant to clock signals as poor signal integrity like this can lead to double clocking on a ringing edge - ordinary 'scope probes with long trailing ground wires can mask the issue, especially with...
Are you calling Serial.write() inside the ISR? That's not normally safe as it might deadlock (not entirely sure specifically, but the latency issue is also a reason). Usually you use the ISR to push data into a...