Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

SPIN2 und Propeller P2

  • SPIN2 und Propeller Tool befinden sich noch in der Evaluationsphase. Die Dokumentation zu SPIN2 ist stellenweise noch lückenhaft und die Programmierumgebung Propeller Tool wird ständig überarbeitet; man sollte deshalb immer die aktuellste Programmversion installiert haben. Die hier vorgestellten Programmbeispiele in den Übungen basieren stets auf der aktuellsten Version.

0 - Das Konzept (ein bisschen Theorie muss sein)

 

Die Propeller Hard-, Firm- und Software (SPIN und Propeller Assembly) wurde mit Blick auf den neuen Controller Propeller 2 (P2) von der Fa. Parallax komplett überarbeitet.

Wer den Propeller P1 bereits kennengelernt hat, weiß, dass der P1 mit seinen acht Kernen keine Interrupt-Routinen benötigt. Gleiches gilt für den P2. Beide Controller können gleichzeitig (nicht nacheinander, wie bei einem Interrupt-Handling) acht verschiedene asynchrone Ereignisse verarbeiten; das ist echtes Multiprocessing.

 

Der P2 wird in den Sprachen SPIN2 (High-Level-Sprache) und Propeller Assembly P2ASM (Low-Level Assemblersprache mit vielen hardwarebasierten Befehlen) programmiert. Das Erlernen dieser beiden Sprachen ist relativ einfach. Wer andere Programmiersprachen bereits beherrscht, wird den Einstieg in SPIN2 schnell bewältigen können..

 

Spin2-Programme werden aus einem oder mehreren Objekten erstellt. Objekte sind Dateien, die mindestens eine öffentliche Methode enthalten, zusammen mit optionalen Konstanten, untergeordneten Objekten, Variablen, zusätzlichen Methoden und Daten.

Objekte werden zu einem Objekt der obersten Ebene mit einer internen Hierarchie von Unterobjekten zusammengefasst. Jede Objektinstanz erhält zur Laufzeit ihren eigenen Variablensatz.

Verschiedene Teile eines Objekts werden innerhalb von Blöcken deklariert, die alle mit 3-Buchstaben-Blockkennungen beginnen.

Insgesamt gibt es sechs verschiedene Blockbezeichner:

  • CON
    Konstantendeklaration
  • OBJ
    Instanziierung von Kind-Objekten
  • VAR
    Variablen Deklaration
  • PUB
    Öffentliche Methode zur Verwendung durch das übergeordnete Objekt und innerhalb dieses Objekts
  • PRI
    Private Methode zur Verwendung innerhalb dieses Objektes.
  • DAT
    Datendeklaration einschließlich PASM-Code (Assembler).

Der Compiler generiert in Abhängigkeit der vorhandenen Blöcke in einer spin2-Datei

  • Assembler--Programme (PASM) bzw.
  • Spin2 + PASM-Programme.

 

Propeller-Code ist Objekt-basiert und kann beliebig mit Assembler kombiniert werden. Jedes Programm enthält mindestens ein Objekt; ein reines Assembler-Programm mindestens zwei Zeilen SPIN-Code, um die Anwendung starten zu können.

 

Die hier vorgestellten Inhalte lehnen sich teilweise an das Skript "Propeller Education Kit Labs - Fundamentals, Vers. 1.2 von Andy Lindsay, Parallax Inc." an und wurden an den neuen Parallax P2-Controller und die Programmierumgebung Propeller Tool und SPIN2 bzw. P2ASM angepasst.

Die Programmierumgebungen für einen Propeller P2

Es gibt verschiedene Programmierumgebungen für den Propeller P2, die kostenfrei im Internet angeboten werden. Mit zwei Programmpaketen wird in den hier vorgestellten Übungen gearbeitet.

  • Propeller Tool (Sprachen: SPIN2 und PASM; Betriebssysteme: Windows)
  • FlexProp (Sprachen: SPIN2, PASM, BASIC, C; Betriebssysteme: Windows. Linux)

Beide Pakete können im Internet an dieser Adresse heruntergeladen werden. Dort finden sich auch weitere Hinweise zur Installation. In den hier vorgestellten Übungen werden die meisten Programme in SPIN2 programmiert sein; in wenigen Ausnahmefällen gibt es auch Beispiele in BASIC, C und PASM(Assembler).

Es sollte die jeweils aktuellste Version von Propeller Tool/Flex Prop installiert sein.

1 - Einige ausgewählte Controllerdaten des P2

 

  • 8x32 Bit Kerne mit 4 kB Dual-Port RAM
  • 512 kB gemeinsam genutzter RAM
  • 64 identische gemeinsam genutzte Smart-I/O-Pins.
  • Taktfrequenz: 180 MHz (typ.), ... 320 MHz
  • HUB-Zugriffsgeschwindigkeit: 720 MB/s/Zahn
  • Max. Ausführung bei 180 MHz: 720 MIPS
  • ADC: 64 x 14 Bit
  • ADC-Modi: Delta-Sigma, SINC1/2/3, Scope
  • DAC: 64 x 16 Bit, 3 ns, 75 Ohm
  • Mathematik: SIN, LOG, TAN, ARC
  • PWM: Dreieck, Sägezahn, SMPS
  • Analoges Video: VGA, HDTV, NTSC, PAL
  • Digitales Video: HDMI 480p/60 fps, HDMI 720p/24 fps

 

2 - Die Hardware

Grundausstattung für erste Versuche
  • 1x  P2 Edge Modul und ein Prop-Plug  oder
  • 1x  P2 Edge Mini-Starter Kit
  • 1x  P2 Edge Breadboard, Steckernetzteil und USB-Verbindungskabel

 

 

 

 

 

 

 

 

Abb. 1

P2-Edge-Modul

 

 

 

 

 

 

 

 

Abb. 1a

P2-Edge Mini Starter Kit der Fa. Parallax Inc.

1. Propeller 2 P2X8C4M64P

Der Propeller 2 verfügt über 8 unabhängige Prozessorzahnräder (sog. COGS), 512 KB gemeinsam genutzten Hub-RAM und 64 Smart I/O-Pins. Detaillierte Informationen zu diesem Gerät findet man im Abschnitt Propeller 2-Dokumentation auf www.parallax.com. Alle I/O-Pins werden zu den Card Edge Pads herausgeführt.

 

2. VDD-Netzteil mit Eingangsschutz gegen Verpolung

Das VDD-Netzteil ist für den Propeller 2-Core. Dieses Onboard-Netzteil basiert auf einem schaltenden Abwärtsregler, der 2 A bei 1,8 V liefern kann. Kurzschluss, Überstrom, Verpolung des Eingangs und Brownout-Erkennung sind ebenfalls enthalten.

VDD wird typischerweise mit 1,8 V erwartet. Diese Spannung versorgt die internen Schaltkreise des P2-Mikrocontrollers. Bei Kurzschluss oder Überspannung schaltet der VDD-Regler ab und bleibt gesperrt.

 

3. LDO-Regler für I/O-Pin-Spannung

Die 8 LDO-Regler (low-drop-out oder Linearregler) sind feste 3,3-V-Low-Noise-Regler, die die P2-I/O-Smart-Pins mit Strom versorgen. Jeder Regler verfügt über einen Kurzschluss- und Überstromschutz.

 

Beim P2-Edge-Modul sind die Anschlüsse der Spannungsversorgung in Gruppen zu je 8 I/O-Pins herausgeführt. Jede Gruppe hat einen dedizierten LDO-Regler mit dem VIO-Ausgang mit der Bezeichnung Vxx am Randstecker. Die zwei Ziffern nach dem V beziehen sich auf den ersten von 8 I/O-Pins, die das LDO mit Strom versorgt. V08 würde beispielsweise die VIO-Spannung für die E/A-Pins 8 bis 15 bedeuten.

 

4. Kristall

Das P2 Edge Modul ist mit einem 20 MHz Quarz ausgestattet. Die Taktfrequenz ist einstellbar; Vollständige Details zur Taktfrequenzkonfiguration, Optionen und Grenzwerte findet man in der Propeller 2-Dokumentation.

Der Quarzoszillator auf dem Chip des Propeller 2 mit interner 9 pF Lastkapazität treibt den 20-MHz-Quarz an, um eine Basistaktfrequenz bereitzustellen.

Die tatsächliche Taktfrequenz wird im Programmcode ausgewählt und kann fast jeder Wert oder Bruchwert sein, indem drei spezielle Multiplikations- und Divisionsregister verwendet werden. Die maximale Taktfrequenz liegt bei 180 MHz. Durch Übertaktung sind bis zu 320 MHz möglich.

 

5. Flash-Speicher

Der Flash-Speicher kann zum Speichern von Benutzercode oder Daten verwendet werden und als bevorzugtes Boot-Gerät ausgewählt werden.

Das Gerät verwendet das SPI-Protokoll mit 16 MB (128 Mbit) Kapazität. Ausführliche Informationen dazu finden sich im Datenblatt des Herstellers.

 

6. Modusauswahlschalter

Die Dip-Schalter steuern die LED-Stromversorgung und die Boot-Modus-Auswahlfunktionen. Die Dip-Schalter sind bei einem neuen Edge-Modul nicht auf einen bestimmten Status eingestellt, obwohl die vier Schalter normalerweise alle in der OFF-Position stehen.

al

LED Power Control (On-Board-LEDs aktivieren)

Dieser Schalter steuert die Stromversorgung von zwei Onboard-LEDs, die beschriftet und mit den E/As P56 und P57 verbunden sind.

 

7. LED-Puffer

Der LED-Puffer ist ein dualer Schmitt-Trigger-Puffer, der hochohmige Verbindungen zu den P2-Mikroprozessor-I/Os P56 und P57 hat und die entsprechende Status-LED antreibt, wenn die P2-I/O Signalleitung HIGH Signal führt.

 

8. LEDs P56 und P57

Diese beiden LEDs sind so angebracht, dass sie von beiden Seiten des P2 Edge Modul PCB sichtbar sind. Sie sind über einen LED-Puffer mit den Pins P56 und P57 verbunden. Der Puffer isoliert die LEDs, damit sie die E/A-Signale nicht beeinflussen.

Wenn die LEDs nicht benötigt werden, kann der mit „LED“ gekennzeichnete Dip-Schalter des P2-Edge-Moduls auf „OFF“ geschaltet werden, um die LED-Stromversorgung zu deaktivieren.

 

 

 

 

 

 

 

 

Abb. 2

P2-Edge-Breadboard mit Steckplatz für das Prop-Plug

3 - Aufbau des P2 Edge Modul Breadboards

1 - Anschlußbuchse für Steckernetzteil

 

2 - Parallax P2 Edge-Modulsockel

 

3 - Prop-Plug Programmiermodulanschluss

 

4 - Insgesamt acht Servo-Anschlüsse (3 Pin)

 

5 - 8 VIO-Anschlußgruppen á je 8 Buchsen. Darüber lassen sich alle

     Ein-/Ausgangspin des P2 ansprechen.

 

6 - 2 Steckbretter

 

7 - RESET-Taste

4 - Propeller Tool IDE Vers. 2.5 oder höher und Hardware-Identifikation

Nach der Installation und dem Laden der Software Propeller Tool erscheint die Oberfläche der IDE. Wähle aus dem Hauptmenü Run - Identify Hardware ....

Die Software identifiziert das angeschlossene Board und gibt bei Erfolg eine entsprechende Meldung auf den Bildschirm aus:

 

 

 

 

 

Abb. 3

Nach erfolgreicher Identifikation des Boards erscheint diese Information auf dem Bildschirm.

Das Board ist jetzt einsatzbereit. Wir beginnen mit einer ersten Übung.

SPIN2-Übung 0 - Der klassische LED-Blinker

 

Was passiert in dieser Übung?

Das Objekt setzt die Ausgangspins P56 und P6 des Controllers P2 gleichzeitig und wiederholt auf HIGH (1) und LOW (0). Eine weiße LED ist über einen Vorwiderstand von 470 Ohm mit P56 auf dem P2-Edge-Modul vom Hersteller bereits  fest verdrahtet; separat wird auf dem P2-Edge-Steckbrett eine rote LED mit Vorwiderstand R = 470 Ohm mit P6 verbunden. Die LEDs sind so beschaltet, dass sie leuchten, sobald der entsprechende Pin (hier P56 bzw. P6) auf HIGH gezogen wird.

 

 

 

 

 

 

 

Abb. 4

P56 (Bild: Mitte oben) auf dem P2-Edge-Modul ist mit einer weiss leuchtenden LED fest verdrahtet.

Versuchsaufbau

 

 

 

 

 

 

 

 

 

 

Abb. 5

Eine LED rot wird auf dem P2-Edge-Breadboard über einen 470 Ohm Vorwiderstand an P6 angeschlossen.

Übung 0

SPIN2 - Übung 0 - LED Blinker
Aufgabe
  • Baue auf dem P2-Edge-Breadboard eine LED-Schaltung mit einem Vorwiderstand von 470 Ohm auf. Die Anode der LED liegt an P6.
  • Starte die Software Propeller Tool und übertrage das Programm Umschalten.spin2. in den Editor.
  • Achte darauf, dass dieSchlüsselworte PUB und CON ganz links in Spalte 1 beginnen und nicht eingerückt sind. Bei Nichtbeachtung gibt es eine Fehlermeldung.
  • Beachte auch die jeweiligen Einzüge in den Programmzeilen.
  • Reservierte Worte werden automatisch fett gedruckt; auf Groß- und Kleinschreibung muss nicht geachtet werden.
  • Beim Abspeichern des Programms achte darauf, dass es unter File - Save As ... als Dateityp spin2 abgespeichert wird.
  • Starte anschließend das Programm aus dem Hauptmenü über Run - Compile Current - Load RAM oder einfach mit F10 und überprüfe das Verhalten der beiden LEDs. Blinken sie gleichzeitig im Sekundentakt?

Das Programm Umschalten.spin2

 

 

 

 

 

 

 

Abb. 6a

SPIN2 Programm für den Propeller P2 mit Hilfe von Propeller Tool. Zwei LEDs werden wechselseitig ein- bzw. ausgeschaltet.

Eine BASIC Version mit FlexProp

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 6b

BASIC Programm für den Propeller P2 mit Hilfe von FlexProp. Zwei LEDs werden wechselseitig ein- bzw. ausgeschaltet.

Die Programmzeilen 5 und 8 können weggelassen werden.

Erläuterungen zum Programm Umschalten.spin2

  • Das Programm besteht aus den beiden Blöcken: CON und PUB.

Programmzeile 7

Im CON-Block wird die Taktfrequenz festgelegt. Typischerweise liegt sie bei 160 MHz. Die nachfolgend eingerückte Zeile macht deutlich, dass sie Teil des CON-Blocks ist.

Programmzeile 9

Diese Zeile, PUB Umschalten() weist auf eine "öffentliche" Methode mit dem eindeutigen Namen Umschalten hin. Die nachfolgend eingerückten Programmzeilen machen deutlich, dass sie Teil der Methode sind.

Eine Methode ist der objektorientierte Begriff für "Prozedur" oder "Routine". Der Name  beschreibt, was die Methode tut und er darf kein reserviertes Wort sein. Jedes Objekt muss mindestens eine öffentliche Methode(PUB) enthalten.

Programmzeile 11ff

Es wird mit dem Schlüsselwort REPEAT eine Schleife erstellt, die die folgenden drei Zeilen 12 ... 14 umfasst. Die Einrückung der nachfolgenden Zeilen ist hier zwingend und macht optisch sofort deutlich, welche Befehle zu dieser Struktur gehören,

Wie im vorliegenden Fall kann die Blockgruppen-Indikator-Funktion auf dem Bildschirm mit STRG-I sichtbar gemacht werden.

Der Befehl

  • pintoggle oder pint

schaltet den Zustand der I/O Pins 56 bzw. 6 nacheinander auf  HIGH bzw. LOW. Anschließend wird 1000 ms oder 1s gewartet (Programmzeile 14).

Jetzt kommst du!

Ändere das Programm Umschalten.spin2 so ab, dass die beiden LEDs wechselseitig ein- und ausgeschaltet werden. Speichere das Programm unter dem Namen wechselblinker.spin2 ab.

  • In der folgenden Übung wird die P2-Eval CONTROL-Platine vorgestellt, näher betrachtet und über SPIN2-Programme angesprochen. Interessiert? Dann geht es hier weiter.
  • Benötigst du mehr Informationen über die I/O Pin des Controllers und wie man sie anspricht, dann geht es hier weiter.
Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf