Microtouch: 8-bit Open Source Media Device 115
First time accepted submitter misterbarnacles writes "The Microtouch is a mobile media device that aims to become an open-source alternative to the iPod Touch."
Deeper investigation reveals that the Microtouch is a nifty little device. Powered by an 8-bit microcontroller with only 2.5K of RAM there is an example ebook reader application. A primitive application framework (for some definition of the phrase) is available as Free Software, and for the hardware hackers the EagleCAD PCB files are published under a CC attribution-share-alike license.
For a low-power 8-bit MC with 2.5k RAM... (Score:1)
Re: (Score:2)
Re:For a low-power 8-bit MC with 2.5k RAM... (Score:4, Informative)
I think the touchscreen is single-touch only, but pressure sensitive (from the diagnostics screenshot). The article does say it has an accelerometer.
For DIY purposes, it would be cool if it had any other I/O besides USB -- e.g. ADC or just serial-- which isn't clear to me.
Re: (Score:2)
You can plug a SPI device into the microSD slot (there is something in the works on a .8mm pcb that does this) or if you are really stuck you can use the ISP port + overload the LED pin for device select.
Not the route I'd want to take, personally. Probably better off having your own board made if you're comfortable with smd work and want exposed points. Maybe ditch the accelerometer and do an i2c bus or something?
Re: (Score:3)
hint: add xbee to its serial port and have another arduino (etc) on the other side with an xbee on ITS serial port.
printf and scanf (well, sort of) after that. /end hint
Re: (Score:2)
Ah cute. I like it.
Jason.
Re: (Score:2)
Re: (Score:2)
I was very impressed with the video of it in use. It must be using a secondary CPU or dedicated controller for the LCD as there's no way the little 8bit ATMega could update the LCD that smoothly on its own. I'm really looking forward to getting my hands on one of these!
Re: (Score:1)
Great work, either way. It makes the fancy-pants project I'm working on at ${DAYJOB} look like a pile of crap, comparing xistor counts.
Cool concept (Score:2)
Re:Cool concept (Score:4, Informative)
8 bit audio? (Score:2)
8-bit audio sounds like crap. Can you even decode MP3s on an 8-bit processor?
Re: (Score:1)
From Wikipedia [wikipedia.org]
Re:8 bit audio? (Score:4)
You apparently didn't comprehend what you posted. The 24-bit dsp is what decodes the mp3s not the 8-bit cpu.
Re: (Score:1)
Sure, the latest "iTouchy" gadgets are pretty cool. But who wants a locked down device? Why not build your own touch-screen device, with your own apps, all on open source hardware and using open source tools? OK, it can't play MP3s, but it does have a 320x240 TFT color display with resistive touch screen, an Atmega32u4 8-bit microcontroller, lithium polymer battery charger, backlight control, micro-SD slot, and a triple-axis accelerometer. Yeah, this is the next big thing and for those of us who like to DIY, you can do a lot of cool stuff with this dev board.
Re: (Score:2)
*facepalm* I was talking about what the person I was responding to quoted in their post. Reading comprehension ftw!
Re: (Score:2)
The person you responded you posted a viable answer as a response to the 8bit mp3 decoding question.
I don't see what you are getting off on...
Re: (Score:2)
No they didn't since the z80 doesn't.do the decoding. The dsp does.
Re: (Score:2)
Re: (Score:2)
Re: (Score:3)
Furthermore, since we are going to be talking about irrelevant crap because of the Hatta's in this world, most DAC's in digital audio players are only 1-bit. [wikipedia.org]
Stop posting.
Re: (Score:2)
1-bit is marketing speak. its about shifting the high freq above the passband (for tech reasons) and for keeping parallel (costly) interfaces down.
INSIDE its a shift register and then a dac.
1-bit is stupid marketing speak. whatever the native word length (spdif is 16/20/24 only) is, that's what the dac has to decode. '1 bit' is bullshit as it only is a transfer protocol, not a decoding method!
1-bit DAC defined (Score:5, Informative)
Re: (Score:2)
In that case, the information is in the timing of the edges. Anyway it is not "1 bit" of information.
That's like saying serial communication is 1 bit.
Re: (Score:2)
Re: (Score:2)
Serial communication is 1-bit. It just takes a higher transfer rate compared to 8-bit parallel, for example. The essence of information transfer is how many total bits of information you have per second, not the size of the parallel bus you use to transfer them. In fact, no matter how many bits you use, the information is still in the timing of the edges, just like you said.
As for the 1-bit DAC, you can forget about PWM and delta-sigma for a while. They are refined implementations, but the basic ideas of
Re: (Score:2)
Cool, thanks. I had a Sony Discman in high school that had a "1-bit DAC" marketing sticker on it. My college 'Physics of Music' prof told me it was PWM, but the article you posted finally clears it up for me. One more off the eternal 'figure this out' list!
Re: (Score:1)
Sorry, 1-bit is not a transfer protocol as 1-bit it is a name for a delta-sigma modulation based DAC, technically it is related to a pulse-with modulation (PWM), class-d amplifier and pulse-density modulation.
Re: (Score:2)
Re: (Score:3)
Not with this thing, at least... from TFA:
OK, it can't play MP3s, but it does have a 320x240 TFT color display [...]
There may be many cool possible DIY apps, but I wonder how this is a "media device", yet alone an iPod competitor.
Re: (Score:1)
I take it that the stated RAM doesn't include video memory, right? Because at 320x240, even with only 1 bit per pixel you'd need 9.6KB, and that gives you no color.
Re: (Score:2)
Re: (Score:2)
You've never used vga mode 0x13h?
It's an 8bit framebuffer mode, 64k in size...
Must not be very old to have NEVER played with it...
Re: (Score:3)
Never on an 8bit microcontroller, no. On an 8bit graphics processor, yes (the memory was on the processor, not on the microcontroller).
However, the vga mode 13h[1] was not necessarily frame-buffer backed[2]; I used a pointer to a framebuffer at memory 0xb4000000 (I think it was this particular address, not too sure) with the full knowledge that that memory was not on the microcontroller.
However, to keep some perspective, I was referring to the PIC's, the atmels and similar microcontrollers - none of them
Re: (Score:2)
Re: (Score:2)
IIRC, 13h was a 64k window from the adaptor itself mapped into the adaptor rom region at A000. The memory was native to the vga adaptor and writes to it were "live" at the next vertical retrace. Calling the vertical retrace function was not explicitly needed, but helped reduce snow on garbage vga chips.
Re: (Score:2)
Real hackers used unchained Mode X of course ;-) Mode 13h chained 4 segs together to give nice easy linear addressing, but it meant that the other 3 segments were wasted, so offscreen buffering and smooth hardware scrolling etc wasn't available.
If you're interested in that sort of hacking now, and Arduino + Gameduino shield is a good alternative, I've found ;-)
Re: (Score:1)
A pure text mode display could not show graphics. This device does show graphics. That graphics has to be stored somewhere, and sent from there to the screen.
Graphics in text mode (Score:3)
A pure text mode display could not show graphics.
The Nintendo Entertainment System has a pure text mode display, albeit with sprites on top. Games show graphics by redefining the font to include pieces of graphics. In fact, some games (such as Color a Dinosaur, Elite, Hatris, Qix, and Videomation) operate by rewriting the font in real time, treating the font sheet as if it were a bitmap with its pixels in a funny order. But I'll grant that the graphics on this device don't look anything like text mode, so the VRAM must not be part of the 2.5 KiB, just as
Re:8 bit audio? (Score:5, Informative)
Way back in the ancient days of yore (when 2600 was a videogame system and not a magazine dedicated to hacking), there was something called a "Sprite", and its purpose was to allow you to control individual pixels of a "large" (or what passed for it in 1977) and sparse display with lots of potential pixels, and very little ram. Back then, you literally had the following graphic elements at your disposal:
* A 20 pixel "playfield" that could be doubled, mirrored, and/or stretched. The 20-pixel chunk could be stretched, duplicated, or mirrored. You could reload its definition registers between scanlines and reuse it to display different things on different rows.
* A pair of 8-pixel sprites that could also be doubled, mirrored, and/or stretched. 8 pixels wide, one pixel high. You'd set it to some horizontal offset from the left, enable it manually when the raster reached a specific scanline, then leave it on until you got to the end of the last scanline where it should be displayed. If you wanted it to look different on the next scanline, you reloaded its 8-bit register with a new value.
* Three single-pixel sprites -- two missiles, one ball. They basically consumed ~two bytes apiece... one byte for horizontal offset, and one byte for control & attributes (width, motion-delay, etc).
Just to give you an idea how crude it was, there's a reason why the score digits in Circus Atari were uneven... it used player 0 to draw digits 1 and 2, and player 1 to draw digits 3 and 4. It drew digits 1 and 3 on the odd scanlines, then reloaded the register and offset to draw digits 2 and 4 on the even scanlines. When some game I can't remember came out that had a 6-digit scoreboard, it was considered groundbreaking because it went a step further, and reused the same sprite twice on the same scanline. It used player 1 to draw digits 1, 2, 5, and 6, and player 2 to draw digits 3 and 4. It defined the sprites for digits 1 & 3 or 2 & 4, then paused a few clocks and reloaded the byte for player 1 with the data for digits 5 or 6.
The crazy thing about the 2600 is that few of its limits were truly hard. I think someone a year or two ago actually hacked a homebrew 2600 cartridge using an ARM9 microcontroller that tricked it into doing 160x384 interlaced graphics (by tickling the vertical retrace clock register at exactly the right moment to trick the TV into drawing the next field as an even interlaced field instead of just redrawing odd fields over and over again) and did insane things like simulate cartridge rom so it could rewrite itself on the fly in ways that would have been physically impossible on any cartridge of the era. From what I recall, it actually sparked a debate among the 2600 homebrew community over how far you could legitimately go stuffing modern microcontrollers into faux 2600 cartridges to act as coprocessors before you defeated the whole point of saying it was a "2600 game". I think the consensus was that it was OK to do things like the later Activision games did (incorporating shift registers and stuff into cartridges to auto-update the bank of ram seen by the 2600), but pre-rendering 26 megabytes of video kernel code into 6502 assembly to reload the registers in slightly different ways, then spooling it from a microSD card was just being kind of silly. Still, it's kind of amazing what you can pull off with the crude, primitive chips in a 2600 when you're able to offload everything from program logic to kernel code onto modern chips, and just drive the 2600's bare metal "from the outside" (so to speak).
It's sobering, in a way, when you consider that much of what modern GPU chips do is software controlled as well, and think about just how far a modern GPU could probably be pushed if Moore's Law didn't automatically mean there'd be a version that's 500MHz faster on the shelves next year. If Mars were colonized today, had a videogame industry, and a new videocard on Mars cost $15,000 ($89.95 plus $14,909.05 shipping, with roughly 14-18 month delivery time), we'd probably see similar tricks being hacked out of 10 year old videocards by Martian programmers today.
Re: (Score:2)
My favorite one was adding a battery and real-time clock onto the cartridge so that the game could have specific times of the day when certain actions would be possible. Add a microcontroller and the cartridge would continue to play the game even when out of the console.
Other Enhancement Chips [wikipedia.org]
Re: (Score:2)
when 2600 was a videogame system and not a magazine dedicated to hacking
Flag down, ignoring a common cause.
It was remarkable that Atari was both a corporation and cool enough to name their flagship product after the Captain Crunch tone. Never happen today, which saddens me (OK, Facebook status updates are limited to 420 characters, but that's comparatively weak sauce).
(great comment, by the way).
Re: (Score:2)
#1: What cartridge WAS this? Not finding anything on it.
#2: I'd consider coprocessors in the cartridge a valid approach - look at Nintendo. In the NES era, they had "mappers" (which did a similar function to the Atari bank switching hardware in theory) that also had extra counters, added RAM, graphics upgrades, sound upgrades, IRQ generation, etc., etc. In the SNES era, they had DSPs, math coprocessors, second 65816s, and even full-blown RISC CPUs.
Re: (Score:2)
It probably could play MP3s as follows:
1. Tweak framework design to allow a background task.
2. Pre-render MP3s in the background and store the decoder output back onto the SD card. This may need ugly hacks like storing some tables at runtime in the built-in FLASH or EEPROM since RAM is short, but it'd work in principle -- probably at 1/10th of native speed or somesuch.
3. Play pre-rendered MP3s in the foreground.
Re: (Score:3)
I'm not 100% certain, but I'm pretty sure that single-bit SPI reads from microSD are too slow for realtime 16-bit PWM stereo. In other words, even if you buffered a few bytes in the chip's SRAM, the time it would take to physically shift 32 bits from the card (for the next two 16-bit samples) would exceed 1/44,100th of a second. In fact, if you were trying to bitbang 16-bit 44.1KHz stereo audio, I'm not sure you'd even have enough time to iterate through the 32 bits and decide whether or not the output sho
Re: (Score:2)
Huh? Using hardware SPI ports, I'm very comfortably acquiring 16 bit data at 80ks/s using an 8 bit CPU that runs at about 8 MIPS. And that requires pushing 3 bytes both ways to and from the ADC, using a rather roundabout way of getting DMA to handle that. Even if it run on interrupts, it'd still be "reasonable": about 2.5MIPS would be lost for interrupt handling. The SPI in this application pushes an aggregate of 3.84Mbits/s (half of it each way).
It'd take a fairly crippled chip to require bit-banging anyth
Re: (Score:2)
I do agree about the "moment of truth" though. But I personally like faster architectures -- XMOS XC-1 running at 125 MIPS per thread with 4 threads running in parallel lets you do some spectacular things purely in software. Say running USB 2.0 at maximum speed, and running 100mbit ethernet.
Parallax Propeller I pushes 20 MIPS per cog (thread), with 8 threads running that gives 160 MIPS total, but it doesn't have a multiplier so I couldn't use it for my number crunching. It lets you emulate Z80 in a single t
Re: (Score:3)
this is a control element. it does not sit on the analog audio plane. it CONTROLS things that might be analog but this is not any dsp engine. its a CONTROLLER, mate (duh!).
.
Re: (Score:2)
Re: (Score:2)
I'd think that it's not a problem if the processor has single-cycle execution and a 16x16 single-cycle multiplier. You'd also need a fast clock (50+MHz).
Re: (Score:2)
lolwut (Score:2)
The Microtouch is a mobile media device that aims to become an open-source alternative to the iPod Touch.
Yeah keep dreaming.
Re: (Score:2)
It's true, this looks like more of an alternative to an old Palm. Having said that, I like my old Palm & I'd like one of these too! I doubt I'll drop $70 plus whatever a battery costs on one, though.
Touch screen requires calibration (Score:2)
The touch screen appears to require calibration, just like an old Palm.
Re: (Score:1)
Re: (Score:2)
That's exactly what I thought. A device these days is as good as its software is, and just because of that it will never be an iPod Touch. If you want an open source media device just buy a Nokia N900 and don't complain about the lack of quality software for it.
Re: (Score:2)
(her) Lady Ada didn't give it away to you?
http://en.wikipedia.org/wiki/Ladyada [wikipedia.org]
Cute, Smart, Inventive...I know I'd love to date her :)
Gyro, Compass, etc (Score:4, Interesting)
Re: (Score:3)
But never an infrared light! Something like this would be perfect for a HTPC remote.
Or a robot remote control complete with video feed from the robot.
Re: (Score:2)
Surely you could place an IR transmitter circuit on the programming interface header? An IR light is just a digital pulse code emitter.
Or did you want it to be a programmable universal remote, where you need a full blown IR tranciever so you can capture your OEM remote's pulse codes?
Open-source alternative to the iPod Touch ? (Score:5, Insightful)
open-source alternative to the iPod Touch
... 8-bit microcontroller with only 2.5K of RAM ...
As someone who has programmed microcontrollers and 8-bit CPUs back in the day I think this is a pretty cool device.
But iPod touch alternative? Seriously?
8-bit microcontroller vs 32-bit embedded processor with integrated FPU
2.5K RAM vs 512M RAM
28K FLASH vs 8G FLASH
Re: (Score:2)
But iPod touch alternative? Seriously?
2.5K RAM vs 512M RAM
From wikipedia [wikipedia.org], Apple has included only 256MB of RAM in even the latest model of the iPod Touch.
Re: (Score:2)
Even still this thing doesn't even remotely match the features of an iPod touch. It can't even play mp3s. Let alone the fact that the.iPod touch has a much higher res screen, can play 720p video, can do opengl es 2.0, etc. To claim this is even remotely an iPod touch alternative is laughable.
Re: (Score:2)
But iPod touch alternative? Seriously?
2.5K RAM vs 512M RAM
From wikipedia [wikipedia.org], Apple has included only 256MB of RAM in even the latest model of the iPod Touch.
Minutes ago wikipedia was showing 512 for the 4th gen, and the error was fixed between my post and yours. :-)
18:30, 18 October 2011 12.70.47.254 (talk) (38,640 bytes) (Models: changed ipod 4th gen from 512meg ram to 256meg. the iphone 4 has 512 not ipod 4th gen. This is also stated by the url that is attached to that sentence.)
Re: (Score:2)
Minutes ago wikipedia was showing 512 for the 4th gen, and the error was fixed between my post and yours. :-)
18:30, 18 October 2011 12.70.47.254 (talk) (38,640 bytes) (Models: changed ipod 4th gen from 512meg ram to 256meg. the iphone 4 has 512 not ipod 4th gen. This is also stated by the url that is attached to that sentence.)
No shit? That is extremely weird. The iPhone 4 has 512MB and was released near the release of the 4th generation iPod Touch -- I assumed that that was the root of the confusion.
Many believe the iPod Touch is simply a contract-less iPhone, which is hardly the case -- it is indeed a contract-less iPhone with significant sacrifices in its bill of materials -- among these compromises is a reduction in RAM. Few seem aware of that distinction -- somewhat odd that wikipedia reported 512MB recently; I myself review
256M, 512M, they're both essentially infinite in c (Score:2)
Oh, well that's different then. It's only 104,858 times as much RAM, not 209,517 times. Sure does make it a serious contender now.
Re: (Score:2)
But iPod touch alternative? Seriously?
2.5K RAM vs 512M RAM
From wikipedia [wikipedia.org], Apple has included only 256MB of RAM in even the latest model of the iPod Touch.
Uh, ok, so it's only 1,000 times the RAM versus 2,000 times the RAM. This invalidates the GP how again? While the device is impressive, there is only so much you can squeeze out of such a resource-constrained environment. There is a reason the iPod Touch's RAM spec has an "M" after the numbers instead of a "K". Or perhaps you thought the engineers picked that number for the hell of it.
Need a TCP/IP network stack? SSL? A modern GUI? Codecs? Good luck doing that in 2.5K.
Even if you could wave a
Re: (Score:1)
Re: (Score:2)
open-source alternative to the iPod Touch
... 8-bit microcontroller with only 2.5K of RAM ...
As someone who has programmed microcontrollers and 8-bit CPUs back in the day I think this is a pretty cool device.
But iPod touch alternative? Seriously?
8-bit microcontroller vs 32-bit embedded processor with integrated FPU
2.5K RAM vs 512M RAM
28K FLASH vs 8G FLASH
On the other hand, who would have guessed that in 2011, the "top game for the masses" would be a remake of the atari 2600 classic, Artillery Duel. I think this machine could easily out do that.
http://en.wikipedia.org/wiki/Artillery_Duel [wikipedia.org]
Re: (Score:3)
Re: (Score:2)
The iPod Touch only has 256MB of RAM in the 3rd & 4th gen, 128 in the others. iOS takes up a good chunk (roughly 80MB). I see someone has edited the wikipedia page on the iPT to directly contradict this. If you read iFixit's teardowns they confirm my information.
256 is what I recalled but I went to wikipedia and double checked, apparently I caught the page immediately before it was corrected. :-)
Re: (Score:2)
If you go to their page they say you can use "Both MicroSD and MicroSD High Capacity cards are supported. ". So you have way more then just 28K flash. I don't really know why you need a "32-bit embedded processor with integrated FPU" for something like the iPod. From the video and from the pictures the microtouch seems very capable.
Re: (Score:2)
I don't think the iPod touch has to access its internal flash storage via a slow SPI interface.
Re: (Score:2)
Re: (Score:2)
I don't really know why you need a "32-bit embedded processor with integrated FPU" for something like the iPod.
Just to be clear, iPod touch. Consider gaming, especially 3D gaming. If we were talking iPod nano then the comparison would be a bit more realistic.
Perhaps he meant iPod nano ? (Score:2)
Re: (Score:2)
What's really sad is that this is a dupe of a story that came here months ago, used essentially the same inflammatory headline, and made just as much sense. Not only does it not have audio, but it doesn't have enough horsepower to play an mp3 anyway. Further, all the IO pins are in use, so unless you dismount the accelerometer, you can't actually use it for anything useful, like control of another system.
This is a big (well, small) jackoff waste of time piece of shit, and I am dismayed to see it on the fron
Re: (Score:1)
Cool device! (Score:1)
http://www.youtube.com/watch?v=KlwIwYqjNlc&feature=related [youtube.com]
Scrolling...
COMICS...
Now with LUSH Hyperlink goodness...
Now with... (Score:1)
What an incredible deal!
How do these images fit in 2.5k RAM? (Score:2)
I really wonder. 2.5K RAM would allow max around 2500 letters, or a single 256-color picture of 50x50 pixels.
Re: (Score:2)
I really wonder. 2.5K RAM would allow max around 2500 letters, or a single 256-color picture of 50x50 pixels.
With static text and images you can put them into the 28K FLASH. You only need RAM for things that change.
Re: (Score:2)
Cool project! Nice that they have such smoothly scrolling images and text this way!
Re: (Score:2)
Re: (Score:2)
The RAM in the CPU is acting pretty much as the cache would in a larger CPU. Bulk data is stored off-chip -- either in the display's own framebuffer, or on the SD card.
Re: (Score:2)
The LCD itself has internal RAM to display the image.
Re: (Score:2)
So this would be the answer how it is possible to display so much information with so little memory. That means that the CPU basically has 320x240*24 bit = 225K of video memory to draw the picture in.
Re: (Score:2)
As perpenso said, these things don't use RAM for data.
These Atmel processors come with (besides the "CPU") RAM, flash RAM, and EPROM storage. External SD storage and more RAM, Flash etc are available if you add it yourself to the board.
So anyways, your script/sketch is saved to flash, which loads up in RAM (just like a regular script or program).
If you code things correctly, your bitmaps, your font definitions, are all in flash memory and so almost no RAM is used by that resource.
Some folks don't care, and
I don't get it either. (Score:2)
How is this possible with so little RAM? It has an image viewer app. A single 320x240 8 bit image is 75K and somehow the LCD needs that data for smooth scrolling at 25fps. So does the processor basically generates a few lines of pixels, sends those to the LCD and then continues rendering/reading from SD card the next few lines and manages all that at 25fps?
I always knew 16 bits was over the top (Score:1)
When I were a lad, we used to dream of having 2.5K of Ram. Would have been like having a hard disk to us.
Why not just make it Arduino compatible? (Score:2)
Seriously, they want open hardware, they might as well go Arduino. Same class of processor, and wildly popular.
Heck, this thing's downfall might be that it's open and NOT Arduino compatible!
ATmega32u (Score:2)
Why did they use the ATmega32u? IMHO a better choice would have been the ATmega328. Instant compatibility with Arduino libraries.
Re: (Score:2)
Probably for the built-in USB module? Compatibility with Arduino libraries is not all that important for this device and those who would want to hack away at it.
Re: (Score:1)
8-bit or bust (Score:2)
It's always interesting to see what people can do with an AVR, but this thing reminds me way too much of the little wallet-sized photo viewer I received recently. The screen on it was dreadful, and the resistive touchscreen was as bad or worse than I always remembered them as being. But, it served its purpose overall I guess, and I'm sure it was dirt cheap to assemble in some Chinese factory.
There's always a place for such a product, such as to developing countries, or schools as an incentive to read, etc
Re: (Score:1)
That's true, but on the other hand many of these products only sell to enthusiasts and therefore work as a sort of tutorial for people who want to learn how to design and build stuff. A person can study the design files for this thing and learn something about circuit design and PCB design.
Perhaps we'll eventually see big teams that develop complex FOSS hardware projects for consumer or commercial applications. Maybe one day a team of developers will beat the iPhone the same way that Firefox beat Microsoft
Apps stored in firmware? (Score:2)
Microtouch as an application framework of sorts that allows multiple applications to be built into the firmware.
It sounds really cool; but, how many flashes can the firmware take?
Why? (Score:2)