A good solution for student lab use might be the Adafruit MCP4728 quad 12-Bit DAC
https://learn.adafruit.com/adafruit-mcp4728-i2c-quad-dac
It's reasonably priced at $7.50 and in stock. It uses an I2C interface,...
The AN232B-04 app note is a pretty good explanation of what is going on inside the FT232. Just search for "FTDI AN232B-04". It should be mandatory reading for anyone whose expectations of the serial-to-USB converters ...
I think you've hit the nail on the head. The advanced settings on the USB serial port on the Windows dialog seem to indicate that it will try to buffer 4096 characters or wait until there is a gap of 16 milliseconds...
Note that on MacOS Ventura, the Library folder is normally hidden and you will need to press CMD-SHIFT-period to make hidden files visible in the Finder.
I’ve just finished a test of a very long audio delay program that uses the T4.1 SD Card as buffer memory for a 105MB circular buffer. With 44.1KHz stereo input, this buffer allows delays up to about 10 minutes. It...
I'm not that familiar with the nuances of the current C++ usage of constructors. It may be perfectly legitimate to include a constructor inside a struct definition.
I have made my peace with an alternate way to...
Just a few notes:
1. You haven't told us which processor you are using. Compiler efficiency and processor speed for the T4.X CPUs generally means that using pointers versus array indices is not likely to yield...
It should be interesting to see how the Teensy Micromod compares with the T4.1 and T3.5. The MM uses an SPI interface rather than the 4-bit dedicated SDIO interface when connected to the Sparkfun Datalogging...
I have found that opening the file once at the beginning and calling sync() at regular intervals is sufficient to make files readable up to the last sync() position in case of a power failure. Sync() updates the...
I went with two overloaded options for the begin() function. One allows you to specify the buffer location, the other generates the buffer with malloc(). At this point, I'm hard-coding buffer sizes because using...
Six channels at 200 samples per second is not a particularly high rate. However, you want precise timing of the sampling you will need a more sophisticated program.
If you want to sample and store data to the SD...
If precise timing is very important, you should use the ADC Timer option in the ADC library. That option controls the ADC start of acquisition with a hardware timer and triggers an interrupt at the end of conversion. ...
I'm working on a generic SD-Card bases circular buffer library for the T4.1. This project is a modification of the SD-based long audio delay class that I have been working on over the last few weeks. The library...
The mic input on the audio board has a 2.2K resistor to the microphone bias output of the SGTL500 codec. Perhaps the codec chip is objecting to excess current draw on that microphone bias output. The small electret...
The attached zip file contains a sketch that is a proof-of-concept demonstration of the use of the SD card on the T4.1 as a large circular buffer to enable long audio delays. The demo implements a 20-second delay for a...
I think you need to add:
SetSyncProvider(getTeensy3Time);
to the setup() functions in your code. I think that call is needed to synchronize the time library functions with the hardware real-time clock.
...
I assume that you are calling SetSyncProvider(getTeensy3Time) to synchronize the time functions with the RTC. I have to make that assumption because you haven't followed the rule about posting source code with your...
I think a big plus on a revised TeensyMM would be to have the MCU and hold-down screw symmetrical about the centerline. Having them offset must place asymmetrical stresses on the thin PCB and solder ball connections...
Problems of this kind are often caused by different turn-on times of the two independent supplies. If your external 3.3V supply turns on before the 3.3V of the Teensy, peripheral outputs powered from the external...
While I have little experience with the audio capabilities of the T4.1, this thread does raise some interesting questions about memory management. The one that intrigues me the most is whether it would be possible to...
There are a couple of changes that should be made to ensure 3.3V compatibility:
1. D2 and D3, the 4.7V zener diodes in the input limiter to the analog pins should be changed to values below 3.3V
2. The encoder...
Have you considered adapting your project to use the T4.0? Unless you require the touch input or something specific to the T3.2 ADC, you should be able to plug a T4.0 into the T3.2 socket and recompile your software. ...
Yeah, I got so tired of making that mistake that I wrote a macro to remind myself that I'm setting a corner:
#define SetCorner(reg, h, v) reg = (h<<16 + v)
The macro is used like this:
...
I found your code in pop_lcd_diff_buff.ino a bit confusing. It seems that you call PXP_Init every time through the loop. I'm not sure it is a good idea to reset the PXP and set the buffers each time through the loop....
Did you remove the lines in PXP_Start from PXP_Init? I tried the same thing, but renamed the new function PXP_XStart(), since I already had PXPStart. Every thing seemed to work as expected. Even if I removed the...
I think you're on track. I did a lot of experimenting with buffer offsets and PS buffer definitions when I did my slide show application. I was doing image scaling for zoom effects, offsets to move the slide...
AHA! If you trash the cache on every reference to EXTMEM, you lose the performance benefit you would get for every transfer from within the cache. This shows why cache management requires careful analysis. ...
I get this, and I understand that you might not want to add tests for memory source and destination regions to all memcpy() calls, as the function has been written in assembly for maximum performance.
However, there...
I've been working with the PXP and CSI to collect and process camera images. Recently, I was writing a test pattern into a DMAMEM or EXTMEM buffer, then processing it with the PXP. It seems necessary to use an...
This issue was due to the fact that I was not calling arm_dcache_flush_delete((void *)PXP_PS_BUF, bsize); BEFORE the rotation. I was writing the pixel pattern into the source image in a foreground function, and some...
I assume that you are using an NPN transistor, and when the input goes high, the transistor turns on and pulls down the Teensy input pin. This is a circuit that calls for some filtering capacitors either at the Teensy...
I've figured out the problem I was having with the rotations. I was not properly setting the PXP_OUT_PITCH register before doing the rotation. That register sets the number of bytes between two vertically adjacent...