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

SPIN2 und Propeller P2

I/O Pin - Teil 2

Bevor wir uns mit der Adressierung der Eingangspins befassen, wird die Methode wrpin vorgestellt. Mit ihrer Hilfe lassen sich u.a. Pullup- und Pulldown-Widerstände an allen 64 Pin zu- oder abschalten. Das vereinfacht u.a. die Beschaltung auf dem Steckbrett und wird deshalb vorangestellt.

1 - Die Instruktion wrpin(pinfeld, data)  (Theorieteil)

Nach dem Datenblatt des Propeller P2 verfügt jeder der 64 I/O Pins über mehrere Pullup- bzw. Pulldown Widerstände (1,5k; 15k und 150k), die über die Software zu- oder abgeschaltet werden. Nach Datenblatt geschieht das über die Instruktion

 

  • WRPIN(pinfeld, daten)

Das Format des Pinfeldes von WRPIN ist angegeben mit:

 

  • %AAAA_BBBB_FFF_MMMMMMMMMMMMM_TT_SSSSS_0   (1)

 

Dabei bedeuten:

  • A -> PIN-Eingabewähler
  • B -> ADJ-Eingangswähler
  • F -> PIN- und ADJ-Eingangslogik/Filterung (auf das Ergebnis der PIN- und ADJ-  Eingangsselektoren angewendet)
  •  M  ->  Pin-Modus
  • T ->  Pin DIR / OUT-Steuerung (Standard = %00)
  • S ->  Smart-Modus (Standard = %00000)

Die Biteinstellungen A, B und F sowie die Einstellung T und S bleiben in der Voreinstellung und werden nicht weiter betrachtet. Der Pinmodus wird über die 13 M-Bits eingestellt, die im Datenblatt (Propeller Hardware Manual v. 15.10.2021, S. 35) dokumentiert sind.

Die WRPIN D[20:8] Konfiguration der 13 M-Bits lautet für die Pineinstellung OUT, logic:

 

  • 0000_CIOHHHLLL  (2)

mit CIO -> 010 (s. Abb. 1 linke Spalte), HHH -> 010 und LLL -> 000 (s. Abb. 1, rechte Spalte). Die Grundeinstellung von CIO ist 010, sie wird in der Bitfolge - wie auch die vorangestellten vier Nullen - nicht explizit angegeben.

 

 

 

 

 

Abb. 1

Der Pinmodus für die Pullup- und Pulldown-Widerstände wird über die sechs BIT:

001_000 - 1,5k

010_001 - 15k

011_000 - 150k

eingestellt.

(Tabelle aus: Propeller 2 P2X8C4M64P Hardware Manual (Draft) der Parallax Inc., S. 35 entnommen.)

 

Die Bitfolge zur Konfiguration eines 15k Pullup-Widerstandes lautet 

  • %010_000_00_00000_0
  • %HHH_LLL_00_00000_0

Vergleiche die Darstellung mit (1). Die drei Bits in der H-Gruppe legen den Pullup- und die in der L-Gruppe den Pulldown-Widerstandswert fest.

Die Pingruppe T mit %00 bezieht sich auf die DIR/OUT Steuerung und ist voreingestellt auf 00. Die Pingruppe S stellt den Smartmodus ein und ist voreingestellt auf %00000. Die ganze Bitfolge wird immer mit einer 0 abgeschlossen.

 

Im folgenden Programm werden für die Ausgangspin P0, ..., P4 Pullupwiderstände von 15 kOhm gesetzt.

Pullup-Widerstand einschalten

 

 

 

 

 

 

 

 

Abb. 2

Die Methode main ist das Einsprungprogramm. Die Methode Pullup15k schaltet den Widerstand ein. In der Wiederholschleife wird der LED-Zustand bei jedem Durchlauf invertiert -> die LEDs blinken.

Wie arbeitet das Programm?

 

Im CON-Block werden die Taktfrequenz des Controllers und die anzusprechenden Pins für die LEDs (Programmzeile 10) festgelegt.

Es folgen ein PUB- und ein PRI-Block.

Die Einstellung des/der Pullup-Widerstandes/Widerstände erfolgt im PRI-Block. Es ist ein klassischer Einzeiler, geschrieben in PASM2 (Assembler). Mit

  • wrpin ##%010_000_00_00000_0, pin

werden die Widerstände an den  I/O Ausgängen pin aktiviert.

Im Hauptprogramm main() werden zunächst die Pullup-Widerstände eingeschaltet und in einer nachfolgenden Endlosschleife die LED-Zustände an den Pins mit jedem Durchlauf über pintoggle invertiert, gefolgt von einer kleinen Verzögerungszeit von 200 ms.

2 - I/O-Pin als Eingang

Mit diesem Vorwissen ist es jetzt leicht, einen Taster und fünf LED mit jeweils 1,5kOhm Pullup-Widerstand zu beschalten. Der Taster soll mit P17 verbunden sein und, sobald er gedrückt wird, die LED-Gruppe LED0 ... LED4 an P0 ... P4 in einer bestimmten Sequenz einschalten.

Übung 1 - Taster schaltet LED-Gruppe mit internen Pullups ein bzw. aus

Taster schaltet LED-Gruppe ein- bzw. aus
Material
  • 1x  P2-Edge Module Breadboard
  • 1x  Propeller P2-Edge
  • 1x  Prop-Plug
  • 5x  LED
  • 1x  Taster
  • 1x  Widerstand 10kOhm
  • 1x  Widerstand 100 Ohm
  • diverse Steckdrähte
Aufgaben
  • Baue die Schaltung nach Schaltskizze auf dem Breadboard auf.
  • Übertrage das Programm in den Programmeditor und speichere es ab.
  • Überlege dir bei jeder Programmzeile, welche Wirkung der Befehl hat und finde heraus, wie die LEDs reagieren, wenn der Taster T1 gedrückt wird.
  • Starte das Programm und überprüfe deine Vorhersage.
  • Verändere das Programm so, dass andere LED-Leuchtmuster bei Tastendruck aufleuchten.

Schaltungsaufbau

 

 

Abb. 3a

Aufbau auf einem P2-Edge-Module Breadboard mit fünf LED an P0 ... P4.

 

 

 

 

 

 

Abb. 3b

Aufbau auf einem P2-Edge-Module Breadboard. Der Taster ist mit P17 des Propeller P2 Controllers verbunden.

Das Programm

Sobald die Taste T1 gedrückt wird, leuchten die LED an P0, P2 und P4 auf.

 

 

Abb. 4

Bei gedrückter Taste leuchten die LED an P0, P2 und P4. Sobald T1 losgelassen wird, erlöschen alle LEDs.

Internen Pullup-Widerstand für Taster an P17 einschalten

 

Der Schaltungsaufbau aus Abb. 3b lässt sich mit Zuschaltung des internen Pullup-Widerstandes von P17 ebenfalls vereinfachen (s. Abb. 5). Das geänderte Programm zeigt Abb. 6.

 

 

 

 

 

 

 

 

 

 

Abb. 5

Bei dieser Beschaltung muss der interne Pullup von P17 eingeschaltet sein.

Zum Verständnis der Wirkung des Pullup-Widerstandes gibt es weitere Hinweise an dieser Stelle.

Das geänderte Programm mit Aufruf interner Pullup-Widerstände

Abb. 6

Die Pullup-Widerstände 1,5kOhm (für LED) und 15kOhm (für Taster T1) werden in den Methoden Pullup1k5() und Pullup15k() eingeschaltet.

 

Die Einstiegsmethode main() schaltet die Pullups ein.

In der Endlosschleife repeat wird der Status des Tasters abgefragt. Ist er gedrückt, liegt eine 0 am Eingang von P17.

 

In der Entscheidungsabfrage IF ... ELSE werden bei 0 an P17 bestimmte LEDs eingeschaltet; wenn nicht (ELSE), werden sie ausgeschaltet.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf