albertinjo wrote:Muessigb wrote:albertinjo wrote:Hello adeko and hello Muessigb
First of all this module of yours sounds amazing.
I can't wait to see the real thing.
Ohh and the name is just perfect "The NINJA board".
You said you will boost SRAM with 256KBytes of extra memory!?
Is that even possible? How do you plan to do that? I was googling this "expanding RAM" topic quite some time ago. Some people are expanding RAM on microcontrollers used on Arduino, have you ever heared of the SpiRAM project? Do you plan to use something like this?
If i understand everything correctly you are trying to expand SRAM memory on ATmega328p-au microcontroller, is that even possible??
Regards
Albert
Hello!
Great that you like the board!
About your question, yes, I have a 256KB ram chip right on the Ninja Board. Using the yet to be made library for interfacing with the Ninja Board and some yet to be done client program, you can use the full 256KB of the external RAM for global variables. The full 256KB are supported by the BuinoBasic VM (in development) aswell, which might get a garbage collector to deal with all the RAM.
Behind everything is a address demultiplexer and a SPI Ram chip from microchip. The magic happens in software.
The Gamebuino has full control over the RAM (for maximum speed), but needs to get the variables stuff done by its own (no help by the Ninja coprocessor).
I will look into the SpiRam project. Thanks for pointing it out here.
By the way, the Ninja Board interfaces with the Gamebuino over hardware SPI. It has an OLED and a keypad matrix, that can be customly changed by every game (it can be a text keyboard, an inventory selector for an adventure game, a calculator and more). The Gamebuino is even able to remotely update the firmware on the Ninja Board from the SD card. So you can write your own firmware for it and upload it using the Gamebuino (no FTDI cable or AVR-ISP programmer needed!).
The Ninja Board's coprocessor is an ATmega328p @ 8MHz aswell. All the unused pins, the I2C pins and the SPI pins are brought out, making the board easily hackable (you can add WLAN, Ethernet, PS/2, the XBox 360 Chatpad, a Joystick, Bluetooth, ... - without putting any load on the main CPU and keeping it free for the actual game or application).
I hope this explanation helps understanding the way it works and gives a better overview over some of the features.
Hello Muessigb
Wow, the stuff you wrote sounds AMAZING!
Thanks for the well written explanation!
Now you got me interested. Is that chip of yours SRAM or SDRAM? Ohhh 256kB of RAM, I still can't believe you are saying this is actually possible, this would open many new capabilities!!!
Muessigb, do you mind a few more questions?
1)What would be the speed of that RAM chip of yours interfaced with the ATmega328?
2)That yet to be made library, it sounds AMAZING!!! Are you writing it especially for interfacing it with the ninja board? I can imagine tons of different projects I could use a 8 bit Arduino compatible MCU with RAM expanded to 258kB. Will that yet to be made library be compatible with some other projects as well? You will release it open-source? I am really interested in it!
3)8MHz? Why 8MHz is that something specific you need for your project? Or is it just for making the design simpler?
4)ATmega328p, hmm...on the picture above, there is a concept of the ninja board, hand drawn. But I can clearly see the cheap Arduino PRO MICRO board, possibly from ebay. Haha I also use this things. But.. on these boards microcontroller ATmega32u4 is used, not ATmega328p??? Why is it in the picture then? Just for decoration...or?
Anyway the NINJA BOARD sounds great, but I think I won't preorder it before I see that RAM chip interfaced with Gamebuino in action.
Regards
Albert
Hi Albert!
The RAM is SRAM (static ram), what means, that it doesn't need to be refreshed periodically.
The speed of the ram should be around 488KB/s with a little speed loss caused by the address decoder.
If you want to read more about the RAM, you can find the datasheet here:
http://ww1.microchip.com/downloads/en/DeviceDoc/22100D.pdfI guess this is enough anyways
Well, about the library, it will be two parts:
- One part is for interfacing with the Ninja Board, which should work on any Gamebuino, Arduino and other compatible ATmega chip.
- The other part is for interfacing with the SRAM on the Arduino or other ATmega chip.
And BuinoBasic (a compact VM for ATmegas, that I am working on in the background, which is programmed in Basic and then compiled to bytecode; and which supports the SRAM natively) will support all ATmega's with enough internal SRAM for basic storage (stackpointer, address, etc.).
And yes, I will release it on GitHub, under my favorite licence: the MIT Licence.
About the speed of the ninja coprocessor, it is clocked at 8MHz, because the board should not draw to much power and because 8MHz @ 3.3v is not overclocking the processor and it is supported by the Arduino's core library. The whole Gamebuino works on 3.3v and it is overclocked by around 20% of its rated speed actually. TDLR: I just wanted to be on the safe side and keep it battery friendly.
Oh yeah, that was only a concept of course.
The board is now finally designed.This is as small as we can get. This is alread Version 3.15 of the module.
I redid the board 3 times now, with 15 large modifications since the last redo.
Sorry for the size, I was using only through hole components to make it easy to assemble for non-smd-people.
I will, if there is any request, make a smaller board aswell, which only has a few buttons and an SRAM chip and maybe some sort of small cheap oled.
So here is a mockup of the module now:
Greetings,
Benedikt