Atxmega UZEBOX compatible without AD725
Posted: Sun Jan 09, 2011 12:11 pm
Hi.
The UZEBOX project is really nice. I could not imagine that there was enough peoples with enough interest to build a large enough community to be fun and constructive, with a wiki, a forum, a lot of games, ect...
Congratulation to all UZEBOX contributors and programmers.
It's my first post here in the UZEBOX community. Maybe some already know me for my projects on YOUTUBE other don't. UZE666 know me a little, but not more.
So first, I will introduce myself.
My name is Cedric, and I love microcontrollers and hardware programming. I have done a lot of stuff and I have a solid experience in microcontrollers. I'm also known for my famous RGB virtual clock. (Link here: http://www.youtube.com/watch?v=l4F8UbM-1t4 )
In the past (A little before the UZEBOX project) I made my own video game console.
here a picture of it:
The design is a little more complicated than the UZEBOX because it have 128k RAM and is memory mapped instead of Tile maped.
Links here: http://www.youtube.com/watch?v=SmvFiUMfgZw
and here: http://www.youtube.com/watch?v=RYyAlQygg-k
Ok for presentation, nowLet's talk about the principal subject...
Since the atXmega is now wide available, I wanted for long time to try to generate Video with this fast MCU. So, this weekend, I have adapted my video game console code to run on an atXmega.
I have made a lot of overclocking tests with the Xmega, I know that it can run stable at 42.9546 MHZ(14 times the 3.58 Mhz color burst frequency) without problem.
Here a video of a test I made, it play a video in 65k colors in DMA (Yes the new functions available in the Xmega series, really Cool), on an 128x128 Oled screen, overclocked to 44 MHZ without any trouble
Link here: http://www.youtube.com/watch?v=LC7Ql95Xm1k (I know the quality is not really good...)
Anyway, I have ported my code and adjusted all the precise video synch to work with the Xmega at 42.9546 Mhz. I first wanted to use the integrated DAC port inside the Xmega to generate video directly with this pin, no external parts needed. It worked nicely, in black and white only. The DAC is not fast enough to do the 3.58 MHZ burst.
So I ended with a different approach... Simply using R2R resistor network to drive the signal. After all, it's only a few more resistors, and all peoples are able to solder them, and cost under 50 cent for the complete R2r DAC port...
It worked really nicely. Here is a picture of the first color signal entirely generated software and interrupt driven: Here is the little schematic of the setup for the video generation: So, what I believe, is that is possible to adapt the video/audio drivers, to be compatible at the same time with the actual UZEBOX games(only need to recompile the source code with the new Xmega drivers) and having at the same time the new features only available to the Xmega MCU like the DMA, the 16kbyte RAM, 256k Flash, DMA access ect...
So now the first think I will do, is finishing my interrupt routine with memory mapped Pixels, and I will update this post.
I don't know if it will be realisable, I will know it when I will have completed my video routine and displayed some graphics...
See ya!
best regards, Mast3rbug.
The UZEBOX project is really nice. I could not imagine that there was enough peoples with enough interest to build a large enough community to be fun and constructive, with a wiki, a forum, a lot of games, ect...
Congratulation to all UZEBOX contributors and programmers.
It's my first post here in the UZEBOX community. Maybe some already know me for my projects on YOUTUBE other don't. UZE666 know me a little, but not more.
So first, I will introduce myself.
My name is Cedric, and I love microcontrollers and hardware programming. I have done a lot of stuff and I have a solid experience in microcontrollers. I'm also known for my famous RGB virtual clock. (Link here: http://www.youtube.com/watch?v=l4F8UbM-1t4 )
In the past (A little before the UZEBOX project) I made my own video game console.
here a picture of it:
The design is a little more complicated than the UZEBOX because it have 128k RAM and is memory mapped instead of Tile maped.
Links here: http://www.youtube.com/watch?v=SmvFiUMfgZw
and here: http://www.youtube.com/watch?v=RYyAlQygg-k
Ok for presentation, nowLet's talk about the principal subject...
Since the atXmega is now wide available, I wanted for long time to try to generate Video with this fast MCU. So, this weekend, I have adapted my video game console code to run on an atXmega.
I have made a lot of overclocking tests with the Xmega, I know that it can run stable at 42.9546 MHZ(14 times the 3.58 Mhz color burst frequency) without problem.
Here a video of a test I made, it play a video in 65k colors in DMA (Yes the new functions available in the Xmega series, really Cool), on an 128x128 Oled screen, overclocked to 44 MHZ without any trouble
Link here: http://www.youtube.com/watch?v=LC7Ql95Xm1k (I know the quality is not really good...)
Anyway, I have ported my code and adjusted all the precise video synch to work with the Xmega at 42.9546 Mhz. I first wanted to use the integrated DAC port inside the Xmega to generate video directly with this pin, no external parts needed. It worked nicely, in black and white only. The DAC is not fast enough to do the 3.58 MHZ burst.
So I ended with a different approach... Simply using R2R resistor network to drive the signal. After all, it's only a few more resistors, and all peoples are able to solder them, and cost under 50 cent for the complete R2r DAC port...
It worked really nicely. Here is a picture of the first color signal entirely generated software and interrupt driven: Here is the little schematic of the setup for the video generation: So, what I believe, is that is possible to adapt the video/audio drivers, to be compatible at the same time with the actual UZEBOX games(only need to recompile the source code with the new Xmega drivers) and having at the same time the new features only available to the Xmega MCU like the DMA, the 16kbyte RAM, 256k Flash, DMA access ect...
So now the first think I will do, is finishing my interrupt routine with memory mapped Pixels, and I will update this post.
I don't know if it will be realisable, I will know it when I will have completed my video routine and displayed some graphics...
See ya!
best regards, Mast3rbug.