The DIY hardware enthusiast’s platform of choice, Arduino, will be shipping a new ARM-based platform this year. The organization showed off the new version in time for the New York Maker’s Faire, with a 96 MHz clock speed, 256 KB of flash memory, 50 KB of SRAM, five SPI buses, two I2C interfaces, five UARTs and 16 12-bit analog …
This should be an absolutely painless transition for almost everyone.
Virtually all Arduino programming is done in C++.
They call it "Wiring" but that's just:
- a standard library that provides interface functions and symbolic constants for the I/O pins, timers, USB etc
- a preprocessor that adds a #include for the library header and prototypes for all your functions so you don't have to care about the order
- a driver main() that calls setup() and then repeatedly calls loop()
- the avr-gcc c++ compiler
You already have to select which board you are compiling for from a menu. Different boards are using different AVR chips with varying MHz, varying amounts of flash and RAM and EEPROM, and different constants for the I/O devices. The ARM chip just has more and faster of everything.
There will be an "Arduino Due" item in the "Board" menu which as well as the normal selection of the appropriate library header file will select the arm-gcc compiler instead of the avr-gcc compiler.
No ordinary end-users are likely to have written anything in AVR assembler. 99.9% of everything will Just Work.
my initial reaction is:
Cool. So more scope for fixing washing machines and other domestic appliances :)
Can you use native code on these things?
I wouldn't mind playing about with an ARM version, but I don't to write in C++ - I want to write in assembly language. But how to bootstrap my assembly code?
I've done entire Arduino projects in assembly - had to, to get precise timing for composite video output. I can't remember the details in their GUI, but basically you write assembly files and assemble them and link them in. The toolchain is all gcc-based so it's not rocket science at all.
Loving that clock speed and RAM.
At a guess
asm ("assembler code"
:"=r3"(b) /* output */
:"r4"(a) /* input */
:"r0, r1" /* clobbered register */
As an avid assembler fan I feel qualified to say - but why would you?
Will the analogue be input, output or io configurable? Also will it be proper analogue out or pwm?
(Yes, I am doing a project with DACs at the moment...)
And there's always Maple
Arduino footprint, ARM cortex M3, 72MHz, 128KB flash, 20KB RAM, available now.
I have no affiliation with either company.
And to answer another question, yes you can use "native" code. I program Arduino Duemilanove in C using Gcc, don't see why you'd want to use assembler though. Gcc gives you all the special register and interrupt support you need. Wanting to use sleep modes and interrupts is the reason I didn't use C++ and "Wiring".
Can't see the benefit of the Ardunios...
When I build something(happens too rarely these days, I'm afraid) I usualy take a Propeller prototype board(about US $20) and toss on whatever peripheral components I need.
Sure, it doesn't support USB(not directly), but I get I2C, SPI, RS232, 1-wire, AD(needs a couple of resistors and a cap), VGA, PAL, NTSC, Composite(video also requires a couple of resistors), PS2...
Best of all, no worry about interrupts or dedicated pins.
Mine's the one with the propeller beanie in the pocket.
Horses for courses...
An arduino is for embedded systems, not micro-pc.
What happened to the extra zero on that clock speed? Or would that make the board too expensive?
What exactly do you think you'll be running on your embedded micro - SETI?
I think you are after the Raspberry Pi - not quite 1GHz (700MHz).
Wrong standard of comparison
This isn't like a desktop computer or even a smartphone/tablet - it's more like the embedded controllers in mp3 players, stereos, washing machines... this is a high frequency by the standards of these things; many run at 16MHz (including current Arduinos) or 20MHz. They are generally used to interface with physical hardware and sensors, which simply aren't feeding data fast enough to keep a gigahertz processor busy.
In any case, once you start working at high frequencies, circuit design gets rather trickier. These things are designed for enthusasts to plug into breadboarded prototypes, which are not designed for high frequency signals. They also need to be able to tolerate input voltages much higher than delicate high-speed computer processors.
What were you expecting? These are small single chip micros for small applications.
This isn't like upgrading to an i7 so you can reboot faster, the appliations are small, and you don't need a beefy cpu to do the job.
I fear the platform is begining to lose its way
I find the best way to use the standard Arduino platform is to have an actual board for the development, then pop out the chip, give it a resonator and a couple of caps and away you go. It's very quick, easy and cost-effective.
This won't be possible with the new board.
Although the 'professionals' turn their noses up at it, in the real world results are what count, not how cleverly you've used every feature of the chip.
- Pic Mars rover 2020: Oxygen generation and 6 more amazing experiments
- Microsoft's Euro cloud darkens: US FEDS can dig into foreign servers
- Boffins spot weirder quantum capers as neutrons take the high road, spin takes the low
- Plug and PREY: Hackers reprogram USB drives to silently infect PCs
- Review Fiat Panda Cross: 'Interesting-looking' Multipla spawn hits UK