loading

The Propeller processor chip is the most unique micro-controller on the market today.
 It's not just a single microprocessor, but EIGHT independent processors that share
resources like memory and I/O pins.   And it can do some pretty amazing things that
the rest of the microcontrollers like the Ardino and PICs just plain can't do!  

(But today, all we want to do it blink an LED)

Each of the processors (called a Cog) has 512 LONGS (32 bits each) (or 2048 bytes) of RAM
memory for it's own use.  In addition, all eight processors share an additional 64K bytes
(16K LONGS) of shared HUB memory. Hub memory is divided into 32K bytes of ROM
(from address 0 to 7FFF, or low memory) and 32K bytes (8092 LONGS) of RAM from 8000 to
FFFF hex).

The ROM section contains the boot loader code, math tables, and character fonts. 
RAM is for program storage, variables and stack space.
 The hub controls COG access to Propeller resources like memory or I/O pins in "round robin"
fashion. For more exciting details of the COG and HUB tune into chapter 5 of the manual and
check it out!


The programming language is called Spin, and it too is rather unique.

Today I'd like to introduce the Parallax "QuickStart" board.

This is probably the best board to buy to get started with the Propeller chip from Parallax
since it has more useful toys to play with - built in.  No need to learn to wire up microelectronic
circuits just to blink an LED!

The normal (necessary) chips are on board, of course...
P8x32MM Propeller processor chip, 64 KB EEPROM, USB interface chip and voltage regulator
are all there. But this board also has, across the bottom edge, eight "touch pads" and eight LEDs
that you can play with immediately.

The Touchpads are used as input buttons.  They take a bit more programming support than a regular
switch, but they cost a whole lot less (they are "printed" on the circuit board) and work pretty well.
But that's a bit more advanced topic (the required Touchpad drivers are available on-line at the
Propeller Object Exchange)

So first off, lets, hook up and get started...

Step 1: SetUp the QuickStart Board

Physically connecting the QuickStart board to your PC is simplicity itself,

but there IS a catch.

Since this is a USB device, you MUST load the USB drivers before plugging the board's
USB cable  into your computer.

Driver and editor are downloaded from Parallax at their web site...
           http://www.parallax.com/tabid/442/Default.aspx#Software

There is quite a bit of stuff there for free, but all we really need to get started is the
Propeller/Spin Tool Software.

          Propeller/Spin Tool Software v1.2.7 (R2) - (Supports Windows 2K/XP/Vista/7.
          Requires IE7 or newer Or FireFox 3.0 or newer)
           Includes software, USB driver, Propeller Manual, PE Kit Labs text and example
           code, schematics,  quick reference, Propeller Help and tutorial examples.

Click the download tab, save the file to your hard drive. 

Before running the setup-Propeller-Tool file, close all other programs that may be
running on your computer.

Then click on the setup program and follow the instructions.  Pretty normal stuff.

Personally, I install to a custom folder  - C:\Prop - instead of the default in the
Program Files folder. It's a lot easier to get to and spell(!)

When the setup program finishes, you are all ready to get going.



Step 2: Connecting the QuickStart Board to Your Computer

It's USB.  Just plug it in.

Listen for the two-tone sound that indicates Windows found the device and
watch for the notice that it has located and identified the board.

Also the red and blue LEDS on the QS board (that show communication
Read/Write) will blink as the QS and your computer meet and shake hands.

That's it.

If there are problems,
(usually because somebody plugged in the board before the drivers were loaded)
check Control Panel/system/hardware/device manager page for unrecognized USB devices. 
Remove any Xed out devices and reinstall the drivers..
T H E N plug the QuickStart USB cable into your computer.   :)

Step 3: Programming!

Start the Spin Tool.

Start/All programs/Parallax/Spin Tool  should be there now.
(But it's even easier if you have the shortcut icon on your desktop)

On the left are several important parts -
a browser to let you locate folders on your computer,
and a list of what files are in the selected folder.


Blinking an L.E.D. is the micro controller equivalent of "Hello World".
So that's where we start...

I have selected Blinky.Spin as an example, which is loaded into the work area
on the right.

The top line (light yellow) is a comment,

The yellow section is CONSTANT DECLARATIONS.

The first blue section is out main program,

The rest are PRIVATE functions to support that program.
(the colors appear as you declare each section)

CON  - CONstants
Sets the system clock speed and mode, and declares several constants.
The values assigned to these words can not be changed by your program.

VAR - VARiables
We don't have any variables defined for this program, so there is no VAR section.

PUB - PUBlic code block
Spin uses the first code block as the starting point.
This one is named "Go"

The program blinks an LED attached to pin 7

So Pin 7 direction is set as output (dira [pin] :=1),
and a zero written to that  pin (outa [pin] := 1).

A zero means low voltage appears on the output pin.
Writing a one to that pin makes the voltage on the output pin go "high"

repeat starts an infinite loop - runs forever - or until the program is changed.
In other words, a loop.

Notice the indentation!
This is the way that you tell Spin how the program is "structured".
It's VERY IMPORTANT.

This program will repeatedly (and in order) calls the PRIvate functions -
TurnOff, Wait, TurnOn, and wait.

Step 4: Running QS-Blinky1.Spin

If you were to type this program in (absolutely as shown here) and RUN it,
(Run/Compile Current/Load Ram - or just press F10)

you would be rewarded by seeing the LED on pin 16 (right most LED on the
QuickStart board)

                  BLINK!

On and off and on and off and...

Well, maybe that doesn't sound like the most exciting program ever written.

it's certainly not a monster robot ready to invade Earth (yet).

But it's where it all starts...

<p>Just recently resurrected mine, Parallax now has LINUX (Debian) releases of their Spin &amp; Propeller-C Simple IDE's.</p><p><a href="https://www.parallax.com/downloads/propelleride-software-linux" rel="nofollow">http://www.parallax.com/downloads/propelleride-so...</a></p><p><a href="http://learn.parallax.com/tutorials/language/propeller-c/propeller-c-set-simpleide/linux" rel="nofollow">http://learn.parallax.com/tutorials/language/prope...</a></p><p>Both run great under UBUNTU 16.06/64-bit on a 8GB/Athalon-X2/64 desktop. </p>
<p>Also, the FTDI USB&lt;--&gt;Serial driver is standard in most distros, but they also include a link and info on how to install the driver if necessary.</p>
I have some of the old dip based propellers where you pretty much have to make your own development board. If people only knew what they can do. 8 brains.....
<p>The thing people easily overlook here is that the cores are asleep unless the application (and developer) wants to use them. It can start, pause, and stop cores at will, and can even switch between its low-speed internal RC Oscillator to an external oscillator, going from about 20 KHz speed to 80 MHz in very short time, then back again, which is great for systems that need to wait for some kind of stimulus events spaced in time, but still do high-speed processing in response to those events. Also, each core can be set to wait (in a sleep-like state) for a specific event and then process swiftly the moment it happens. This makes building a real-time application with a mix of low and high bandwidth requirements very easy because you can assign certain cores to focus on specific tasks while leaving others to different tasks, without a lot of complicated code. It's like have a team of people that you can delegate tasks to and trust they they'll carry it out at the right time in the right way without further input from you. </p>
The 8-core architecture sounds very cool! I have to try this! However, does the fact that the program is stored in the RAM make you able to load some code from a SD card and then run it?
<p>Normally it boots from an EEPROM, but it can use an SD card and can also be left without persistent storage to be programed on-the-fly by some accompanying computer software (where the intent is that it always be paired with a computer of some sort).</p>
i think you'd have to do a lot of coding to make that work... in assembly
Bootloaders already exist in the <a href="http://obex.parallax.com/search/boot%20loader" rel="nofollow">object exchange</a>.Some since 2009...
<p>Do you know if the chip has eight physical cores, or is it hardware time-sliced like the old Xerox Alto?</p>
<p>It's 8 independent cores that each execute instructions simultaneously using their own internal memory. Each has direct simultaneous access to the I/O pins too. The main memory and a few other resources are shared among the 8 via a central arbiter called the Hub. Each core can access up to 1 long of Main RAM (in the Hub) every 16 clock cycles; but most often, processing takes place withing the cog (free of mutually-exclusive resources) and only coordination efforts require access to shared memory.</p>
<p>Internally, it is supposed to have 8 cores, 32-bit architecture , 32 I/O bits (GPIO), each addressable from each core. Yeah, I just got the Parallax 40000 board (the P8X32A QuickStart board). and slowly absorbing as much as I can on it.</p>
<p>I know this post is pretty old, but I'd like to tell you guys about some shields we are developing for the Parallax Quickstart. Right now we have a Robot Shield and are developing a Radio Shield and Power Shield. Here are some quick specs:</p><p>Robot Shield:</p><p>-9 GPIO, 4 Servo Outputs, 8 Analog Inputs and SD Card</p><p>Radio Shield:</p><p>-Plug in your favorite XBee footprint compatible radio and see the signal strength on board.</p><p>Power Shield:</p><p>-Up to 32 GPIO's with selectable power and on-board DC-DC regulators.</p><p>You can check out more information on this on our facebook page: </p><p>https://www.facebook.com/fastrobotics</p>
<p>RadioShack must be discontinuing this (as they have a LOT of parallax items), because I just picked up this little board for only $9.95/US. Adding it to my little board collection (Arduino, Arduino-Mega, Basic Stamp2, Raspberry Pi) for tinkering. Should be interesting!</p>
In your Instructable you mention, &quot;The Priam blinks an LED attached to pin 7.&quot; However your screen shot shows CON 'pin' = 16. Any clarity on this perhaps?
It's great to see someone using ANYTHING other than Arduino, but all that processing power to blink an LED? It just doesn't seem like an efficient use of resources.
No argument about overkill for blinking an LED. <br>But one must start somewhere... <br> <br>My main reason for picking the Propeller is to make a &quot;ships bell&quot;. <br>Two ways to do that - virtual bell, or real bell. <br> <br>The real bell just needs a real time clock and a solenoid to ding with. <br> <br>The virtual approach involved playing back a digitized .WAV file. <br>It was a challenge to get the bell sound and code compressed down <br>enough to fit into 32K of RAM. But it worked. <br> <br>Try doing THAT with an Arduino! <br> <br>
https://www.sparkfun.com/products/10628

About This Instructable

19,335views

23favorites

License:

More by cavelamb:A custom shield for the Propeller ASC - Infra-Red Remote Control - and multiple COGS! Propeller Power for the Arduino QuickStart bi-directional motor control 
Add instructable to: