Note that a GPS requires far less noise during acquisition. So in some cases, you can power up the GPS, acquire a lock and then power up the noisy circuitry.
Distance (even say from 1" to 3") makes a difference. ...
I find it disappointing that while there was a pre-existing usable and popular API (Arduino), the RasPi foundation went off and created yet another API. But as I mentioned above, they didn't need yet another board to...
I could check with the scope, but does anyone know how long set_arm_clock() takes to execute? I see that it includes wait loops. Also that it's changing voltage - which might have some side effects.
Right now,...
I'm using SPDIF3. It's a confusing issue because I've seen all of crashes, distorts and works fine. Distortion is the most common. I am doing a lot of processing - a simple pass-through may not trigger it.
...
Strange, that is basically the code I tested with. I just tried a different placement of the speed changes and the program locks up (switching between 816 Mhz while processing and 528 Mhz when idle and the speed at...
I would guess that there would be a lot of value in teensy wrapper libraries that are compatible with the pico libraries. Ie, an easy migration path for users who start on the low cost pico and want to upgrade to the...
Look at the upgrade_firmware() routine and add code to open the file and read characters from it instead of the serial port. Others can say more about how to use the SD card.
A claimed reason for the pico is that linux (used on their other models) isn't good at real-time I/O. But all they had to do to fix that was change the OS to leave one core completely untouched by linux and so...
No doubt there are some users who are able to "insert the SD card I mailed you" and not "install this software on your PC and then ....". You can start with "Flasher4" if you want to develop software to do this.
i2sflew: I highly recommend that you get used to typing your circuits into LTSpice. You can even add noise to the power supply or input. Not perfect, but you will learn a lot.
> a DSB is mandatory at the end of interrupt-code
I believe it should also be used when disabling interrupts from non-interrupt code.
> SCB_AIRCR = 0x05FA0004;
Of course such things should be inside of a...
> A simple hardware diagnostic using patterns of red LED blinks is also planned
Nice! - black boxes are hard to debug. Would be very helpful to distinguish between "loader can't talk to MCU", "crystal isn't working"...
> you need to type in ":flash XXXX", where XXXX is the number of lines reported by the program
I recommend that you don't do this. Type in ":flash XXXX", where XXXX is the number of lines you counted in your hex...
For speaker analysis and correction, this is great.
https://www.roomeqwizard.com/
If you want to do convolution based correction, then just use the impulse response from REW and also use...
OK, I checked and some notes:
T4 with a small heat sink attached
It runs about 45C (far far different than the graph)
Slowing from 600 to 528 is only a couple of degrees cooler
wfi makes no difference
extern...
In many cases, one could include this in their idle loop, which I understand reduces power/heat more than slowing down to 450 mhz.
asm volatile("wfi");
There was some discussion of strlcpy(). IMO, don't just use it, use it and check the return value. Ie:
if (strlcpy(dest, src, sizeof(dest)) > sizeof(dest))
handle_error();
My experience is that paste is better, even when you don't have a stencil. But I save time and frustration - unless JLCPCB puts most of the parts on, I always order a stencil. More advice - use a syringe + tubing to...
See here for a newer, better teensy 3.x version:
https://forum.pjrc.com/threads/43165-Over-the-Air-firmware-updates-changes-for-flashing-Teensy-3-5-amp-3-6
I use the audio library with USB input and SPDIF optical output. I have no noise issues.
You haven't explained what you need to do, but stay digital as much as possible and if you have to do a A/D or D/A conversion,...
IMO, the memory allocation details should be abstracted away for the typical use case. Ie, a single mallocX() call where you optionally pass it a hint as to the speed desired (or other requirements like DMA...
I'm curious, is there any reason that the library shouldn't have an empty constructor and do the initialization in begin()? In any case, just crashing is poor design.
My understanding is that if you omit the stop, then the bus isn't released and, with your slave chip/application, the following start isn't needed/tolerated.
But the libraries don't provide a way to do this.
Good that you found something that works. As I see it, your application could use less buffer space if it had something like this for all but the first and last portions:
endTransmission(omitStart, omitStop);
There is a nice spreadsheet coefficient calculator/visualizer here:
https://www.minidsp.com/applications/advanced-tools/advanced-biquad-programming
+1 on using the teensy code (see...
Two questions:
I use partitioned fast convolution to greatly reduce filtering delays. Can't partitioning be used for this application?
If one does use 96 biquad bandpass filters (which seems feasible), does the...
I only looked at it briefly, but that code appears to be doing a FFT and then combining bins. Not clear why so many people write code without comments.
Agreed, the typical person watching is likely to prefer larger bins and less delay. You can still use the same number of lights, probably most people won't notice the lack of accuracy on the low end.
+1 on combining bins. Say you down sample to 11K sps, then run a 22,000 sample FFT. Each bin would represent .5 hz.
The DD4WH code is an example of large FFTs.
If one is going to mix digital circuitry with analog audio, better to use differential/balanced for the audio. Or stick with digital audio (eg, an i2s microphone).
With com0com, you would just have to write the code to move bytes over TCP.
http://com0com.sourceforge.net/
Or possibly this:
https://tibbo.com/support/downloads/tdst.html
With interrupts, it's critical to be clear about during which stage. The first when data is being moved from input to upper flash and the second when upper flash is being moved down to lower flash. There were some...
I didn't look closely at what you are doing, but in general, for low jitter input, you can disable interrupts while waiting for the next pulse. Or use an interrupt of the highest priority to capture pulses.
A fine but important point. When you use the teensy clock to measure a ratio between two external clocks, drift in the teensy clock is mostly irrelevant. Because it effects both measurements equally. Jitter goes...
When you talk about "ground", you need to specify which ground. For example, the teensy could have one ground and your other equipment could have a different ground. Don't connect these grounds together and the teensy...
Note that if your teensy and the other equipment don't share a ground, then the ground of the other equipment can be at the teensy VGND level. Ie, it can work, even without balanced inputs on the other equipment.
...
Depending on volume, I'd try hard to have all parts on the same side (which appears to be possible in this case).
After being fooled too many times about solder bridges, I stopped connecting adjacent pads directly...
To reduce confusion about which serial port is which, I've added the SYMLINK option to the teensy udev rules. IMO, something like this should be standard.
KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0",...
> Actual result: Just the i2c address is written. The clock only transmits 8 pulses.
i2c on t4 works fine.
Here is a relevant quote from a description of the protocol:
"Each byte of data (including the...
I recently wrote some quite similar code (for exact audio clock matching). When you are ready, send me a message if you want the code.
Basic technique is to measure clock A with the teensy clock and clock B with...
I'd feed a GPS 1 PPS into a teensy 4 and not use an external oscillator. The teensy will be able to measure the 1 PPS and pendulum signals with its 600 mhz clock.