Converting my T4.1 photo transfer app required changing two lines of code and adding another to open SerialUSB1. It took a lot more lines to open a second serial port on the PC and to separate out the terminal text...
DOH! (Forehead Slap). I should have seen that when I was adding MTP to the USB descriptions file. I'll try it out on my C++ Builder host. After that, I hope to get a processing sketch with the same control and...
I would like to know if there is a way to have the Teensy USB cable support two separate serial communications links. At present, my host program handles text I/O and high-speed binary transfers on the same serial...
After a bit more research on JPEG encoders, I found tooJpeg by Stephan Brumme. This encoder offered some significant advantages over the earlier version:
1. No requirement for 256KB of precomputed lookup tables in...
I have used the PXP for several functions to support the ILI9341:
1. Convert YUV422 data from an OV7670 camera to RGB565 for the ILI9341.
2. Rotate the camera data to match the ILI9341 rotation zero. (Not too...
I've downloaded a JPEG compression program and adapted it to run on the T4.1 to which I've connected my OV7670 camera. The original code used malloc() to allocate 256KB of buffers that hold pre-computed constants used...
I am cleaning up my library code for the CSI camera interface and the Pixel pipeline. One thing that I want to do is to have the ability to notify users of status and errors. Presently, that is done by returning...
Nice to see you have things working for your application. I didn't run into the glitch with CSCOEFn restoration as my scheme for saving and restoring a Next_PXP array pulls all the data from the PXP and stores it in...
Using MTP to fetch files written by a data logger seems to fit within the MTP usage scheme. The data logger firmware is responsible for handling the file system and the Storage portion of the MTP responder handles the...
I would go even further and move those I and Q arrays into DTCM to avoid any possibility of cache interference with the collection. As defragster points out, it is only 33K of memory, but that is 1KB past what I think...
I agree that sending a command via serial to cause the MTP responder to update its database seems weird. There are some cases where it can be useful:
1. If the Teensy is in the middle of a data logging session...
Also make sure that your software doesn't rely on comparisons with millis() for timing. The millis() count will overflow in 49.7 days. Of course, micros() overflows even more quickly.
You are correct that the external and USB5V are in parallel in that they both connect to the input of the Teensy regulator that provides 3.3V. You need to disconnect the USB5V by cutting the jumper between the pads on...
Note that it is not necessary to physically unplug the USB or use the Windows device manager to get the PC to update the MTP status. A call to usb_init() will reset the usb link and windows will treat this like a USB...
Not only plausible, but likely. The T4.x USB serial interface is capable of transmitting about 18-20MBytes/second, while the T3.X interfaces are limited to about 1MByte/second. I was able to transfer large files...
I agree with rcarr that having NUMLAMPS = 7 and incomplete initialization of the pwmPins array is a problem waiting to happen.
I wrote a short sketch to check out the values in the pwmPins array and got these...
A follow up note with some PXP conversion timings:
VGA YUV422 to QVGA RGB565 70.43mSec
QVGA YUV422 to QVGA RGB565 22.15mSec
QQVGA YUV422 to QVGA RGB565 10.13mSec
Another anomaly...
I've made good progress on one of my goals: having the PXP convert incoming YUV422 image buffers from the OV7670 camera to QVGA RGB565 buffers for display on an ILI9341 board. I have a test program that accepts ...
After a couple of days of programming that seemed way too close to working for a living, I have the OV7670 sending YUV data to my PC host program. A lot of the programming was in the addition YUV display to the host...
I faced similar issues about 5 years ago when I built a Robo-Boat to do depth surveys of lakes with an onboard depth sounder. I eventually developed software to have the boat do a raster scan with 5-10m line spacing...
Here are two demo programs that set up the pixel pipeline to do rotations.
The first program does the actual PXP setup, with OV7670 Camera output rotated and displayed on an ILI9341 TFT module. The PXP setup is also...
The first thing to realize is that a GPS doesn't do direction of motion well unless it is moving at a significant speed. If your system is an aircraft, that is usually not a problem because if it stops moving it falls...
I also have a couple of projects that will benefit from dynamic changes in the PXP operation with the NEXT_PXP capabilities. For example:
1. Set up the OV7670 camera to produce a VGA image in the YUV422 format.
2....
There seems to be a bunch of mental overhead in the updating of the next_PXP structure for what I see to be slight gain. I see it as necessary only if you are going to do two different things in succession that require...
I did a simple test to measure the time needed to rotate a QVGA image by 90 degrees using either a programmed rotation or a PXP rotation. Here are the results:
Rotation times as a function of memory source and...
The ability to capture and store a full VGA image, while displaying a QVGA or similar smaller image on an LCD display is one of the reasons that I'm looking at the Pixel Pipeline. If I could set up the PXP to scale...
I just started putting together some pixel pipeline code today--aimed at comparing its rotate function with a software version in terms of speed and complexity. I haven't even started on the overlay stuff, so you're...
I changed the algorithm to step incrementally in destination addresses and got the following:
DMAMEM EXTMEM 7919 to 8109
DMAMEM DMAMEM 1062 to 1110
here is the source for the modified rotate function:
...
KurtE:
I see that you have avoided possible frame buffer overflows by putting all the buffers in EXTMEM where there is plenty of room for a VGA image. You have also avoided resolution changes in the program once...
Since using some of Vindar's functionality prefers rotation 0 on the ILI9341, I tested the time to rotate an image 90 degrees to work with that screen rotation.
Here are the results for rotating a QVGA image as a...
I had a version early on that captured images by switching the CSI buffer address for one cycle. It worked fine until I forgot and changed from QVGA to VGA and switched in a QVGA-sized buffer. Needless to say, the...
Unfortunately, screen rotation 0 does not play well with the OV7670. You need to use rotation 3 to get the long axis of the display to align with the long axis of the camera window. Does the rotation matter as much...
I look forward to trying this library. I will have to do a bit of rewiring to use it. I am currently running ILI9341_t3N with pin 9 wired as the D/C control. Since pin 9 is not an SPI CS pin, I will have to move...
My OV7670 camera library, which just got a new version posted in the Project Guidance forum, is guilty of the brute force reinitialization of all camera registers on a resolution change. I need to rethink the...
I've posted a new version of the OV7670 library. Here are a few of the changes:
* Fixed a bug where the .bmp file header was not properly updated when changing the camera window size.
* Added support for sampling...