steady2025
New member
Hi everyone
I'm considering creating a video converter similar to this one https://github.com/AlexEkb4ever/ZX_RGBI2VGA-HDMI, but with Teensy and tailored to a specific model of a retro PC. The converter is necessary because the frequencies and video resolutions of the incoming and outgoing signals differ. For example, retro PC produces 320x192 pixels at 50Hz video, while VGA has 640x480 at 60Hz mode. Therefore, some scaling, padding, centring and buffering is needed.
I'm looking for information or examples of DMA programming and the usage of voltage comparators with Teensy 4.1 and C++/assembly.
The project requires reading the output R,G,B,SYNC signals into a frame buffer using DMA or a similar technology and simultaneously have a second DMA sending data from the buffer to a VGA R,G,B and SYNC pins.
Therefore, the minimal implementation requires two DMA-like processes with ISRs running at around 25 Mhz speed each.
Additionally, it would be great if Teensy is capable of performing voltage comparison and converting the incoming signal into digital values. For example, RGB pins of the retro PC can have 0V - for black, 1.8V - normal colour level, and 3.3V - bright version of the colour. If Teensy could convert these levels into digital representation, it would be great. Otherwise, some circuitry will be needed to split normal/bright colour levels and supply only HIGH/LOW values to two separate input pins of Teensy for each of the R, G and B signals.
Any links on DMA programming with ISRs and minimalistic high-speed ADC, or hints on how my task could be achieved, are highly appreciated.
Thanks!
I'm considering creating a video converter similar to this one https://github.com/AlexEkb4ever/ZX_RGBI2VGA-HDMI, but with Teensy and tailored to a specific model of a retro PC. The converter is necessary because the frequencies and video resolutions of the incoming and outgoing signals differ. For example, retro PC produces 320x192 pixels at 50Hz video, while VGA has 640x480 at 60Hz mode. Therefore, some scaling, padding, centring and buffering is needed.
I'm looking for information or examples of DMA programming and the usage of voltage comparators with Teensy 4.1 and C++/assembly.
The project requires reading the output R,G,B,SYNC signals into a frame buffer using DMA or a similar technology and simultaneously have a second DMA sending data from the buffer to a VGA R,G,B and SYNC pins.
Therefore, the minimal implementation requires two DMA-like processes with ISRs running at around 25 Mhz speed each.
Additionally, it would be great if Teensy is capable of performing voltage comparison and converting the incoming signal into digital values. For example, RGB pins of the retro PC can have 0V - for black, 1.8V - normal colour level, and 3.3V - bright version of the colour. If Teensy could convert these levels into digital representation, it would be great. Otherwise, some circuitry will be needed to split normal/bright colour levels and supply only HIGH/LOW values to two separate input pins of Teensy for each of the R, G and B signals.
Any links on DMA programming with ISRs and minimalistic high-speed ADC, or hints on how my task could be achieved, are highly appreciated.
Thanks!