Böcker Sirius STK1 Starter-Kit (Teil 1): Das erste Programm

 

In diesem Tutorial werden Sie sehen, wie einfach und faszinierend die Systementwicklung mit den PSoC-Mikrocontrollern von Cypress ist. Dabei handelt es sich nicht um einen einfachen Mikrocontroller, sondern im Grund um ein komplettes Elektroniklabor. Sie können aus einer riesigen Bibliothek digitale und analoge Module wie A/D-Wandler, Komparatoren, programmierbare Verstärker, Zähler, Multiplexer, Filter, etc. auswählen. Für jedes Modul steht eine Funktionsbibliothek mit umfassender API zur Verfügung. Diese Module erleichtern die Entwicklung enorm. So können Sie Kommunikationsmodule für UART-, SPI- oder I²C-Schnittstellen in den Baustein integrieren, diese über einen einfachen Befehl starten und mit den Befehlen der API Daten senden oder empfangen. Und das selbst mit den kleinsten Mitgliedern der PSoC1-Familie im 8-poligen DIP-Gehäuse.   

 

Es gibt 3 Familien der PSoC-Mikrocontroller, mit denen Sie praktisch alle Anforderungen der Elektronikentwicklung erfüllen können:

PSoC1: 8-Bit-M8C-Prozessorkern mit max. 24 MHz Takt, 4 MIPS Rechenleistung, max. 32 KByte Flash / 2 KByte SRAM

PSoC2: 8-Bit-8051-Prozessorkern mit max. 67 MHz Takt, 33 MIPS Rechenleistung, max. 64 KByte Flash / 8 KByte SRAM

PSoC3: 32-Bit-ARM-Prozessorkern (Cortex M3) mit max. 67 MHz Takt, 84 MIPS Rechenleistung, max. 256 KByte Flasch / 64 kByte SRAM

 

Das  logo_klein.png Böcker Merkur PEv1-Board

 

Schauen wir uns zunächst einmal an, was sich alles auf dem Merkur PEv1-Board befindet:

 

PSoC_Board_Uebersicht1_klein.jpg

 

1: Der PSoC-Controller in einem 28-poligen Sockel

 

2: 4 LEDs, die über die Jumper "e" mit Port 0.0 bis 0.3 verbunden werden können

 

3: DIP-Schalter zur manuellen Eingabe an Port 0 

 

4: Pfostenstecker für die Ports 0, 1 und 2. Alle 24 I/O-Pins sind auf diese Steckplätze heraus geführt. 

 

5: 2 Taster, die über die Wahljumper "f" entweder 5V- oder GND-Pegel an die Port-Pins 1.5 und 1.3 legen. 

 

6: Westernbuchse für die Realisierung einer I²C, SPI- oder UART-Schnittstelle. Für den Einsatz als I²C-Bus sind über die Jumper "d" auswählbare Terminierungswiderstände auf dem Board integriert.

 

7: Reset-Taster

 

8: Steckplatz für den Anschluss der LCD-Anzeige

 

a: Externer Spannungsanschluss 6,5 bis 24 VDC oder VAC

 

b: Programmierschnittstelle für den Anschluss des MiniProg

 

c: Jumper für die Auswahl der Spannungsversorgung (intern oder extern)

 

g: Hier befindet sich eine kleine Fassung, in die bei Bedarf ein Poti eingesteckt werden kann, wodurch ein variabler Spannungsteiler entsteht, der mit Port 0.1 verbunden ist. So kann sehr einfach der A/D-Wandler getestet werden.

 

Das Board bietet also alles, was Sie für einen ersten Test benötigen. Falls Sie die integrierten Komponenten nicht benötigen, entfernen Sie alle Jumper, das gesteckte Potentiometer und schalten alle DIP-Schalter auf OFF. So können Sie alle Ports frei für Ihre Zwecke nutzen. 

 

Die kostenlose Entwicklungsumgebung PSoC Designer

 

Die Controller der PSoC3- und PSoC5-Familien werden mit der kostenlosen Entwicklungsumgebung PSoC Creator konfiguriert und programmiert. Für die Mitglieder der PSoC1-Familie gibt es den ebenfalls kostenlosen PSoC Designer. Im Download enthalten ist auch eine Programmer-Software, die separat oder aus der IDE gestartet werden kann. Alles was Sie außer dem Starter-Kit noch benötigen, ist die kostenlose Entwicklungsumgebung PSoC-Designer, die Sie hier herunterladen können. (Die Software auf CD ist im Lieferumfang des Starterkits enthalten). 

 

Auf dem Böcker Merkur PEv1-Board des Starter-Kits befindet sich ein CY8C24423-Baustein, ein Mitglied der PSoC1-Familie. Die Bausteine unterscheiden sich in Hinsicht auf Speichergröße und der möglichen Modulkonfiguration. Falls der CY8C24423 für Ihre Anwendung nicht ausreicht, können Sie ihn ohne Probleme gegen das Flaggschiff der PSoC1-Familie, den CY8C29466 austauschen. Die Bauteile sind Pin-kompatibel.  

 

Nach der Installation und dem Starten des PSoC Designers sehen Sie den folgenden Startbildschirm:

 

PSoC_1_klein.png

 

Neben den Hintergrundinformationen und Neuigkeiten rund um die PSoC1-Mikrocontroller sind für uns maßgeblich die Menüpunkte "Neues Projekt" und "Projekt öffnen" wichtig. Wir wollen mit einem neuen Projekt beginnen und es öffnet sich der folgende Dialog:

PSoC_2_klein.png

 

Neben dem Namen des Projektes und des Verzeichnisses können wir noch den Namen für den Workspace vergeben, falls Sie mehrere Projekte in einem Workspace verwalten möchten. Sie können vom Programm automatisch ein Verzeichnis erzeugen lassen, in das dann alle Dateien geschrieben werden. Mit "Project Creation" können Sie angeben, ob es ein komplett neues Projekt werden soll oder ob Sie ein Projekt "klonen" wollen. Das ist dann sinnvoll, wenn Sie bei einem bestehenden Projekt den Ziel-Controller wechseln möchten. Nun wählen Sie den Controller aus, mit dem Sie arbeiten. Das ist beim Starter-Kit der CY8C24423. Zum Schluss müssen Sie noch angeben, ob Sie Ihr Projekt in C oder in Assembler programmieren möchten. Nach diesen Angaben gelangen Sie nun in die eigentliche Designer-Oberfläche. 

 

PSoC_3_klein.png

 

Im mittleren Bereich sehen Sie unten die verfügbaren analogen und oben die digitalen Modulplätze. Beim CY8C29446 wären es sogar 12 analoge und 16 digitale Blöcke. Desweiteren sind 5 Fenster zu sehen, die folgende Aufgaben erfüllen.

 

Hinweis: Da die einzelnen Fenster teilweise sehr viele und komplexe Einstellungen erlauben, werde ich in dieser Einführung nicht im Detail darauf eingehen. Es ist wesentlich einleuchtender, wenn wir die einzelnen Funktionen dann besprechen, wenn wir sie im Projekt benötigen.

 

Oben links nehmen Sie die globalen Einstellungen vor:

PSoC_4.PNG

 

Hier wählen Sie z. B. den Systemtakt, den Prozessortakt und die Einstellungen der einstellbaren Taktquellen VC1, VC2 und VC3. 

 

Direkt darunter befindet sich der Bereich, in dem die Modulkonfiguration vorgenommen wird. Da wir noch kein Modul aktiviert haben, ist dieser Bereich leer.

Ganz unten links ist ein sehr wichtiges Fenster für die Betriebsart (Treiberkonfiguration) der einzelnen Anschluss-Pins. Damit werden wir uns in Kürze genau beschäftigen.

PSoC_5.PNG

 

Weiter geht es oben rechts mit dem Projektfenster. In diesem Bereich wählen wir die Dateien aus, z. B. unser Hauptprogramm "main.c", wenn wir die Entwicklung in C vornehmen wollen, aber auch das Pinout oder die aktivierten Module sind hier zu sehen.

 

PSoC_6.PNG
 

Im letzten Fenster unten rechts finden Sie den Modulkatalog, der speziell für den ausgewählten Baustein angepasst ist. Es werden also nur die Module angezeigt, die sich im aktuellen Controller auch nutzen lassen. Dabei handelt es sich um eine Ordnerstruktur, im Eintrag ADC finden Sie z. B. alle A/D-Wandler-Module. Schauen Sie sich die Ordner einmal an. Sie werden bestimmt begeistert sein, wie viele Module Sie nutzen können und es kommen immer noch weitere dazu. 

 

PSoC_7.PNG
 

Für unser erstes Programm nutzen wir nur den Controller selbst, also ohne Module. Deshalb müssen wir keine weiteren Einstellungen vornehmen und rufen durch Doppelklick auf "main.c" den Quellcode auf. Der PSoC Designer erstellt das Gerüst für main.c automatisch beim Anlegen eines Projektes. Der Code sieht folgendermaßen aus:

 

PSoC_8_klein.png
 

 

Oben finden Sie die notwendigen Include-Dateien und lediglich die Definition der main-Funktion. Die erste auskommentierte Zeile "M8C_EnableGInt" gibt die globalen Interrupts frei, die wir aber für unser erstes Programm gar nicht brauchen. Also löschen wir alles innerhalb der geschweiften Klammern und geben die folgenden Befehle ein:


PSoC_9a.PNG

 

Mit dem ersten Befehl setzen wir alle 8 Bits des Datenregisters von Port 0 (PRT0DR) auf High. Damit werden auch alle 8 Anschluss-Pins von Port 0 auf "High" gesetzt. Der 2. Befehl ist eine Endlosschleife. Da es in C keine Befehle zur Bit-Manipulation gibt, müssen wir zum Setzen eines einzelnen Pins eine ODER-Verknüpfung mit einer Maske durchführen, in der alle zu setzenden Bits auf "1" stehen. Zum Löschen verwenden wir dann eine UND-Verknüpfung mti einer "0"-Maske.

 

PRT0DR |= 0x01; //Setzt das Bit 0 die anderen Bits bleiben so wie sie sind

PRT0DR & ~0x03; //Löscht Bit 0 und Bit 1. Durch das Komplement-Zeichen ~ wird aus 0000.0011 => 1111.1100 

 

Wenn Sie nun im Menü "Build" den Befehl "Build Project" aufrufen, wird das Programm übersetzt... und Sie erhalten eine Fehlermeldung. 

 

PSoC_10.PNG
 

Hier spüren Sie den ersten Unterschied zur Arbeit mit herkömmlichen Mikrocontrollern. Der PSoC muss zunächst mindestens einmal konfiguriert werden, dadurch werden alle Module eingebunden, aber auch z. B. die globalen Einstellungen umgesetzt. Sie müssen den Menüpunkt "Generate Configuration Files" am Anfang und immer dann aufrufen, wenn Sie Module hinzugefügt oder geändert haben.

 

Sie können die Befehle auch über die Symbole in der Menüleiste aufrufen. Mit dem linken Symbol erzeugen Sie die Konfigurationsdateien und kompilieren das Programm im Anschluss, das 2. Symbol erzeugt nur die Konfigurationsdateien, das 3. Symbol kompiliert und das 4. Symbol kompiliert und linkt (Build). 

 

PSoC_11.PNG

 

Nachdem wir nun das Symbol ganz links angewählt haben, laufen beide Prozesse durch und unser Projekt wird konfiguriert und in ein lauffähiges Programm gewandelt. Um es in unsere Zielhardware zu laden, schließen Sie den Cypress PSoC Mini-Programmer CY3217  an und vebinden ihn mit der PEv1-Platine. Sie können das im aktiven Zustand machen, die Versorgung wird erst später beim Programmieren bzw. manuell eingeschaltet. 

 

Programmer_PSoC.jpg

 

Im PSoC-Designer rufen wir den Menüpunkt "Program" und dort "Program Part" auf und der PSoC-Programmer wird gestartet. Falls Sie später weitere Bausteine mit dem gleichen Projekt programmieren wollen, können Sie den PSoC-Programmer auch allein aufrufen. So aufgerufen, bietet der Programmer noch viele weitere Funktionen, auf die wir in einem späteren Tutorial noch eingehen werden. Jetzt wollen wir einfach nur den Controller programmieren. Das kleine folgende Video zeigt den Ablauf der Programmierung. 

 

 

 

Mit einem Klick auf den Einschaltknopf (orangener Pfeil im Video) können Sie Ihr Board mit Spannung versorgen und die Leuchtdioden sollten nun leuchten ...? Tun sie aber nicht! Entschuldigen Sie bitte, dass ich Sie bewusst in diese kleine Falle habe laufen lassen, aber dadurch wird eine Besonderheit der PSoC-Controller deutlich, die sehr häufig Grund für spätere Fehler ist. Anders als bei den meisten Mikrocontrollern können Sie bei einem PSoC die Treiberschaltung der Pins selbst einstellen. Das ist vielleicht zunächst etwas ungewohnt und wirkt vielleicht sogar umständlich bzw. fehlerträchtig (wie Sie gerade gesehen haben). Es bietet Ihnen aber fast ungeahnte Möglichkeiten. 

 

Sie können die Treiber für jeden Pin separat hochohmig (Tri-State) schalten, Sie können Pull-up- oder Pull-down-Widerstände aktivieren und somit zusätzliche Beschaltung sparen, Sie können die Anschlüsse im Open-Kollektor-Modus betreiben und Sie können den Modus "strong" wählen, mit dem sich z. B. LEDs direkt ansteuern lassen. Insgesamt stehen 8 mögliche Treiberschaltungen zur Verfügung. Auf die Möglichkeiten werden wir ebenfalls in einem weiteren Tutorial eingehen. Nur so viel: Die Treiberschaltungen lassen sich später dynamisch per Software beliebig ändern. 

 

Standardmäßig ist für die Treiber der Anschlüsse "High Z analog" also hochohmig vorgesehen. Der Controller verhält sich also praktisch unsichtbar. Um die Einstellungen für die Ports 0.1 bis 0.3 zu ändern, müssen Sie in das Pinout-Fenster unten links wechseln und dort die einzelnen Pins anwählen. Auch dazu wieder ein kurzes Video:

 

 

 

Bevor Sie nun das Programm neu compilieren, sollten Sie bedenken, dass Sie mit den Pin-Einstellung ja etwas außerhalb des Programmcodes geändert haben. Der Compiler kann davon ja nichts wissen und würde den selben Code erzeugen. Wir müssen also wieder die Konfigurationsdatei neu erstellen lassen. Da wir danach eh neu compilieren möchten, können Sie gleich die kombinierte Funktion "Generate/Build Project" aufrufen.

 

Nach einem erneuten Programmierdurchgang tut das Programm nun genau das, was es tun sollte: Die 4 Leuchtdioden leuchten. Das ist noch nicht viel, aber wir haben unser erstes Programm erstellt.

 

PSoC_Teil1_Ende.jpg

 

Im nächsten Teil werden wir uns mit den User-Modulen LCD-Anzeige und A/D-Wandler beschäftigen und damit ein wenig Dynamik ins Spiel bringen. Ich würde mich freuen, wenn Sie wieder mit dabei sind. 

 

Für weitere Informationen und Bestellungen des Böcker PSoC-Starter-Kits einfach auf nachfolgenden Link klicken:

logo_klein.png Böcker Sirius STK1 Starter-Kit                   
 

 

Falls Sie Fragen zum Thema haben, wenden Sie sich einfach an uns.

Wir helfen Ihnen gern weiter!

 

Ihr Team von Böcker Systemelektronik

 

Hinweis: Unser Tutorialangebot wird in unregelmäßigen Abständen erweitert. Wenn Sie sofort über eine Neuerscheinung informiert werden möchten, tragen Sie sich bitte hier in unsere Benachrichtigungsliste "Tutorials" ein. Sie können diesen unverbindlichen Service jederzeit in Ihrem Kundenkonto oder per E-Mail wieder abbestellen.  

 

 

Copyright © Böcker Systemelektronik