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:
Der Compiler generiert in Abhängigkeit der vorhandenen Blöcke in einer spin2-Datei
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.
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
2 - Die Hardware
Grundausstattung für erste Versuche |
|
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.
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:
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.
Versuchsaufbau
Übung 0
SPIN2 - Übung 0 - LED Blinker | |
Aufgabe |
|
Das Programm Umschalten.spin2
Eine BASIC Version mit FlexProp
Erläuterungen zum Programm Umschalten.spin2
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
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.