Anyone tried the Propeller Chip?

I have been looking at it and it seems to be interesting. I also saw a shield for arduino(propelleruino). Any one here wants to throw some light? Will it be a good move to add more power to the arduino?

Cheers,
Pracas

From what I have read about it, the Propeller is essentially 8 8-bit CPUs (called "cogs" I believe) contained in a single IC that share (in a round robin fashion) a single set of memory (I think each CPU also has a very tiny amount of individual memory as well). I think the pins are also shared as well (in some fashion; probably a form of multiplexing). It is a very interesting chip. Essentially a multi-core 8-bit microcontroller. Atmel needs to release something similar (if they haven't already - have you looked?).

I think it might be something worthwhile to look into, if you don't mind the fact that Parallax's offerings are almost always Windows only and closed source (though they may come around on this eventually; they have been kinda dumbstruck by the Arduino's popularity).

Before I bought an Arduino, I was playing with a Basic Stamp 2 - I had it up and running on my 32-bit install of Linux. I even built a set of bash scripts to allow me to "compile and upload" from the text editor I was using at the time (which had built-in scripting for such tasks). However, when I moved to a 64-bit platform, their byte-code "compiler" no longer worked. It was impossible to get working, to, because it was a binary only package, and it was statically linked to various system libraries (meaning there was no way to fool it using IA32 extensions). Parallax no longer had the source code to it, and they no longer employed the individual who wrote it and had no idea where he was (in other words, there was an NDA involved - so you won't see that code hit the net anytime soon).

So - if you are willing to deal with this possibility happening to you (which is always something that can happen with closed-source offerings, regardless of the underlying operating system), then continue to look into it; it seems like a very interesting chip to play around with.

:slight_smile:

Actually, it's 8 32-bit cores (weirdly, with no hardware multiply/divide. A serious drawback for an awful lot of apps). There's a nice summary on Wikipedia.

It looks like it would make a really nice peripheral chip (rather ironic, since the PICs that Parallax built their company on were originally designed for exactly that purpose). I thought it might be a problem that it doesn't have hardware for SPI or I2C, but a google search turned up a software I2C slave implementation. Assuming it works well, at $8 a pop, the Propeller would be great for many applications (like scanning keyboards, controlling arrays of LEDs, and interfacing LCDs) that people are currently doing with shift registers and port expanders.

It appears they've even (partly) addressed the "orphan compiler" problem with an open-source C that doesn't require a toy OS.

There could be some devils in the details, since this is all from a cursory google search, not personal experience. But it's certainly worth investigating.

Personally, I wouldn't buy the "propelleruino" (I think that's misspelled): I don't see it adding enough value to justify its 55-Euro cost, and I do see that it'd be awkward to wire up a lot of connections to its 32 I/O pins from a shield. I'd just buy some loose chips, and put 'em in a breadboard for experimenting, then a protoboard for more-permanent projects.

weirdly, with no hardware multiply/divide.

Not much hardware, period. No UART - want to do RS232 communications? dedicate a cog to bit-bang it. As you've discovered, no I2C or SPI. There goes 2 more cogs, if you happen to need all those at the same time.

Lots of folks get excited because it can generated video. Too bad it's a one-trick pony.

No thanks, I'll stick with my ATmega, running avr-gcc on my mac.

-j

and no interrupts

I do want to play with one, but that is all I can really see

No thanks, I'll stick with my ATmega, running avr-gcc on my mac.

Lol.. Now whoever talked about moving away from Atmega??? No not me... Just looking to play around with the propeller... seems to be interesting to work with so called 8 different cores.. I believe interrupts are handled by dedicating a cog to it.

So - if you are willing to deal with this possibility happening to you (which is always something that can happen with closed-source offerings, regardless of the underlying operating system), then continue to look into it; it seems like a very interesting chip to play around with.

It should be ok.. I'm not planning any products with it... Just play around

check their product website for a pretty good description of how the cog system works, you really dont need interrupts according to their marketing, and I have not had a need for them yet

but its such a wonky chip

I'll stick with my ATmega, running avr-gcc on my mac

Really? No Ethernet shield? No WiFi shield? No serial motor controllers? All of those use non-ATMega CPUs, usually because they need capabilities not available in an 8-bit AVR.

Refusing to use the Propeller as a peripheral because it doesn't have a hardware UART is like refusing to use an Arduino because it doesn't have an on-chip Ethernet interface. At least with the Propeller all you have to do is download some firmware.

So, Osgeld, how do you handle the arrival of a received serial byte while you're bit-banging transmit? Do you have to write particularly clever code? Or do you dedicate one cog as a "UAR" and another as a "UAT"?

Really? No Ethernet shield? No WiFi shield? No serial motor controllers? All of those use non-ATMega CPUs, usually because they need capabilities not available in an 8-bit AVR.

I'm not 5 years old, and I'm not starting the Church of the AVR or anything. :expressionless: I do have an ethernet shield (homebrew adapter for the Wiznet module that matches the official shield) and have made several other shields that use non-AVR components.

I just prefer to develop on a mac ('cause I like computers that work) and I like gcc because it's a good compiler, and free. The ATmega lines up with those preferences nicely.

I also prefer my tinkering projects to be friendly, or at least non-hostile, even if I don't expect them to be easy. No hardware support for anything sounds decidedly unfriendly to me. In fact, it sounds more like a microprocessor than a microcontroller. Been there, done that, like a microcontroller better for my little projects.

And sorry, comparing lack of ethernet support to lack of UART support is nonsense in a microcontroller context.

-j

So, Osgeld, how do you handle the arrival of a received serial byte while you're bit-banging transmit? Do you have to write particularly clever code? Or do you dedicate one cog as a "UAR" and another as a "UAT"?

I don't do anything, I state "according to their marketing I don't need interrupts" I am not their marketing

I do not own a propeller chip, nor have I ever used one

Do you have to write particularly clever code?

This isn't the first chip with the "we'll just be blindingly fast, and you won't need actual peripherals" philosophy. Scenix (then Ubicom) did it quite a long time ago (and they were also distributed by Parallax.) Typically, the vendor writes the particularly clever code, and distributes it as a library to customers. No reinvention of the wheel required. And if you need something different, you at least have a starting point.

It's not unique to superfast CPUs. The Luminary (TI) arm chips distribute a massive library for dealing with their complex peripherals, almost as a replacement for having to document how they work :slight_smile: Code-space issues are finessed by putting the library in ROM, so it doesn't take up flash space. (CPUs with 32bit address spaces do some creative things with all that extra room!) And in fact many consumer electronic products (wireless routers, picture frames, web appliances, printer controllers, etc) are little more than the CPU vendor's "reference design running linux" (CPU vendor design, CPU vendor software distribution) with relatively few per-OEM features tacked on.

Ah, when you said "and I have not had a need for them yet" I inferred that you had personal experience consistent with the marketing claim.

No hardware support for anything sounds decidedly unfriendly to me

There's no hardware support for floating point on the Arduino. Or for a TOD clock. Or for multiple serial ports, or more than a few servos, on all but a tiny fraction of the installed base.

People who need those features just #include the right library, and get a software emulation of the desired feature that's (close to) completely transparent to most programmers.

The same thing applies to the Propeller (presumably: they wouldn't be as popular as they are if they weren't banging those bits correctly). It's completely irrelevant to the vast majority of users how the feature is implemented: what counts is whether they can write a piece of high-level code, and have the bits dance the way they're expected to when the music starts.

The Arduino community has already settled on some (semi-)official standards for peripherals and "co-processors", like the 44780 for character LCDs, and the Wiznet for Ethernet. The Propeller could take on a similar role for a wide variety of roles: contrary to your "one-trick pony" claim, the Parallax community has built a large and diverse array of interfaces for sound, storage, displays, HIDs, and other devices. With a small effort to build a little glue logic, much of that work could be leveraged to make many projects easier for many Arduino users.

And it could be leveraged in ways that offer other significant benefits. For example, we could develop one GLCD library, and encapsulate all the differences among LCDs in a series of Propeller objects that users could load according to which one they were using. It would dramatically reduce the I/O pin, memory, and maybe even CPU usage in the ATMega, and make it possible for Arduino apps to work with many different LCDs, or even a VGA monitor, without change.

A standardized Propeller peripheral board, with an I2C or SPI interface, could be the equivalent of adding USB to PCs, bringing lower cost and greater ease of use, to the Arduino system.

Ok. I've ordered 5 chips to start with. Lets see how it all goes.... :smiley: