Herunterladen Inhalt Inhalt Diese Seite drucken
Inhaltsverzeichnis

Werbung

C-Control II Station
Handbuch
Version 2001/12/10
Conrad Electronic GmbH
Hirschau, Germany

Werbung

Inhaltsverzeichnis
loading

Inhaltszusammenfassung für Conrad Electronic C-Control II Station

  • Seite 1 C-Control II Station Handbuch Version 2001/12/10 Conrad Electronic GmbH Hirschau, Germany...
  • Seite 2 C-Control II Station...
  • Seite 3 Sehr geehrte Kundin, sehr geehrter Kunde, wir danken Ihnen für Ihr Interesse und Ihr Vertrauen in unsere C-Control II Station. Für zahllose Anwender ist C-Control bereits seit Jahren ein Begriff für kompakte, zuverlässige und preiswerte Steuerungslösungen. Neben klassischen Applikationen, wie Heizungssteuerungen und Datenerfassungssystemen, sind uns auch erfolgreiche Einsätze in der Industrieautomation, der Laborforschung oder der Midi-Technik in...
  • Seite 4 C-Control II Station Impressum Diese Bedienungsanleitung ist eine Publikation der Conrad Electronic GmbH, Klaus-Conrad-Straße 1, D-92240 Hirschau. Alle Rechte einschließlich Übersetzung vorbehalten. Reproduktionen jeder Art, z.B. Fotokopie, Mikroverfilmung oder die Erfassung in EDV-Anlagen, bedürfen der schriftlichen Genehmigung des Herausgebers. Nachdruck, auch auszugsweise, verboten.
  • Seite 5: Inhaltsverzeichnis

    Inhalt Inhaltsverzeichnis Seite Einleitung Lesen dieser Anleitung Wichtige Hinweise Produktbeschreibung Bestimmungsgemäße Verwendung Leistungsmerkmale Gewährleistung und Haftung Handhabung Programmieren des Moduls Montage Ausführen des Anwenderprogramms Bedienelemente Tasten Leuchtdioden Anschlußklemmen Niederspannungsklemmen Netzklemmen Hinweise zum Anschluss der Station Hardware Einleitung Schaltungstechnik -intern Betriebssystem Überblick Bootstrap -Installieren des Betriebssystems Hostmodus...
  • Seite 6 C-Control II Station Virtuelle Maschine 7.4.1 Grundlagen 7.4.2 Binärcodeinterpreter 7.4.3 Multithreading 7.4.4 Programm-und Konstantenspeicher 7.4.5 Datenspeicher 7.4.6 Stapelprozessor 7.4.7 Systemschnittstelle Die Programmiersprache C2 Einleitung Projekte und Module Syntax -Grundelemente 8.3.1 Kommentare 8.3.2 Zwischenräume 8.3.3 Bezeichner 8.3.4 Anweisungen und Anweisungsblöcke 8.3.5 Ausdrücke...
  • Seite 7 Inhalt 8.6.6 Benannte konstante Arrays Operatoren 8.7.1 Rangfolge 8.7.2 Arithmetische Operatoren 8.7.3 Bitschiebeoperatoren 8.7.4 Vergleichsoperatoren 8.7.5 Logische Operatoren und Bitmanipulationen 8.7.6 Stringverkettung mit dem Operator + Funktionen Threads 8.10 Anweisungen zur Ablaufsteuerung Softwareentwicklung Installation und Start der integrierten Entwicklungsumgebung Quelltexte bearbeiten Richtlinien zur Quelltextformatierung Automatischer Compiler Simulation und Debugging...
  • Seite 8 C-Control II Station Systemprogrammierung Anhang 12.1 Technische Daten...
  • Seite 9: Einleitung

    1 Einleitung 1.1 Lesen dieser Anleitung Bitte lesen Sie diese Anleitung, bevor Sie die C-Control II Station in Betrieb nehmen. Während einige Kapitel nur für das Verständnis der tieferen Zusammenhänge von Interesse sind, enthalten andere wichtige Informationen, deren Nichtbeachtung zu Fehlfunktionen oder Beschädigungen führen kann.
  • Seite 10: Produktbeschreibung

    Anschlüsse besteht Brandgefahr durch Kurzschlüsse, und können das Modul und angeschlossene Geräte schwer beschädigt werden! 3. Die C-Control II Station darf nicht in Verbindung mit Geräten benutzt werden, die direkt oder indirekt medizinischen, gesundheits- oder lebenssichernden Zwecken dienen oder durch deren Betrieb Gefahren für Menschen, Tiere oder Sachwerte entstehen können.
  • Seite 11: Leistungsmerkmale

    2. Produktbeschreibung 2.2 Leistungsmerkmale Die C-Control II Station beinhaltet bereits alle nötigen Baugruppen, um zahlreiche Applikationen ohne Mehraufwand für Zusatzgeräte zu realisieren: · Netzteil mit Spannungsstabilisierung · Klemmen zum Anschluß eines Pufferakkus · programmierbare Steuereinheit mit Mikrocontroller · 8 programmierbare Digitalports ·...
  • Seite 12: Gewährleistung Und Haftung

    Conrad Electronic übernimmt keine Haftung für Schäden, die unmittelbar durch oder in Folge der Anwendung der C-Control II Station entstehen. Der Einsatz der C-Control II Station in Systemen, die direkt oder indirekt medizinischen, gesundheits- oder lebens- sichernden Zwecken dienen, ist nicht zulässig.
  • Seite 13: Handhabung

    3 Handhabung Dieses Kapitel gibt einen Überblick über die Handhabung des Moduls. Die nötigen Detailinformationen entnehmen Sie bitte den nachfolgenden Kapiteln dieses Handbuches. Die Arbeit mit der C-Control II Station gliedert sich in drei Stufen 1. Programmieren des Moduls 2. Montage 3.
  • Seite 14: Montage

    · Schalten Sie die Spannungsversorgung ein. · Drücken Sie den Reset-Taster. · Nun können Sie oder andere Anwender die C-Control II Station in der von Ihrem Anwenderprogramm festgelegten Weise bedienen. Die Station arbeitet so lange nach Programm, bis die Betriebsspannung ausfällt oder der Reset-Taster gedrückt wird. Nach...
  • Seite 15: Bedienelemente

    4. Bedienelemente 4 Bedienelemente...
  • Seite 16: Tasten

    Die Zehnertastatur kann im Anwenderprogramm abgefragt werden und z.B. Eingabe von Betriebsparametern verwendet werden. (siehe Programmierung). 4.2 Leuchtdioden Die C-Control II Station hat acht Leuchtdioden (LEDs), die durch kleine Rundfenster in der Folientastatur scheinen. Die LEDs dienen der Information des Anwenders über verschiedene Betriebszustände des Moduls. Die unterschiedlichen Farben kennzeichnen die einzelnen Funktionsgruppen: grün = Relais, gelb und rot = Anwender-LEDs.
  • Seite 17: Anschlußklemmen

    5. Anschlußklemmen 5 Anschlußklemmen 5.1 Niederspannungsklemmen Achtung: Zur Einhaltung der geltenden Bestimmungen bez. EMV dürfen zum Anschluss an Ports nur geschirmte Leitungen verwendet werden. 5.1.1 Serielle Schnittstelle RS232 Datenempfangsleitung (RX) Schnittstellenkabel, weiße Ader Signal Ground (Masse, GND) Schnittstellenkabel, braune Ader Datensendeleitung (TX) Schnittstellenkabel, grüne Ader An den Klemmen 1 bis 3 wird bei der Programmierung des Moduls das Schnittstellen-...
  • Seite 18: Signaleingangsleitung, Hier Wird Die Low-Aktive Signalleitung Der Dcf77

    C-Control II Station 5.1.5 DCF77 Aktivantenne [13] Signaleingangsleitung, hier wird die low-aktive Signalleitung der DCF77- Aktivantenne angeschlossen [14] stabilisierte Versorgungsspannung (+5V ) für die DCF77 Aktivantenne [15] Signal Ground (Masse, GND) An den Klemmen [13] bis [15] kann optional eine DCF77-Aktivantenne zur Zeitsynchronisation des Moduls angeschlossen werden.
  • Seite 19: Digitalports (Fester Ausgang)

    5. Anschlußklemmen Die Analogports dienen zur Messung von analogen Spannungswerten, bezogen auf das Massepotential der C-Control II Station. Die Meßwerterfassung erfolgt durch die A/D-Wandler des Mikrocontrollers mit 10 Bit Auflösung und liefert Werte von 0 bis 1024. Die Referenzspannung beträgt 4,096V.
  • Seite 20: Frequenzmeßeingang

    C-Control II Station 5.1.11 Frequenzmeßeingang [13] DCF 77 Eingang oder alternativer Frequenzmesseingang FRQ 0 [39] FRQ 1 [40] GND An Klemme [13] und [39] kann die Frequenz digitaler Pulse gemessen werden. 5.1.12 Niederspannungsversorgung und Akkupufferung [15] GND [16] Ausgang der stabilisierten Systemspannung, 12V(bei Netzbetrieb) [17] GND [18] Eingang für ein stabilisiertes 12V-Netzgerät oder einen 12V-Akku (+)
  • Seite 21: Hinweise Zum Anschluss Der Station

    5. Anschlußklemmen [24] K2 [25] leere Klemme Mit den Relais K1 und K2 im Modul können Geräte geschaltet werden, die mit 230V Netzspannung betrieben werden. Der maximal zulässige Kontaktstrom (siehe Technische Daten) darf nicht überschritten werden. Die leeren Klemmen zwischen den Relais und dem Versorgungsspannungs- anschluß...
  • Seite 22: Programmieren Bei Netzversorgung

    5.3.3 Programmieren bei Netzversorgung Die Programmierung mit Netzversorgung dient zur Übertragung von Anwender- programmen am Einsatzort des Moduls. Die C-Control II Station ist dabei auf der DIN- Schiene montiert. Zur Gewährleistung des Berührungschutzes müssen zumindest die Netzanschlußklemmen verblendet sein. Beim Anschluß des Programmierkabels muß die C-Control II Station spannungsfrei sein! ACHTUNG: Die Versorgung eines frei am Tisch liegenden Moduls über ein...
  • Seite 23: Hardware

    In diesem Kapitel erfahren Sie die wichtigsten Grundlagen zur Hardware der C-Control II Station. Auf den hinteren Umschlagseiten finden Sie den vollständigen Schaltplan der C-Control II Station. Er dokumentiert den inneren Aufbau und die Funktionsweise der Station. Die Schaltung wurde nach Applikationsvorschlägen aus den Datenblättern der verwendeten ICs entwickelt.
  • Seite 24 Controller. Intern verfügt der Controller über 64kB OTP-ROM (one time programmable - einmalig programmierbar) sowie 1kB RAM, inklusive Universal Register und Special Function Register. Das interne RAM wird vom Betriebssystem der C-Control II Station über einen Teil des ersten FLASH-Segments gelegt. Der interne OTP-Bereich ist deaktiviert und nicht nutzbar.
  • Seite 25: Referenzspannungserzeugung

    PLL-Schaltung daraus den 20MHz-Systemtakt. 6.2.5 LCD Das LCD der C-Control II Station stellt 2 Zeilen zu je 16 Zeichen dar. Jedes Zeichen besteht aus einer monochromen Matrix von 5x7 Punkten. Ein blinkender Cursor unter einem der Zeichen kann die aktuelle Ausgabeposition anzeigen. Die Besonderheit des Displays ist seine schaltbare Hintergrundbeleuchtung.
  • Seite 26: Spannungsversorgung (230 V)

    C-Control II Station 6.2.6 Tastatur Die Tastatur der C-Control II Station ist eine Folientastatur. Sie ist über ein Widerstandsnetzwerk an einen internen AD-Kanal der CPU angeschlossen. Das Betriebssystem der C-Control II Station bietet eine einfach zu nutzende Softwareschnittstelle für Eingaben von der Tastatur.
  • Seite 27 Ports eine maximal zulässige Leitungslänge von 0,25 Metern. 6.2.11 Digitalports (P0…P7) Die C-Control II Station führt 8 digitale Ports des Mikrocontrollers (P1H.0…P1H.7) nach aussen. An den Digitalports können z.B. Taster mit Pull-Up-Widerständen, Digital-ICs, Optokoppler oder Treiberschaltungen für Relais angeschlossen werden. Die Ports können einzeln, in Vierergruppen (“Nibble “) oder byteweise angesprochen werden (siehe Kapitel...
  • Seite 28: Sonderfunktionen Der Digitalports

    Aufruf einer Initialisierung alle konkurrierenden Portfunktionen deaktiviert. 6.2.11.2 Zähler und Interruptports Die vier Ports P0 bis P3 der C-Control II Station sind interruptsensibel. Nach dem Reset sind sie vom Betriebssystem wie folgt konfiguriert: Bei jeder High-Low-Flanke an einem der Pins wird in eine von vier Systeminterrupt-routinen verzweigt.
  • Seite 29 Die Outputports PO 0 bis PO4 der Station werden über ein Schieberegister angesteuert, das mit dem LCD zusammen an einem internen Bus betrieben wird. Das Betriebssystem der C-Control II Station bietet eine einfach zu nutzende Softwareschnittstelle für das Ansprechen der Ports.
  • Seite 30 Ansprechen der Sensoren, so dass Kenntnisse des Protokolls nicht erforderlich sind. 6.2.15 A/D-Ports Die C-Control II Station verfügt über 8 Ports (A/D0…A/D7), die mit dem internen 10bit-A/D-Wandler des Mikrocontrollers verbunden sind. Das Betriebssystem nimmt im Hintergrund ständig A/D-Wandlungen vor. Zur Reduzierung von Störeinflüssen werden die Spannungssignale durch eine gleitenden Mittelwertbildung gefiltert.
  • Seite 31: Can-Interface

    6. Hardware 6.2.17 PLM-Ports Die C-Control II Station verfügt über drei Ports (“Kanäle“) zur Ausgabe pulslängen- modulierter Signale: PLM0, PLM1 und PLM2. Letzterer wird intern zum Betrieb des Buzzers benutzt. PlM0 und PLM1 können zur D/A-Wandlung, zur Ansteuerung von Servomotoren im Modellbau oder zur Ausgabe von Tonfrequenzen benutzt werden.
  • Seite 32 Die CAN-Übertragungsgeschwindigkeit von 1Mbit/s wird von C-Control II nicht direkt unterstützt. Diese Bitrate erfordert besondere Maßnahmen zur Übertragungssicherheit und vor allem gegen die Störaussendung. Conrad Electronic geht nicht davon aus, daß die C-Control II Unit in Applikationen Einsatz findet, die derartige hohe Übertragungsraten erforderlich machen.
  • Seite 33: Betriebssystem

    Assembler und der Programmiersprache C geschrieben und liegt in Binärform auf der CD zur Unit vor. Das Betriebssystem (OS) der C-Control II Station ist bei der Auslieferung in der Regel bereits installiert. Sollten Sie eine aktualisierte Form (soweit vorhanden) laden wollen, muss das OS im ersten Segment des FLASH-Speichers gespei- chert werden (erstes Segment =”Segment 0“).
  • Seite 34: Hostmodus

    Reset automatisch und geht in den Hostmodus über. Bei allen nachfolgenden Kapiteln gehen wir davon aus, daß das Betriebssystem der C-Control II Station bereits korrekt installiert ist, was im Rahmen der Endkontrolle bei der Fertigung erfolgt. 7.3 Hostmodus 7.3.1 Systeminitialisierung und Starten von Programmen...
  • Seite 35: Virtuelle Maschine

    • einfache Portierbarkeit der VM auf andere Computersysteme bei Wiederverwendbarkeit existierender Programme, sogar als Binärcode Im Betriebssystem der Station läuft eine von Conrad Electronic entwickelte virtuelle Maschine. Sie ist funktionell eng an die Programmiersprache C2 gekoppelt und bietet den Anwenderprogrammen einfachen Zugang zu den Systemressourcen.
  • Seite 36: Binärcodeinterpreter

    Binärcode. Dieser kann in die C-Control geladen werden. Bei der Ausführung des Anwenderprogramms wird der Binärcode schrittweise gelesen und interpretiert. D.h. für jeden gelesenen Code wird eine definierte Operation ausgeführt. Die virtuelle Maschine der C-Control II Station kennt vier Codeformen -zwei 16bit-Formen und zwei 32bit-Formen: Form...
  • Seite 37 7. Betriebsystem in denen gewartet werden muß, bis der Kommunikationspartner bereit für den Datenempfang ist. In einem Computersystem mit ausschließlich sequentieller Abarbeitung des Programmes ist es praktisch unmöglich, in diesen Wartezuständen auf weitere Ereignisse zu reagieren. So kann es passieren, daß ein Alarmzustand aufgrund einer Übertemperatur nicht oder nicht rechtzeitig erkannt wird, während das System auf die Bereitschaft eines angeschlossenen Druckers wartet.
  • Seite 38: Programm-Und Konstantenspeicher

    Daten erfolgt Byte-weise über einen 16bit-Offset. 7.4.6 Stapelprozessor Die virtuelle Maschine der C-Control II Station arbeitet als Stapelprozessor. Sie implemen- tiert nicht wie viele Mikrocontroller und Mikroprozessoren spezielle Rechenregister oder einen Akkumulator. Statt dessen werden alle Operanden auf einen Stapel (Stack) geladen.
  • Seite 39: Systemschnittstelle

    16Bit-Stackpointer (SP) zeigt auf das obere Ende des Stapels. Jeder Thread hat sein eigenes Paar von Base-und Stackpointern. 7.4.7 Systemschnittstelle Die virtuelle Maschine der C-Control II Station verfügt über spezielle Befehlscodes als Schnittstelle zu den Hardwareressourcen und Funktionen des Betriebssystems. Damit unter- scheidet sie sich vom zugrundeliegenden Mikrocontroller C164CI, der die Hardwareressourcen als Register in einen bestimmten Speicheradreßbereich legt (Special...
  • Seite 40: Die Programmiersprache C2

    C-Control II Station 8 Die Programmiersprache C2 8.1 Einleitung Die Programmierung der C-Control II erfolgt in der Programmiersprache C2. C2 ist syntaktisch ähnlich zu C, einige Details erinnern auch an PASCAL oder BASIC. Wie in C gibt es nur eine überschaubare Anzahl von Schlüsselworten. Einige Schlüsselworte dienen speziell der Unterstützung des Multithreading.
  • Seite 41: Syntax -Grundelemente

    8. Die Programmiersprache C2 sein (siehe unten). Jeder Name darf nur einmal im Projekt vorkommen. Auf die Module verteilt steht der gesamte Quelltext eines Programms. Auf Modulebene werden globale Variablen, benannte Konstanten, zusammengesetzte Datentypen, Funktionen und Threads definiert. Die Aufteilung eines Projektes in mehrere Module hat folgende Vorteile •...
  • Seite 42: Zwischenräume

    C-Control II Station Mehrzeilige Kommentare können in /* */ -Sequenzen eingebettet werden. z.B.: das alles ist ein Kommentar Verschachtelte mehrzeilige Kommentare sind nicht zulässig. 8.3.2 Zwischenräume Alle Zeichen mit den ASCII-Codes 0…32 werden als Zwischenräume (engl.”whitespaces“ oder “blanks“) gelesen und beim Compilieren überlesen, z.B. die Leerzeichen, Tabulatoren und Zeilenvorschübe im Programmquelltext.
  • Seite 43: Anweisungen Und Anweisungsblöcke

    8. Die Programmiersprache C2 Beispiel: Funktion fx definiert in Moduldatei a.c2 function fx () // ... Aufruf der Funktion weiter unten in a.c2 fx(); Aufruf der Funktion in einem anderen Modul (in der Modulliste des Projektes nach a.c2) a.fx(); Auf alle Bezeichner von globalen Variablen, benannten Konstanten, zusammengesetzten Datentypen, Funktionen und Threads eines Modules kann in nachfolgenden Modulen auf die hier beschriebene Weise zugegriffen werden.
  • Seite 44: Ausdrücke

    C-Control II Station Anweisungsblöcke sind Folgen von Anweisungen, die durch geschweifte Klammern { } zusammengefaßt sind. z.B.: a = 123; b = a + 1; Nach einem Anweisungsblock ist kein Semikolon erforderlich. Anweisungsblöcke können statt einer einzelnen Anweisung stehen, z.B. um mehrere Aktionen innerhalb einer Programmsteueranweisung auszuführen.
  • Seite 45: Schlüsselworte

    8. Die Programmiersprache C2 weitestgehend vorherzubestimmen und zusammenzufassen. So wird die Anweisung a = 1 +2+1977+c vom Compiler vorberechnet und intern umgewandelt in a=1980+c Funktionen (siehe 7.8) werden jedoch immer aufgerufen und ausgeführt, auch wenn deren Parameter und der Rückgabewert konstant sind. In konstanten Ausdrücken sind auch zuvor definierte benannte Konstanten (siehe 7.6) verwendbar.
  • Seite 46: Zeichenketten (Strings)

    C-Control II Station Typschlüsselwort Wertbereich Speicherplatzbedarf für Variablen 0 … 255 1 Byte byte -32768 … 32767 2 Bytes - 2147483648 … 2147483647 4 Bytes long ±1.7*10 … ±1.7*10 8 Bytes -308 float 8.4.2 Zeichenketten (Strings) Die häufigste Zeichenkettenoperation in Steuerungssystemen ist das Zusammensetzen von kurzen Texten und Meßwerten für die Anzeige auf einem Display oder die Ausgabe auf...
  • Seite 47: Variablen

    8. Die Programmiersprache C2 float value; string text; Vorteile eigener Typen sind z.B die bessere Lesbarkeit eines Programmes und die einfachere Übergabe zusammengehöriger Daten an Funktionen, also z.B. function fx ( MyType t ) ... function fx ( int xpos, int ypos, float value, string text ) ...
  • Seite 48: Definition Und Anwendung Von Variablen Zusammengesetzter Datentypen

    C-Control II Station Definierte Variablen können nachfolgend in Ausdrücken und Zuweisungen verwendet werden. z.B. int x, y; x = 18; y = 8 * x; 8.5.2 Definition und Anwendung von Variablen zusammengesetzter Datentypen Die Definitionsyntax entspricht der bereits bekannten Syntax für die Definition von Variablen mit Standardtypen.
  • Seite 49 8. Die Programmiersprache C2 Der benötigte Speicherplatz errechnet sich aus der Größe eines einzelnen Elements, multipliziert mit der Anzahl der Elemente. Also werden für das float-Array im obigen Beispiel 80 Bytes belegt (10*8 Bytes). Der Zugriff auf einzelne Arrayelemente in Ausdrücken und Zuweisungsanweisungen und erfolgt über einen Indexterm in eckigen Klammern.
  • Seite 50: Initialisierung

    C-Control II Station int i,k; x = m.line[i].row[k]; Diese Syntax ist zwar etwas schreibaufwendiger als ein vergleichbares m[i][k] in anderen Programmiersprachen, dafür ist die Lesbarkeit von C2-Programmen an dieser Stelle wesentlich besser. 8.5.4 Initialisierung Der Wert einer Variablen nach der Definition ist zunächst unbestimmt. Bevor eine Variable zur Berechnung eines Ausdrucks herangezogen wird, sollte sie initialisiert werden.
  • Seite 51: Globale Und Lokale Variablen

    8. Die Programmiersprache C2 8.5.5 Globale und lokale Variablen C2 und die virtuelle Maschine der C-Control II unterscheiden zwischen globalen und lokalen Variablen. Globale Variablen werden auf Modulebene neben Threads, Funktionen, benannten Konstanten und zusammengesetzten Datentypen definiert. z.B. int i; function fx () //...
  • Seite 52 C-Control II Station Abarbeitung einer Funktion. Sie sind nur innerhalb dieses Kontextes sichtbar und zugreifbar. Beim Verlassen einer Funktion endet der Lebenszyklus einer lokalen Variable. Beim Wiedereintritt in diese Funktion oder dem parallelen Aufrufen der Funktion durch einen anderen Thread ist der Wert einer lokalen Variable stets unbestimmt.
  • Seite 53: Konstanten

    8. Die Programmiersprache C2 8.6 Konstanten 8.6.1 Benannte und unbenannte Konstanten Unbenannte Konstanten werden sehr häufig verwendet. In der Anweisung a = 1; ist “1” eine unbenannte Zahlenkonstante. Benannte Konstanten repräsentieren einen Wert, der ihnen zuvor in der Konstanten- definition (siehe weiter unten) zugewiesen wurde. Die Definition und Verwendung von benannten Konstanten hat folgende Vorteile: •...
  • Seite 54: Unbenannte Zeichenkonstanten

    C-Control II Station Beispiele: Dezimalzahlen -12345 Fließkommazahlen -123.456 Hexadezimalzahlen 0xFF 0XABCD Binärzahlen 0b01 0B11101 8.6.3 Unbenannte Zeichenkonstanten Zeichenkonstanten stehen für deren ASCII-Codes (Wertebereich 0…255) und können wie ganze Zahlen in numerischen Ausdrücken verwendet werden. Unbenannte Zeichen- konstanten sind von zwei Hochkommata eingeschlossen und bestehen selbst aus einem einzelnen Zeichen oder einem Sondercode.
  • Seite 55: Unbenannte Stringkonstanten

    8. Die Programmiersprache C2 Sondercodes mit ASCII-Code (Beispiele): Zeichen Konstante in Dezimalform Konstante in Hexadezimalform ‘\65’ ‘\x41’ ‘\97’ ‘\x61’ ‘\48’ ‘\x30’ ‘\36’ ‘\x24’ Tabulator ‘\9’ ‘\x9’ 8.6.4 Unbenannte Stringkonstanten Konstante Strings (oder “Zeichenketten”) sind konstante Texte in zwei Anführungszeichen “”. Zwischen den Anführungszeichen kann jedes darstellbare Zeichen stehen.
  • Seite 56 B und C werden vom Compiler im Konstantenspeicher der C-Control II Station angelegt, wo sie eine feste Adresse haben. Spezielle Operationscodes der virtuellen Maschine der C-Control II Station laden benannte und unbenannte Byte-und Integer-konstanten, wie oben A immer immediat, d.h. eingebettet in den Operationscode.
  • Seite 57: Benannte Konstante Arrays

    8. Die Programmiersprache C2 8.6.6 Benannte konstante Arrays Sowohl von numerischen Konstanten als auch von Stringkonstanten lassen sich benannte eindimensionale Arrays anlegen. In beiden Fällen steht nach dem Bezeichner ein Paar eckiger Klammern [ ]. Nach dem Zuweisungsoperator werden, jeweils durch ein Komma getrennt, die einzelnen Elemente aufgelistet.
  • Seite 58 C-Control II Station z.B.: a = 10 + 4 * 2; // a wird 18 Ausdrücke mit Operatoren gleichen Ranges werden von links nach rechts berechnet. z.B.: a = 10 / 4 / 2; // a wird 1,25 Wie aus der Mathematik bekannt ist, kann die Rechenreihenfolge durch Klammersetzung beeinflußt werden...
  • Seite 59: Arithmetische Operatoren

    8. Die Programmiersprache C2 Rangfolge der Operatoren in C2: Rang Operator - (negatives Vorzeichen) << >> > < >= <= & !& nand Zu einigen Operatoren existiert neben einem Symbol eine alternative Schlüsselwortform, z.B. stehen % und mod für die Modulodivision. Wählen Sie selbst, welche Form Sie bevorzugen, das Ergebnis bleibt gleich.
  • Seite 60: Bitschiebeoperatoren

    C-Control II Station 8.7.3 Bitschiebeoperatoren Operator Bedeutung Beispielausdruck Ergebnis shl links schieben << 1 << 1 3 shl 2 shr logisch rechts schieben >> 1 >> 1 5 shr 2 -1 shr 1 32767 (long) -1 shr 1 2147483647 8.7.4 Vergleichsoperatoren Vergleichsoperatoren liefern den Wert -1, (minus 1, nicht 1!), falls der Ausdruck wahr ist.
  • Seite 61: Logische Operatoren Und Bitmanipulationen

    8. Die Programmiersprache C2 8.7.5 Logische Operatoren und Bitmanipulationen In C2 sind logische Verknüpfungen immer Bitoperationen. Es wird nicht wie beispielsweise in C/C++ in Bit-AND und logisches AND unterschieden. Operator Bedeutung Beispielausdruck Ergebnis nicht (Bitinvertierung) not 0 not 2.5 not 2.0 !(2 <...
  • Seite 62: Stringverkettung Mit Dem Operator

    C-Control II Station Operator Bedeutung Beispielausdruck Ergebnis xor exklusiv-oder 1 ^ 1 1 xor 0 0 xor 0 14 ^ 3 (1<2)^(2<3) (1<2)|(3<2) (2<1)|(3<2) Eine Besonderheit bilden logische Operationen mit float-Operanden. Hier findet vor der logischen Verknüpfung eine automatische Konvertierung in einen Integerwert 0 oder - 1 statt: der float-Wert 0.0 wird zum Integer 0, alle Werte ungleich 0.0 werden zu -1.
  • Seite 63: Funktionen

    8. Die Programmiersprache C2 Zeichens interpretiert und als solches im Ergebnisstring eingebunden. Gegebenenfalls erfolgt eine Reduzierung des Wertes auf den Bereich von 0…255. Verkettungen werden automatisch auf maximal 30 Zeichen begrenzt. Beispiel für eine Stringverkettung mit +: const S = ”AAA”; const SA[] = ”XXXX”, ”YYYY”, ”ZZZZ”;...
  • Seite 64 C-Control II Station //... Anweisungen 8.8.1 Funktionskopf Der Funktionskopf beginnt mit dem Schlüsselwort. Anschließend folgen der Funktionsname (Bezeichner) und in runden Klammern die Liste der formalen Parameter. Optional kann dann nach dem Schlüsselwort returns ein Ergebnistyp spezifiziert wer- den. function name(type1 name1, ...) returns type Funktionen in C2 können nur numerische Ergebnisse zurückgeben, also die Datentypen...
  • Seite 65: Parameter Und Lokale Variablen

    8. Die Programmiersprache C2 Beispiele: · Funktion mit einem Integerparameter und einem Integerergebnis function fx( int x ) returns int · Funktion mit einem Stringparameter function fx( string s ) · Funktion mit einem long-Array und einem Integerparameter function fx( long a[], int i ) ·...
  • Seite 66: Ende Einer Funktion Und Ergebnisrückgabe

    C-Control II Station im Gegensatz zu numerischen Parametern: function fx ( int i ) i = 0; thread main int local_i; local_i = 1; fx(local_i); // local_i bleibt 1 8.8.3 Ende einer Funktion und Ergebnisrückgabe Eine Funktion endet automatisch, wenn die Programmausführung zur schließenden geschweiften Klammer des Anweisungsblocks gelangt.
  • Seite 67 8. Die Programmiersprache C2 Die erste Form darf nur für Funktionen ohne definierten Rückgabetyp verwendet werden. Die zweite Form mit numerischem Ausdruck ist für Funktionen mit definiertem Rückgabetyp reserviert. z.B.: function fx ( int param ) returns int return param * param + 100; 8.8.4 Aufruf Der Aufruf einer Funktion erfolgt durch Angabe ihres Bezeichners, gefolgt von einer öffnenden und einer schließenden runden Klammer.
  • Seite 68 C-Control II Station //... function do_something () //... get_something(); // OK, Rückgabewert ignoriert do_something(); // OK int a; a = get_something(); // OK a = do_something(); // Fehler!
  • Seite 69: Typenprüfung

    8. Die Programmiersprache C2 8.8.5 Typenprüfung Der C2-Compiler führt zu jedem Aufruf einer Funktion eine Prüfung durch, ob neben der Anzahl der Parameter auch deren jeweiliger Typ der Funktionsdefinition entspricht. Ein Bezeichner einer string-Variablen kann z.B. nicht übergeben werden, wenn laut Definition an dieser Stelle ein numerischer Ausdruck erwartet wird.
  • Seite 70: Inline-Funktionen Und -Anweisungen

    C-Control II Station Rekursionen führen ab einer gewissen Tiefe immer zur Überschreitung des Stackbereiches, der für einen Thread reserviert ist. Dann werden Daten anderer Threads ungewollt überschrieben. Das kann von lokalem Fehlverhalten bis zum Absturz des gesamten Systems der C-Control II führen! 8.8.7 Inline-Funktionen und -Anweisungen...
  • Seite 71: Prioritätssteuerung

    8. Die Programmiersprache C2 Beispiel: thread blink2 ports.set(2,-1); sleep 200; ports.set(2,0); sleep 800; 8.9.2 main-Threads Ein Thread, dessen Bezeichner nicht “main” ist, hat zum Programmstart die Priorität 0, d.h. er befindet sich im Stillstand, seine Anweisungen werden nicht ausgeführt. Jedes Modul kann einen main-Thread enthalten, also einen Thread mit dem Bezeichner “main”.
  • Seite 72 C-Control II Station Komplexere Anweisungen sind entsprechend umfangreicher. Das System kann einen Thread durchaus auch innerhalb einer Anweisung unterbrechen, z.B. vor der Addition im obigen Beispiel. Da jeder Thread mit seinem eigenen Stack arbeitet, gibt es dabei keine Probleme. Zur Änderung der Priorität eines Threads gibt es in C2 verschiedene Schlüsselworte.
  • Seite 73 8. Die Programmiersprache C2 Form 2: halt; Angehaltene Threads können nur durch andere Threads wieder gestartet werden. • resume Die resume Anweisung setzt die Priorität eines Threads auf den Wert vor der letzten run- oder halt-Anweisung in Bezug auf diesen Thread. Es gibt ebenfalls zwei Formen. Form 1 bezieht sich auf den angegebenen Thread, Form 2 auf den aktuell laufenden.
  • Seite 74: Warten Auf Ereignisse

    C-Control II Station 8.9.4 Warten auf Ereignisse In bestimmten Situationen soll ein Thread auf das Eintreten eines Ereignisses warten und in der Wartephase möglichst wenig Rechenkapazität belegen. Dafür dient in C2 die wait-Anweisung. Die wait-Anweisung prüft den Wert eines angegebenen numerischen Ausdrucks. Ist der Wert gleich 0, dann gibt der aktuelle Thread die Programmausführung, unabhängig von...
  • Seite 75 8. Die Programmiersprache C2 Thread die Programmausführung sofort an den nächsten Thread ab (vgl.yield ). 8.9.6 Synchronisation In Computersystemen mit parallelen Prozessen kann es zu folgenden problematischen Situationen kommen: • Aliasing von Speicherzugriffen • Konkurrenz mehrerer Prozesse um eine Ressource Konkurrenz um eine Ressource entsteht beispielsweise, wenn zwei Threads gleichzeitig Daten über dieselbe serielle Schnittstelle senden wollen.
  • Seite 76 C-Control II Station check (a, b) führt etwa zu folgender Befehlskette: 1. a auf den Stack laden 2. b auf den Stack laden 3. Funktion check aufrufen Wie in 8.9.3 ebenfalls erläutert wurde, kann diese Befehlskette jederzeit von einem Threadwechsel unterbrochen werden, also auch zwischen dem 1. und 2. Befehl im obigen Beispiel.
  • Seite 77 8. Die Programmiersprache C2 zweiter Thread, der ebenfalls auf dieses Freizeichen wartet, erhält nun Rechenzeit. Das Signal steht noch auf “frei” , obwohl schon ein anderer Thread den kritischen Bereich betreten hat! Zur Lösung des Synchronisationsproblems stellt die virtuelle Maschine der C-Control II eine atomare Maschinenoperation zur Verfügung, auf die in C2 über das Schlüsselwort capture zugegriffen werden kann.
  • Seite 78 C-Control II Station Das Setzen des “Freisignals” erfolgt durch das Schlüsselwort. Da sich ein Thread merkt, welche byte-Variable er besetzt hat, steht die release Anweisung ohne weitere Angaben. release; Ein Thread sollte release sofort aufrufen, wenn er den synchronisierten Bereich verläßt.
  • Seite 79 8. Die Programmiersprache C2 float a, b; // Messwerte byte flag; // Synchronisationsvariable thread measure capture flag; a = get_channel_a(); b = get_channel_b(); release; //... thread watch capture flag; check(a, b); release; // ... 2.) Synchronisation von Ressourcenzugriffen durch implizites capture in einer Funktion function send ( byte buf[], int length ) capture;...
  • Seite 80: Anweisungen Zur Ablaufsteuerung

    C-Control II Station 8.10 Anweisungen zur Ablaufsteuerung Unentbehrlicher Teil einer strukturierten Programmiersprache sind Anweisungen zur Steuerung des Programmflusses. Erst dadurch können Algorithmen realisiert werden, die über die loße rechnerische Verknüpfung von Werten hinausgehen. 8.10.1 if…else…-Bedingte Ausführung Mit der if-Anweisung wird die Abarbeitung von Programmabschnitten an eine Bedingung geknüpft.
  • Seite 81 8. Die Programmiersprache C2 fx1(); else fx2(); // fx2 wird aufgerufen 8.10.2 loop -Endlosschleife Programmschleifen ermöglichen das wiederholte Ausführen von Anweisungen. Die einfachste Form ist die bedingungslose Endlosschleife. Dafür kann in C2 das Schlüsselwort loop verwendet werden. Nach diesem steht eine einzelne Anweisung oder ein Anweisungsblock.
  • Seite 82 C-Control II Station Nach dem Schlüsselwort do folgt die Anweisung bzw. der Anweisungsblock, danach das Schlüsselwort while und abschließend der numerische Bedingungsausdruck. do Anweisung while Ausdruck; //... while Ausdruck; 8.10.5 for -Schleife Die for Schleife führt eine Anweisung oder einen Anweisungsblock solange aus, bis eine Schleifenvariable eine Vergleichsbedigung nicht mehr erfüllt.
  • Seite 83: Vorzeitiger Abbruch

    8. Die Programmiersprache C2 for i = 0 ... <10 // 10 Läufe //... for i = 9 ... >=0 step -1 // 10 Läufe rückwärts //... 8.10.6 Vorzeitiger Abbruch Wird eine loop-, while-, do- oder for Schleife mit einem Anweisungsblock verwendet, kann es erwünscht sein, die Schleife unter bestimmten Sonderbedingungen vorzeitig abzubrechen -also ohne eventuelle weitere Anweisungen des Blocks auszuführen und ohne die Schleifenabbruchbedingung nochmals zu testen.
  • Seite 84: Programmende

    C-Control II Station z.B. for i = 0 ... 9999 if not (i mod 13) continue; //... Im obigen Beispiel führen alle i, die ohne Rest durch 13 teilbar sind, zu einer Auslassung der Anweisungen, die ab //…folgen würden. 8.10.8 Programmende Die gesamte Programmabarbeitung der virtuellen Maschine kann durch die quit- Anweisung beendet werden.
  • Seite 85: Softwareentwicklung

    9 Softwareentwicklung 9.1 Installation und Start der Integrierten Entwicklungsumgebung Mit der C-Control II Station haben Sie eine Utility-CD erhalten. Auf dieser CD befindet sich u.a. die Integrierte Entwicklungsumgebung, die Sie zur Programmierung der Unit benötigen. Die Integrierte Entwicklungsumgebung läuft unter den 32Bit-Betriebssystemen Microsoft Windows95/98/NT/2000.
  • Seite 86: Richtlinien Zur Quelltextformatierung

    C-Control II Station 9.3 Richtlinien zur Quelltextformatierung 9.3.1 Vorteile der einheitlichen Formatierung Für die syntaktische und funktionale Korrektheit eines Programms ist die Formatierung eines Quelltextes ohne Bedeutung. Im Interesse der Übersichtlichkeit und der Verständlichkeit sollten Quelltexte jedoch auch “optisch ”korrekt sein. Ein stilvoll und diszipliniert gestalteter Quelltext nach einheitlichen Richtlinien ist auch nach längerer Zeit und auch für andere...
  • Seite 87 9. Softwareentwicklung 9.3.3 Bezeichner 1. Bezeichner sollen selbstbeschreibend sein. Abkürzungen sind möglich, solange die Bedeutung im Kontext ohne zusätzliche Kommentare erkennbar leibt. Zum Beispiel “getMaxTemp” statt “getMaximumTemperature” ist zulässig. Nur primitive Funktionen, temporäre Variablen zur Speicherung von Zwischenergebnissen, Indizes oder Schleifenvariablen, dürfen aus einzelnen Buchstaben oder kurzen Zeichen- kombinationen bestehen.
  • Seite 88: Kombinationen Mit Schlüsselworten Zur Ablaufsteuerung

    C-Control II Station 5. Erstreckt sich eine Definition über mehrere Zeilen, so sind die zweite und weitere Zeilen linksbündig unter dem Typen des ersten Parameters fortzusetzen, z.B. 9.3.6 Threads 1. Die Definitionszeilen sind wie bei Funktionen durch “//-----”-Kommentarzeilen gerahmt. 2. Threads stehen stets am Ende eines Modulquelltextes.
  • Seite 89: Simulation Und Debugging

    9. Softwareentwicklung alle syntaktischen Fehler beseitigt haben, kann Ihr Programm simuliert oder in die C-Control II übertragen werden. 9.5 Simulation und Debugging 9.5.1 Test und Fehlersuche Nachdem ein Programm syntaktisch korrekt compiliert wurde, muß die funktionelle Fehlerfreiheit überprüft werden. Es ist nicht ratsam, die C-Control II Unit mit einem Programm zu laden, dessen prinzipielle Funktion nicht im Simulator der Integrierten Entwicklungsumgebung getestet wurde.
  • Seite 90: Bedienung

    C-Control II Station 9.5.2 Simulationsumfang Kern des Simulators ist dieselbe virtuelle Maschine, die auch im Betriebssystem der C-Control II arbeitet. Die Ausführung aller Speicher-, Steuer-, und Rechenoperationen ist absolut identisch. Somit kann die logische und algorithmische Korrektheit eines Programmes getestet und sichergestellt werden.
  • Seite 91: Module

    10. Module 10 Module Dieses Kapitel gibt einen Überblick über alle Bibliotheksmodule zum Zugriff auf die Systemressourcen der C-Control II Station. SYSTEMMODULE: Datei Inhalt can.c2 CAN-Bus constant.c2 allgemeine Konstanten hwcom.c2 1. serielle Schnittstelle (Hardwareschnittstelle) i2c.c2 C-Bus lcd.c2 Mini-LCD der Unit lpt.c2...
  • Seite 92: Can.c2

    _ _ p p l l m m . . c c 2 2 Für den Betrieb des Powerline Modems mit PLRS Die Utilities werden, je nach Anwendung, separat installiert und bieten dem Programmierer schnellen Zugriff auf das Zubehör zur C-Control II Station. 10.1 can.c2 10.1.1 Initialisierung...
  • Seite 93: Test Auf Übertragungsfehler

    10. Module Kanäle, für den 15. Kanal (channel 14) gilt zusätzlich die specialMask die vom Mikrocontroller intern mit der globalMask UND-verknüpft wird. Die Akzeptanzmaske bestimmt, welche Bits der Message-ID einer eingehenden Nachricht mit der Empfangs-ID eines CAN-Kanals zu vergleichen sind, um zu entscheiden, ob eine eingehenden Nachricht für diesen Kanal bestimmt ist und zu empfangen ist.
  • Seite 94: Nachricht Senden

    C-Control II Station möglich. Zum Verständnis der einzelnen Fehlercodes empfehlen wir dringend die Lektüre eines Fachbuches zum Thema CAN-Bus sowie der Systemdokumentation zum C164CI- Mikrocontroller. Rückgabe der Code-Konstante: ERROR_STUFF (1) ERROR_FORM (2) ERROR_ACK (3) ERROR_BIT1 (4) ERROR_BIT0 (5) 10.1.4 Nachricht senden...
  • Seite 95: Zählen Der "Remote-Request "-Anfragen

    10. Module Pufferlänge, max. 8 length 10.1.6 Zählen der “Remote-Request ”-Anfragen function rtrcount ( int channel ) returns byte Die Funktion rtrcount liefert nach Veröffentlichung einer Nachricht einen Zählerwert, wie oft diese Nachricht von anderen Busteilnehmern abgefragt wurde. Der Zähler ist jedoch auf den Wertebereich eines Bytes beschränkt.
  • Seite 96: Test Auf Empfang

    C-Control II Station Antwort des Busteilnehmers nicht empfangen werden. 10.1.9 Test auf Empfang function rxd ( int channel ) returns int Die Funktion rxd testet, ob eine neue Nachricht auf einem Empfangskanal channel verfügbar ist. Wenn das so ist, gibt sie den Wert -1 zurück, anderenfalls 0.
  • Seite 97: Einstellen Der Übertragungsgeschwindigkeit

    10. Module Die Funktion init initialisiert eine serielle Schnittstelle und deaktiviert eventuell konkurrierende Portfunktionen. 10.2.2 Einstellen der Übertragungsgeschwindigkeit function setspeed ( int speed ) Für jede der beiden Schnittstellen kann die Übertragungsgeschwindigkeit eingestellt werden. Die hwcom-Schnittstelle kann dabei bis 115.200 Baud arbeiten, swcom nur bis 9.600 Baud.
  • Seite 98: Verwerfen Von Daten

    C-Control II Station 10.2.4 Verwerfen von Daten function flush () Applikationen, die serielle Daten in Rahmenform empfangen, können unter bestimmten Bedingungen unvollständige Rahmen im Empfangspuffer enthalten. Dann ist es erforderlich, alle Bytes im Empfangspuffer zu verwerfen, um auf den Beginn des nächsten Rahmens zu synchronisieren.
  • Seite 99: Test Auf Sendebereitschaft

    10. Module Referenz auf eine Bytepuffervariable Länge des Puffers length Timeout in Millisekunden timeout 10.2.8 Test auf Sendebereitschaft function ready () returns int Die Funktion ready prüft, ob eine serielle Schnittstelle bereit für eine neue Übertragung ist. Rückgabe -1 wenn bereit, sonst 0 10.2.9 Senden eines Bytes function put ( byte c ) Die Funktion put sendet ein einzelnes Byte über eine serielle Schnittstelle.
  • Seite 100: I2C.c2

    10.3 i2c.c2 Über die Funktionen des Moduls i2c.c2 kann ein Programm auf Geräte zugreifen, die am C-Bus der C-Control II Station angeschlossen sind. Eine typische Anwendung ist der Anschluß serieller EEPROMs in einer Speichereinheit zur Aufzeichnung von Daten. Der C-Bus der C-Control II ist als Single-Master-Bus implementiert. D.h. die Taktsignale, die Start-und Stopbedingungen werden stets von der C-Control erzeugt.
  • Seite 101: Schreiben Eines Bytes

    10. Module 10.3.4 Schreiben eines Bytes function write ( byte c ) returns int Die Funktion write sendet ein Byte auf dem I C-Bus. Das Ergebnis der Funktion ist -1, wenn das angesprochene IC mit einem Acknowledge geantwortet hat, anderenfalls 0. 10.3.5 Lesen eines Bytes mit Acknowledge function read () returns byte Die Funktion read liest ein Byte über den I...
  • Seite 102: Lpt.c2

    C-Control II Station 10.5 lpt.c2 Die Digitalports der C-Control II Unit können u.a. als parallele Druckerschnittstelle benutzt werden. Bei der Station ist diese Option nicht verfügbar, die Ports werden intern benutzt. 10.6 math.c2 10.6.1 Mathematische Standardfunktionen Die Definitionen der Standardfunktionen haben die Form function fx ( float x ) returns float 10.6.2 Potenzieren...
  • Seite 103: Mem.c2

    10. Module 10.7 mem.c2 Die Funktionen des Moduls mem.c2 ermöglichen verschiedene Manipulationen an Bytepuffervariablen. Hauptanwendungen dieser Funktionen sind: · der Aufbau von Datenrahmen vor einer Datenübertragung • das Lesen von Daten aus empfangenen Datenrahmen • die Zeilenformatierung vor einer Ausgabe, z.B. auf einem Drucker 10.7.1 Füllen mit einem Wert function fill ( byte buf[], int length, byte c ) Die Funktion fill füllt eine angegebene Bytepuffervariable mit einer Anzahl gleicher...
  • Seite 104: Lesen Von Zahlenwerten Aus Einem Bytepuffer

    C-Control II Station Beim Aufbau von Datenpuffern vor einer Übertragung müssen oft Zahlenwerte gespeichert werden, die mehr Platz als je ein einzelnes Byte benötigen: Integer-, Long-, oder Fließkommawerte. Dazu können folgende Funktionen des Moduls mem.c2 benutzt werden: Für alle drei Funktionen ist :...
  • Seite 105: Plm.c2

    10. Module 10.8 plm.c2 10.8.1 Setzen der Zeitbasis function settimebase ( int channel, int timebase ) Es können acht veschiedene Zeitbasiswerte eingestellt werden. Das Einstellen erfolgt mit: PLM-Kanal (0, 1 ,2) channel Zeitbasis timebase Die übergebenen Zahlenwerte ergeben folgende Zeitbasen: (Beachten Sie bitte, daß...
  • Seite 106: Einstellen Der Periodenlänge

    C-Control II Station 10.8.3 Einstellen der Periodenlänge function setperiod ( int channel, int length ) Das Einstellen der Periodenlänge erfolgt mit: PLM-Kanal (0, 1, 2) Channel Periodenlänge, N Ticks length Beachten Sie bitte, daß channel 0 und channel 1 eine gemeinsame Periodenlänge haben.
  • Seite 107: Ports.c2

    10. Module Periodenlängen unter Berücksichtigung der aktuellen Zeitbasis übernimmt diese Funktion. Der Parameter tone bestimmt einen Ton im Bereich der Töne a bis c ””. Ein Ton mit der Frequenz von 440Hz ist der Kammerton a -der Ton einer Stimmgabel. Ein negativer tone Wert schaltet den Ton ab und legt den PLM-Port auf konstanten Lowpegel.
  • Seite 108: Setzen Von Digitalports

    C-Control II Station 10.9.1 Abfrage von Digitalports function get ( int number ) returns int function getn ( int number ) returns int function getb ( int number ) returns int Digitalports können einzeln, in Vierergruppen (Nibbles), byteweise und im Ganzen als ein 16bit-Integer (Word) abgefragt werden.
  • Seite 109: Umschalten Und Pulsen

    10. Module beim Lesen einzeln, als Nibble oder als Byte erfolgen. Parameter der set…-Funktionen sind die Portnummer und der zu setzende Portzustand als Bitmaske. Höherwertige Bits, die in einer Ausgabe nicht darstellbar sind, werden ignoriert; z.B. das Setzen eines Nibbleports auf den Wert 17 (0b10001) ist nicht möglich und wird als Setzen auf 1 (0b00001) interpretiert.
  • Seite 110: Pulszählung

    C-Control II Station 10.9.5 Pulszählung getcount ( int number ) returns long Die vier Digitalports P0…P3 (das sind die Einzelports 8 bis 11) sind interruptsensibel. Sie werden vom Betriebssystem beim Reset so eingerichtet, daß sie eingehende Inpulse zählen (bei High-Low-Flanke am Digitalport). Diese vier Zählerstände können über die Funktion getcount abgefragt werden.
  • Seite 111: Str.c2

    10. Module 10.10 str.c2 Die C-Control unterstützt einfache Stringoperationen bereits auf Ebene der virtuellen Maschine. Der Zugriff auf diese Operationen erfolgt über Funktionen des Moduls str.c2. 10.10.1 String leeren function clear ( string s ) Die Funktion clear leert den als Referenz übergebenen String, seine Länge wird auf 0 gesetzt.
  • Seite 112: Formatierte Ausgabe In Einen String

    C-Control II Station 10.10.5 Formatierte Ausgabe in einen String function putintf ( string s, int value, int format ) C2 unterstützt einige einfache Formatierungen beim Anhängen von Zahlenwerten an Strings.Das Format wird durch einen Integerparameter bestimmt. Die Funktion putintf hängt einen formatierten Integer an einen String an. Der Parameter format legt die Anzahl der Ausgabestellen fest.
  • Seite 113: Ausgabe Einer Bitmaske

    10. Module z.B. putfloatf(s, 1, 3); hängt “1.000 ”an s an. Insgesamt werden maximal 8 Ziffern (vor und nach dem Dezimalpunkt) ausgegeben. 10.10.6 Ausgabe einer Bitmaske function putmask ( string s, int value, int c1, int c0 ) Die Funktion putmask gibt einen Integerwert (0...255)als 8 Bitzeichen in einen String aus. Das Zeichen für Highbits wird durch den Parameter c1 bestimmt (ASCII-Code), c0 legt das Lowzeichen fest.
  • Seite 114: Status Der Dcf77-Synchronisation

    C-Control II Station Die C-Control II Unit verfügt über eine interne Echtzeituhr, die sich durch den Anschluß einer DCF77-Aktivantenne sekundengenau synchronisieren kann. Darüber hinaus kann die Uhrzeit auch im C2-Programm gestellt werden, und zwar durch Aufruf der Funktion settime Die Teilwerte der aktuellen Uhrzeit (Stunde, Minute, Sekunde) können durch weitere Funktionen abgefragt werden.
  • Seite 115 10. Module Synchronisationen wiedergibt. Das Rücksetzen des Zählers erfolgt mit jeder korrekten Synchronisation. Ist dann z.B. inner- halb von 30 Minuten keine neue Synchronisation möglich, steht der Zähler auf 30. Bei dauerhaftem Synchronisationsausfall wird der Zähler auf dem Wert 32767 festgehalten. Auch beim Reset wird der Zähler mit diesem Wert initialisiert.
  • Seite 116: Aufruf Von Systemfunktionen

    C-Control II Station 10.11.6 Aufruf von Systemfunktionen function call ( int segment, int offset ) function jump ( int segment, int offset ) Aus C2-Programmen heraus können beliebige Funktionen des Betriebssystems oder anwenderdefinierte Assembler-/C-Routinen aufgerufen werden. Dazu gibt es im Modul system.c2 diese Funktion.
  • Seite 117: Wb.c2

    10. Module Die Parameter segment und offset geben die Speicheradresse der Interruptroutine im Gesamtadreßraum des Mikrocontrollers an. Die Speicheradresse entnehmen Sie bitte den Ausgaben Ihrer C-/Assembler-Entwicklungstools. Lesen Sie dazu die Dokumentation zu diesen Tools. Wenn Sie eine C-Funktion als Interruptroutine schreiben möchten, muß sie im Stil void fx ( void ) definiert sein, also ohne Parameter und Rückgabewert.
  • Seite 118: Datenübertragung

    C-Control II Station 10.12.1 Initialisierung Das Modul wb.c2 ist der Treiber für das 2W-Bus Standard Modem. Die Initialisierung der 2W-Bus-Schnittstelle erfolgt mit der Funktion function init () Eventuell konkurrierende Portfunktionen werden deaktiviert. 10.12.2 Abfrage auf Empfang des Antwortrahmens Die Funktion...
  • Seite 119: Station_Io.c2

    10. Module Erscheinen der C-Control II Unit. Der Text der Anleitungen enthält daher keine expliziten Hinweise auf C-Control II. 10.13 constant.c2 und vmcodes.c2 Das Modul constant enthält einige allgemeine Konstanten, die im Quelltext selbst betrachtet werden können. Das Modul vmcodes listet alle Operationscodes der virtuellen Maschine auf. Eine Dokumentation der Codes ist nicht Bestandteil dieser Anleitung und ist zur Anwendungs- programmierung der C-Control II Unit nicht erforderlich.
  • Seite 120 C-Control II Station 10.14.3 Relais function RELon (byte LED) REL kennzeichnet das angesprochene Relais (1,2) function RELoff (byte LED) REL kennzeichnet das angesprochene Relais (1,2) 10.14.4 Outputports PO function PORTset (byte outport,byte state) Diese Funktion setzt die Outputports PO 0…PO 4.
  • Seite 121: Station_Lcd.c2

    10. Module Um ihnen das Programmieren zu erleichtern, ist die Funktion function getcode() returns long implementiert. Sie ermöglicht die Eingabe einer 9-stelligen Zahl und gibt ihren Wert nach Abschluss der Eingabe (Enter) zurück. Eine Eingabekorrektur (Clear) ist ebenfalls möglich. 10.15 station_lcd.c2 Dieses Modul ist ein Erweiterungsmodul und wird nicht zusammen mit der IDE installiert.
  • Seite 122: Vorformatierte Ausgaben

    C-Control II Station 10.15.3 Textausgabe Ausgabe eines Strings function print ( string s ) Displayinhalt eine Position links schieben function scrollleft () Displayinhalt eine Position rechts schieben function scrollright () 10.15.4 Vorformatierte Ausgaben Anzeige der Systemzeit function showtime () Anzeige des Systemdatums...
  • Seite 123: Station_Plm.c2

    10. Module 10.16.5 IR-RMT (RC5 MODE ON) function rc5_mode (byte address) 10.16.6 IR-RMT (REC80 MODE ON) function rec80_mode (byte address) 10.16.7 IR-RMT (Lesen von IR-Kommando und IR-Adresse) function get_ir_data (byte address) ein empfangenes IR-Kommando und die Adresse ist in der Variablen data1 und data0 im Modul verfügbar.
  • Seite 124: Initialisierung Des Modems

    C-Control II Station 10.17.1 Initialisierung des Modems function init (byte tx) 10.17.2 Port setzen function PORTset (byte remote_io, byte tx, byte outport, byte state) 10.17.3 Byteport setzen function PORTsetb (byte remote_io, byte tx, byte outport, byte state) outport und state spiegeln hier den Zustand aller Ports, die manipuliert werden, also z.B.
  • Seite 125 10. Module (byte remote_io, byte tx, byte outport) returns byte Die Funktion gibt den Portzustand als 0 oder 1 zurück. 10.17.7 Byteport lesen function PORTreadb (byte remote_io, byte tx) returns byte Die Funktion gibt den Zustand aller Ports in einem Byte zurück. z .B.
  • Seite 126: Systemprogrammierung

    C-Control II Station 11 Systemprogrammierung 11.1.1 TASKING C/C++Tools Das Betriebssystem der C-Control II Unit wurde mit der Vollversion der TASKING C/C++ Tools entwickelt. Eine Demoversion dieser Tools finden Sie auf der Utility CD. Diese Tools enthalten u.a. eine Entwicklungsumgebung mit Editor und Projekt-verwaltung, einen integrierten C/C++-Compiler, einen Assembler und Linker.
  • Seite 127: Anhang

    12. Anhang 12 Anhang 12.1 Technische Daten Hinweis: detailliertere Informationen finden Sie in den PDF-Dateien der IC-Hersteller auf der C-Control -Utility CD. 12.1.1 Mechanik äußere Abmessungen ca.157mm x 90mm x 70 mm Masse ca. 600g 12.1.2 Umgebungsbedingungen - Bereich der zulässigen Umgebungstemperatur 0 °C…40 °C - Bereich der zulässigen relativen Umgebungsluftfeuchte 20%…60% 12.1.3 Versorgungsspannung - Bereich der zulässigen Versorgungsspannung 12V…16V...

Inhaltsverzeichnis