My project idea & I need help in hardware choice

Talk about (almost) anything

My project idea & I need help in hardware choice

Postby Zvoc47 » Tue Oct 06, 2015 12:42 am

Hello.
I've been thinking about a new game console for a while. It would be something like a little AVR computer with creative capabilities. It would be something like Gamebuino, but focused on the computerish part and user-friendliness without the PC.

I didn't get enough help on AVRFreaks and people told me to move to ARM and that would be mission impossible. I'd need to make my own PCB with 8 layers for external flash and RAM. Why not just have all that in one chip? So the persistent me goes on and on to make his idea come true. Here's my plan.

Looking from the outside, it should have a touchscreen sensitive not to just skin, but stylus like Nintendo DSi;, embedded keyboard (designed by me), joypad buttons, speakers, microphone, jack for headphones with a microphone, potentiometer for hardware-style volume changing, SD card slot, USB device slot, 2 TWI slots for multiplayer stuff.

Looking into its guts, it would have either an ATMEGA2560 or an ATXMEGA128A1 as the main MCU. This choice is a very big problem now and that's why I need your help (you'll see in the later paragraph). Then, it would have a VLSI chip for playing and recording music *hardware style, man 8-) * and also for live MIDI playback which will be used in a music composing program. I've studied the datasheet and I just love it! That's the key part because of which I want to make the console. The console would, of course, have the FTDI chip for USART communication, programming, reset and debugging with a special program based on my final school project (let's call it a cheap JTAG replacement). It would also be pleasant to make the console have an internal flash storage chip to save progress if the SD card isn't present or to transfer files from one SD card to another. However, I'm not sure if that's a good idea since it would require lots of SPI activity and filesystem library coding which I have no idea about and which is why I need your help to study with me. I don't know if anyone has even tested that out and how fast that even is.

The screen is also a problem. I got a TFT 2.2 inch shield and couldn't draw faster than 3FPS!!! Therefore, that's impossible to use for a game console. I was thinking about a touchscreen e-paper. Healthy for eyes, good to mimic the paper for animation (since there will be an animation program). I've seen that those have lots of wires for temperature control and stuff. I don't know is it worth it. If not that, then I'd like to use a TFT/LCD touchscreen with a parallel port for faster speed. Unfortunately, I can't find those! And I'd need to have those in a small screen resolution like 128x160 and not those big phablet-like 320x240's. So can anyone please help me find those? I tried, but no luck. I actually think I found some, but they weren't soldered on any breakout board without which they are useless to me and they didn't have any drivers from Adafruit.

The console would have a real time operating system; either one I can get online or one I can program while reading Advanced Windows book about how operating systems are made. The built-in programs would be: File manager, text editor, picture viewer, music player, audio recorder, MIDI composer/arranger, Flipnote-Studio-like animation maker (which needs external RAM or a pagefile in the external flash storage chip or in the SD card. Should export GIFs and BMPs), BASIC language IDE with an internal homemade bytecode compiler & executor, organizer stuff (calculator, alarms, calendar,...). The best part about security and how AVR's don't have virtual memory for multiple processes is that all user programs will be actually an interpretted bytecode so that the users won't have to upload the programs every single time, but instead just compile them directly on the go. :)

I'm not sure if I'd like to use an XMEGA because it's not supported by Arduino and a lot of code from lots of libraries is waaaay different. From I/O addresses to peripheral registers to pin registers (which are actually good since you can just write to PORTfoo_ -DIR -DIRSET -DIRCLR -DIRTGL -OUT -OUTSET -OUTCLR -OUTTGL -IN instead of messing around with the bits and logic operations which takes time). However, Xmegaduino supports it, but its Kickstarter crowdfunding failed and it's no longer being worked on, as much as I know. My XMEGA has 32MHz of processing power 128kB of Flash, 8kB of internal SRAM, 100 pins (if I'm not mistaken, I haven't opened that little monster for a while) and the only/best XMEGA out of two with an external bus interface which is required for picture animation, text file loading, resource loading in games, etc.. In a previous beefier project which couldn't become real, I thought that video buffering might be a good idea, but it wasn't since the external bus interface is very very weak and slow if lots of address lines are used, hence the project didn't come to life. Plus, the C++ compilers that are free only support 16-bit pointers for up to 64kB of data memory and cannot access all the XMEGA's 16MB! The linker doesn't support it either so declaring static/global variables there or the heap in there is impossible. I was so angry at this and people told me to move to ARM and the only compiler fixing this is Embedded Workbench which costs like a new car! But still, I've kept finding my workarounds in this to such an extent to even attempt programming in ASM! So to prevent all that drama, I'm planning to pick a 64kB SRAM chip for faster MCU speed, less PCB layers, thereby smaller cost, more memory. Luckily, ATMEGA2560 has XMEM for external memory too and it fits just well with those 64kB. Chances are that I'll be choosing ATMEGA2560. I'll have 256kB of Flash, but unfortunately just 12MHz of speed instead of 32MHz. Also, if I'll be using a parallel port display and external RAM, I might put those two together and have 32kB of RAM and the other 32kB of address space is used for the display. Just need to toggle some bits like shown in a tutorial.

What's your opinion on that? Do you like the idea? Do you think this is possible to make? Is it worth a shot like Gamebuino or is the market already flooded with too many retro consoles that this one won't be able to compete?

I have 4 years of C experience, 3 years of C++ experience, 2 years of AVRASM experience and 1 year of BASCOM-AVR experience, studied basic, analog and digital electronics in my old high school, made a PCB, got two A's for my final project and I have lots of ambition, just need to find a firm path that doesn't have "knowledge holes" as I call it.
Zvoc47
 
Posts: 56
Joined: Mon Oct 05, 2015 10:03 pm

Return to General forum

Who is online

Users browsing this forum: No registered users and 8 guests