Herunterladen Inhalt Inhalt Diese Seite drucken

Conrad C-Control II Unit Handbuch

Kompakter steuerungscomputer
Inhaltsverzeichnis

Werbung

C-Control II Unit
Handbuch
www.c-control.de

Werbung

Inhaltsverzeichnis
loading

Inhaltszusammenfassung für Conrad C-Control II Unit

  • Seite 1 C-Control II Unit Handbuch www.c-control.de...
  • Seite 2 C-Control II Unit...
  • Seite 3 Sehr geehrte Kundin, sehr geehrter Kunde, wir danken Ihnen für Ihr Interesse und Ihr Vertrauen in unsere C-Control II Unit. 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...
  • Seite 4 C-Control II Unit 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 Wichtige Hinweise Lesen dieser Anleitung Handhabung Bestimmungsgemäße Verwendung Gewährleistung und Haftung Service Hardware Gehäuse Schaltungstechnik - intern 3.2.1 Mikrocontroller 3.2.2 Speicher 3.2.3 Referenzspannungserzeugung 3.2.4 Takterzeugung 3.2.5 Schaltungstechnik - extern 3.3.1 Anschlußbelegung - Überblick 3.3.2 Spannungsversorgung 3.3.3 LCD-Kontrast (LCD ADJ) 3.3.4 Reset (RSTIN, RSTOUT)
  • Seite 6 C-Control II Unit Hostmodus 4.3.1 Systeminitialisierung und automatisches Starten von Anwenderprogrammen 37 4.3.2 Download von Anwenderprogrammen und anderen Host-Befehlen Virtuelle Maschine 4.4.1 Grundlagen 4.4.2 Binärcodeinterpreter 4.4.3 Multithreading 4.4.4 Programm- und Konstantenspeicher 4.4.5 Datenspeicher 4.4.6 Stapelprozessor 4.4.7 Systemschnittstelle Die Programmiersprache C2...
  • Seite 7 Inhalt 5.6.4 Unbenannte Stringkonstanten 5.6.5 Definition von benannten Konstanten 5.6.6 Benannte konstante Arrays Operatoren 5.7.1 Rangfolge 5.7.2 Arithmethische Operatoren 5.7.3 Bitschiebeoperatoren 5.7.4 Vergleichsoperatoren 5.7.5 Logische Operatoren und Bitmanipulationen 5.7.6 Stringverkettung mit dem Operator + Funktionen 5.8.1 Funktionskopf 5.8.2 Parameter und lokale Variablen 5.8.3 Ende einer Funktion und Ergebnisrückgabe 5.8.4...
  • Seite 8 C-Control II Unit Softwareentwicklung Installation und Start der Integrierten Entwicklungsumgebung Quelltexte bearbeiten Richtlinien zur Quelltextformatierung 6.3.1 Vorteile der einheitlichen Formatierung 6.3.2 Kommentare 6.3.3 Bezeichner 6.3.4 Ausdrücke 6.3.5 Funktionsdefinitionen 6.3.6 Threads 6.3.7 Anweisungsblöcke 6.3.8 Kombinationen mit Schlüsselworten zur Ablaufsteuerung Automatischer Compiler Simulation und Debugging 6.5.1...
  • Seite 9 Inhalt 7.2.5 Test auf Empfang 7.2.6 Lesen eines empfangenen Bytes 7.2.7 Empfang von Datenrahmen 7.2.8 Test auf Sendebereitschaft 7.2.9 Senden eines Bytes 7.2.10 Senden von Datenrahmen i2c.c2 7.3.1 Initialisierung 7.3.2 Start der Übertragung 7.3.3 Senden der Stopbedingung 7.3.4 Schreiben eines Bytes 7.3.5 Lesen eines Bytes mit Acknowledge 7.3.6...
  • Seite 10 C-Control II Unit mem.c2 7.7.1 Füllen mit einem Wert 7.7.2 Kopieren 7.7.3 Speichern von Zahlenwerten in einem Bytepuffer 7.7.4 Lesen von Zahlenwerten aus einem Bytepuffer plm.c2 7.8.1 Setzen der Zeitbasis 7.8.2 Setzen des Portmodus 7.8.3 Einstellen der Periodenlänge 7.8.4 PLM-Ausgabe 7.8.5...
  • Seite 11 Inhalt 7.12.2 Abfrage auf Empfang des Antwortrahmens 7.12.3 Datenübertragung 7.13 constant.c2 und vmcodes.c2 Systemprogrammierung 8.1.1 TASKING C/C++ Tools 8.1.2 Ergänzungen der virtuellen Maschine und Änderungen am Betriebssystem 127 8.1.3 Implementierung eines eigenen Betriebssystem Anhang Technische Daten 9.1.1 Mechanik 9.1.2 Umgebungsbedingungen 9.1.3 Versorgungsspannung 9.1.4...
  • Seite 12 C-Control II Unit...
  • Seite 13: Einleitung

    1. Einleitung 1 Einleitung C-Control II ist ein kompakter Steuerungscomputer in einem kunstharzvergossenen Kunststoffgehäuse. Das System basiert auf einem Mikrocontroller des deutschen HiTech- Unternehmens Infineon Technologies. Dieser Mikrocontroller wird z.B. in großen Stückzahlen in einigen aktuellen Fahrzeugmodellen der deutschen Automobilindustrie ein- gesetzt.
  • Seite 14 C-Control II Unit Teile dieser Anleitung können ohne Vorankündigung ungültig werden. Das ist bedingt durch eventuell notwendige technische Änderungen zur Verbesserung des Produktes oder zur Anpassung an die aktuelle Verfügbarkeit von Bauelementen. Wir werden die dann notwendigen Informationen im Internet unter www.c-control.de bereitstellen Wir wünschen Ihnen viel Freude mit C-Control II.
  • Seite 15: Wichtige Hinweise

    2 Wichtige Hinweise 2.1 Lesen dieser Anleitung Bitte lesen Sie diese Anleitung, bevor Sie die C-Control II Unit in Betrieb nehmen. Während einige Kapitel nur für das Verständnis der tieferen Zusammenhänge von Interesse sind, ent- halten andere wichtige Informationen, deren Nichtbeachtung zu Fehlfunktionen oder Beschädigungen führen kann.
  • Seite 16: Bestimmungsgemäße Verwendung

    C-Control II Unit 2.3 Bestimmungsgemäße Verwendung Die C-Control II Unit ist ein elektronisches Bauelement im Sinne eines integrierten Schaltkreises. Die C-Control II Unit dient zur programmierbaren Ansteuerung elektrischer und elektronischer Geräte. Der Aufbau und Betrieb dieser Geräte muß konform zu gel- tenden europäischen Zulassungsrichtlinien (CE) erfolgen.
  • Seite 17: Gewährleistung Und Haftung

    Software in jedem Fall unterbrechungs- und fehlerfrei arbeitet. Conrad Electronic übernimmt keine Haftung für Schäden, die unmittelbar durch oder in Folge der Anwendung der C-Control II Unit entstehen. Der Einsatz der C-Control II Unit in Systemen, die direkt oder indirekt medizinischen, gesundheits- oder lebenssichernden Zwecken dienen, ist nicht zulässig.
  • Seite 18: Service

    C-Control II Unit 2.5 Service Conrad Electronic stellt Ihnen ein Team von erfahrenen Servicemitarbeitern zur Seite. Sollten Sie Fragen zur C-Control II Unit haben, erreichen Sie unsere Technische Kundenbetreuung telefonisch, per Brief, Fax oder E-Mail. Telefon: 0180 / 53 12 116...
  • Seite 19: Hardware

    In diesem Kapitel erfahren Sie die wichtigsten Grundlagen zur Hardware der C-Control II Unit. Auf den hinteren Umschlagseiten finden Sie den vollständigen Schaltplan der C-Control II Unit. Er dokumentiert den inneren Aufbau und die Funktionsweise der Unit. Die Schaltung wurde nach Applikationsvorschlägen aus den Datenblättern der verwendeten ICs entwickelt.
  • Seite 20: Speicher

    Funktionsaufrufen (siehe Kapitel 7). 3.2.2 Speicher In der C-Control II Unit sind 512kB FLASH-EEPROM (8 Segmente) und 64kB SRAM (1 Segment) an den Mikrocontroller angeschlossen. Im Schaltplan erkennen Sie die Dekodierung der Adreßbussignale und die Anschaltung der Speicher-ICs an den Controller.
  • Seite 21: Takterzeugung

    PLL-Schaltung daraus den 20MHz-Systemtakt. 3.2.5 LCD Das interne LCD der C-Control II Unit wurde speziell nach den Vorgaben von Conrad Electronic entwickelt. Es stellt 2 Zeilen zu je 8 Zeichen dar. Jedes Zeichen besteht aus einer monochromen Matrix von 5x7 Punkten. Ein blinkender Cursor unter einem der Zeichen kann die aktuelle Ausgabeposition anzeigen.
  • Seite 22: Schaltungstechnik - Extern

    P1L.1 P1L.0 ADC 0 ADC 1 C-Control II ADC 2 ADC 3 RSTOUT ADC 4 ADC 5 RSTIN Conrad Electronic B/N 95 05 70 ADC 6 ADC 7 BOOT HOST Draufsicht I2C SCL I2C SDA CAN TxD CAN RxD n.c.
  • Seite 23 3 Hardware Allgemein: GND … ground (Masse, Bezugspotential) n.c. … not connected (nicht belegt, frei) … serielle Schnittstelle (hwcom) - Sendeleitung, NRZ-Signal … serielle Schnittstelle (hwcom) - Empfangsleitung, NRZ-Signal … serielle Schnittstelle (hwcom) - Request To Send, NRZ-Signal … serielle Schnittstelle (hwcom) - Clear To Send, NRZ-Signal 5 Volt …...
  • Seite 24: Spannungsversorgung

    470µF) zu stützen. In die Spannungszuleitung sollte in Reihenschaltung, nahe an der Unit, eine Drosselspule eingefügt werden, um die leitungsgebundene Störaussendung zu unter- drücken. Wegen der relativ hohen Stromaufnahme der C-Control II Unit im Bereich von 50…100mA ist sie für den Einsatz in dauerhaft batteriebetriebenen Geräten nicht zu emp- fehlen.
  • Seite 25: Reset (Rstin, Rstout)

    (“Brown-Out”-Effekt). Dadurch unterbricht der Mikrocontroller seine Arbeit und erhält keinen korrekten Power-On-Reset zum Neustart. Sollte in einer Applikation die Gefahr kurzzeitiger Ausfälle der Versorgungsspannung bestehen, muß eine Spannungswächterschaltung an die C-Control II Unit angeschlossen werden, z.B. mit Hilfe des ICs TL 7757: V cc...
  • Seite 26: Non Maskable Interrupt (Nmi)

    Restbedingung eintritt. Es wird vom Betriebssystem erst nach Abschluß einiger Systeminitialisierungen wieder auf “high” gesetzt. Somit können externe Schaltungen rück- gesetzt werden, die erst arbeiten dürfen, wenn C-Control II Unit nach dem Reset ihre Grundeinstellungen vorgenommen hat. Der RSTOUT-Pin sollte ohne interne Kenntnis des Betriebssystems nicht benutzt werden.
  • Seite 27 3 Hardware gen SUB-D Buchse des PCs hergestellt. Der zweite Kanal des Pegelwandlers kann entweder für RTS/CTS-Handshake-Signale für die erste serielle Schnittstelle (hwcom) oder für die Datenleitungen der zweiten seriellen Schnittstelle (swcom) verwendet werden. Die NRZ-Seite des zweiten Kanals finden Sie an den Pins RTS und CTS.
  • Seite 28: Anschlußbelegung), Über Den Schnittstellenadapter Und Das Beiliegende

    Nullmodemkabel mit einem PC verbunden werden. 3.3.7 Digitalports (P1L.0 … P1L.7, P1H.0 … P1H.7) Die C-Control II Unit führt 16 digitale Ports des Mikrocontrollers nach außen: P1L.0 … P1L.7 sowie P1H.0 … P1L.7. An den Digitalports können z.B. Taster mit Pull-Up-Widerständen, Digital-ICs, Optokoppler oder Treiberschaltungen für Relais angeschlossen werden.
  • Seite 29: Sonderfunktionen Der Digitalports

    STROBE (Handshake) der Druckerschnittstelle 3.3.8.1 Zähler und Interruptports Die vier Ports P1H.0 … P1H.3 der C-Control II Unit 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 Systeminterruptroutinen verzweigt. In dieser Routine wird einer von vier Zählerwerten um 1 erhöht.
  • Seite 30 • Kombimodul: 1 x Temperatursensor -23°C...100°C (0.125K Auflösung) und 2 x digital • Infrarotsender/-empfänger (zur Fernsteuerung von Geräten durch C-Control oder zur Fernbedienungen von C-Control-Applikationen durch Infrarot) • Minidisplay (für zusätzliche Anzeigen im Stil des Minidisplays der C-Control II Unit)
  • Seite 31: Druckerschnittstelle

    Daten-, einer Takt- und einer Masseleitung (DATA, CLOCK, GND). Ausgangsseitig befindet sich der 2W-Bus-Anschluß. Die Leitungslänge vom 2W-Bus-Modem zu einem 2W-Bus-Modul kann bis zu 20m betragen. Die Verbindung der C-Control II Unit mit dem 2W-Bus-Modem erfolgt über die Pins P1H.3 (CLOCK) und P1H.4 (DATA) sowie GND.
  • Seite 32: A/D-Ports

    Kapitel 7.5. 3.3.9 A/D-Ports Die C-Control II Unit verfügt über 8 Ports (A/D 0 … A/D 7), 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 33: Plm-Ports

    Weitere Hinweise zu Funkuhrempfang und Frequenzmessung finden Sie in den Kapiteln 7.11 und 7.9.6. 3.3.11 PLM-Ports Die C-Control II Unit verfügt über drei Ports (“Kanäle”) zur Ausgabe pulslängenmodulierter Signale: PLM0, PLM1 und BEEP/PLM2. Diese können zur D/A-Wandlung, zur Ansteuerung von Servomotoren im Modellbau oder zur Ausgabe von Tonfrequenzen benutzt werden.
  • Seite 34: Can-Interface

    C-Control II Unit PLM-Kanals ergibt sich aus 1 / (Zeitbasis * Periodenlänge). Hinweise zur Ausgabe von Tonfrequenzen finden Sie im Kapitel 7.8.5 Die PLM-Ports sind nach ihren elektrischen Eigenschaften Digitalports. Beachten Sie die technischen Randbedingungen für Digitalports (max. Strom). 3.3.12 CAN-Interface CAN - “Controller Area Network”...
  • Seite 35 Ω Ω CAN_L Der Anschluß einer C-Control II Unit erfolgt über die Pins CANH und CANL. Die digitalen Signale an den Pins CAN_Tx und CAN_Rx dürfen nur zu Diagnosezwecken benutzt werden! Einen Überblick über die verfügbaren Funktionen zur Programmierung einer der CAN-...
  • Seite 36: Betriebssystem

    Das Betriebssystem wurde in Assembler und der Programmiersprache C geschrieben und liegt in Binärform auf der CD zur Unit vor. Das Betriebssystem der C-Control II Unit ist bei der Auslieferung in der Regel noch nicht installiert und muß erst im ersten Segment des FLASH-Speichers gespeichert werden (erstes Segment = “Segment 0”).
  • Seite 37: Hostmodus

    Als Antwort sendet der Controller ein Identifizierungsbyte an den PC. Die PC- Software erkennt den konkreten Controller-Typ und überträgt einen Ur-Loader (32 Bytes) an die C-Control II Unit. Dieser Ur-Loader wird vom Controller im internen RAM abgelegt und automatisch gestartet. Der Ur-Loader selbst ist ein minimales Programm, das nichts weiter tut, als die zweite Stufe des Loaders über die serielle Schnittstelle zu empfangen, im RAM...
  • Seite 38: Download Von Anwenderprogrammen Und Anderen Host-Befehlen

    Schnittstelle, die es dann ausführt. Der wichtigste Befehl ist der zum Start des Programm- Download (CMD_LOAD_VMC). Beim Download wird ein kompiliertes Anwender- programm (VMC-Datei) vom PC zur C-Control II Unit übertragen und von dieser im FLASH- Speicher abgelegt. Die Übertragung erfolgt innerhalb der Integrierten Entwicklungs- umgebung, die Sie von der Utility-CD installieren können.
  • Seite 39: Binärcodeinterpreter

    4.4.2 Binärcodeinterpreter Der C2-Compiler erzeugt aus dem Programmquelltext des Anwenderprogramms einen Binärcode. Dieser kann in die C-Control II Unit 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.
  • Seite 40: Multithreading

    System auf die Bereitschaft eines angeschlossenen Druckers wartet. Beim Multithreading der C-Control II Unit kann ein Programm in bis zu 255 Threads (“Fäden”) aufgetrennt werden. Jedem Thread wird vom Kern des Betriebssystems reihum eine Portion Rechenzeit zugeteilt.
  • Seite 41: Programm- Und Konstantenspeicher

    Programms. Mehrere Threads eines Programms teilen sich einen gemeinsamen Adreßraum und können über globale Variablen relativ einfach Daten austauschen. Die Frage, ob die C-Control II Unit Multithreading oder Multitasking betreibt, wenn sie eine Leuchtdiode blinken läßt und parallel Daten von der seriellen Schnittstelle empfängt, ist eher von akademischer als von praktischer Bedeutung.
  • Seite 42: Stapelprozessor

    Register - “SFR”). Die Umwandlung von Systemoperationen der virtuellen Maschine in konkrete Hardwarezugriffe, z.B. auf Register in den SFR, erfolgt im Betriebssystem der C-Control II Unit. Damit sind die virtuelle Maschine selbst sowie die dafür compilierten Anwenderprogramme relativ einfach auf andere Computersysteme portierbar.
  • Seite 43: Die Programmiersprache C2

    5 Die Programmiersprache C2 5.1 Einleitung Die Programmierung der C-Control II Unit 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 44: Syntax - Grundelemente

    C-Control II Unit Ein C2-Projekt kann aus beliebig vielen Modulen bestehen. Ein Modul ist eine einfache ASCII-Textdatei mit der Dateierweiterung “c2”. Der Dateiname - ohne Pfad und Extension - ist der Modulname. Der Name eines Moduls muß ein gültiger C2-Bezeichner sein (siehe unten).
  • Seite 45: Zwischenräume

    5 Programmiersprache C2 eingeleitet werden. Jeglicher Text bis zum Zeilenende, einschließlich der Schrägstriche, wird beim Compilieren überlesen. z.B.: a = 123; // das ist ein Kommentar Mehrzeilige Kommentare können in /* */ -Sequenzen eingebettet werden. z.B.: das alles ist ein Kommentar Verschachtelte mehrzeilige Kommentare sind nicht zulässig.
  • Seite 46: Anweisungen Und Anweisungsblöcke

    C-Control II Unit ohne Zwischenraum der Modulname und ein Punkt vorangestellt werden. 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();...
  • Seite 47: Ausdrücke

    5 Programmiersprache C2 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 48: Schlüsselworte

    C-Control II Unit 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 5.8) werden jedoch immer aufgerufen und ausgeführt, auch wenn deren Parameter und der Rückgabewert konstant sind.
  • Seite 49: Zeichenketten (Strings)

    5 Programmiersprache C2 Rechengenauigkeit gewählt werden. Operationen mit long- und float-Daten führen zu einem wesentlich höherem Bedarf an Speicherplatz und Rechenzeit. Die Ausführungsgeschwindigkeit von float-Operationen ist geringer als die von long- Operationen. Diese wiederum dauern etwas länger als int-Berechnungen. Das Rechnen mit Bytes anstelle von Integerdaten bringt keinen Geschwindigkeitsvorteil, da Bytes vom Stapelprozessor der virtuellen Maschine immer zu Integern erweitert werden.
  • Seite 50: Variablen

    C-Control II Unit Beispiele: type Position int x; int y; type MyType Position pos; 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 ) …...
  • Seite 51: Definition Und Anwendung Von Variablen Zusammengesetzter Datentypen

    5 Programmiersprache C2 z.B. int i; string s; Mehrere Variablen gleichen Typs können in einer gemeinsamen Anweisung definiert wer- den. Dabei sind mehrere Bezeichner jeweils durch ein Komma voneinander getrennt. Typ Name1, Name2, …; z.B. long x,y,z; Definierte Variablen können nachfolgend in Ausdrücken und Zuweisungen verwendet werden.
  • Seite 52: Definition Und Indizierung Von Variablen Arrays

    Ein häufiger Fehler in Anwenderprogrammen ist die Verletzung des zulässigen Indexbereiches. Das kann vom einfachen lokalen Fehlverhalten des Programm bis zum vollständigen Systemabsturz der C-Control II Unit führen. Mehrdimensionale Arrays werden in C2 nicht unterstützt. Eine vergleichbare Funktionalität kann über die Verwendung eindimensionaler Arrays von zusammengesetzten Datentypen hergestellt werden.
  • Seite 53: Initialisierung

    5 Programmiersprache C2 Type Matrix Line line[10]; Matrix m; int x; int i,k; x = m.line[i].row[k]; Diese Syntax ist zwar etwas schreibaufwendiger als ein vergleichbares m[i][k] in ande- ren Programmiersprachen, dafür ist die Lesbarkeit von C2-Programmen an dieser Stelle wesentlich besser. 5.5.4 Initialisierung Der Wert einer Variablen nach der Definition ist zunächst unbestimmt.
  • Seite 54: Globale Und Lokale Variablen

    = 0; t.text = ””; 5.5.5 Globale und lokale Variablen C2 und die virtuelle Maschine der C-Control II Unit unterscheiden zwischen globalen und lokalen Variablen. Globale Variablen werden auf Modulebene neben Threads, Funktionen, benannten Konstanten und zusammengesetzten Datentypen definiert.
  • Seite 55 5 Programmiersprache C2 z.B. function fx () int i; //... Lokale Variablen einer Funktion werden zur Programmlaufzeit auf dem Stack des aktuellen Threads angelegt und existieren nur innerhalb eines Speicherkontextes, d.h. während der Abarbeitung einer Funktion. Sie sind nur innerhalb dieses Kontextes sichtbar und zu- greifbar.
  • Seite 56: Konstanten

    C-Control II Unit z.B. in Modul a.c2 int i; function fx () int i; i = 0; // <- lokales i a.i = 0; // <- globales i 5.6 Konstanten 5.6.1 Benannte und unbenannte Konstanten Unbenannte Konstanten werden sehr häufig verwendet. In der Anweisung a = 1;...
  • Seite 57: Unbenannte Zahlenkonstanten

    5 Programmiersprache C2 5.6.2 Unbenannte Zahlenkonstanten Dezimalzahlen bestehen aus einer Folge der Ziffern 0 … 9 ohne Zwischenräume. Optional kann ein Minus als negatives Vorzeichen vorangestellt werden. Bei dezimalen Fließkommazahlen folgen ohne Zwischenraum ein Dezimalpunkt (kein Komma!) und die Nachkommastellen. Das Exponentialformat wird nicht unterstützt. Hexadezimalzahlen sind Folgen der Hexadezimalziffern 0 …...
  • Seite 58: Unbenannte Stringkonstanten

    C-Control II Unit Sondercodes mit Codezeichen: Codezeichen Bedeutung Vollständige Zeichenkonstante Klingelton (bell) ‘\a’ Backspace (ein Zeichen zurück) ‘\b’ Steuerzeichen “form feed”, ‘\f’ Seitenvorschub auf einem Ausgabegerät Steuerzeichen “new line”, ‘\n’ Zeilenvorschub auf einem Ausgabegerät Steuerzeichen “carriage return”, ‘\r’ Wagenrücklauf auf einem Ausgabegerät Tabulator (Zwischenraumzeichen) ‘\t’...
  • Seite 59: Definition Von Benannten Konstanten

    B und C werden vom Compiler im Konstantenspeicher der C-Control II Unit angelegt, wo sie eine feste Adresse haben. Spezielle Operationscodes der virtuel- len Maschine der C-Control II Unit laden benannte und unbenannte Byte- und Integerkonstanten, wie oben A, immer immediat, d.h. eingebettet in den Operationscode.
  • Seite 60: Benannte Konstante Arrays

    GREETINGS = ”Hallo C2”; const TABLEHEAD = ”Nummer\tZeit\tWert”; Stringkonstanten belegen im Konstantenspeicher der C-Control II Unit nur so viele Bytes, wie sie Zeichen enthalten, zuzüglich eines Bytes zur Speicherung der Stringlänge. Im Gegensatz zu string-Variablen können Stringkonstanten auch mehr als 30 Zeichen ent- halten.
  • Seite 61: Operatoren

    5 Programmiersprache C2 z.B.: const menu[] = ”rice”, ”couscous”, ”potatos”; 5.7 Operatoren 5.7.1 Rangfolge Operatoren teilen numerische Ausdrücke in Teilausdrücke. Dabei werden die Operatoren in einer von ihrem Rang abhängigen Reihenfolge ausgewertet und die Teilausdrücke zur Programmlaufzeit nacheinander berechnet (vgl. Vereinbarung in der Mathematik “Punktrechnung vor Strichrechnung”).
  • Seite 62: Arithmethische Operatoren

    C-Control II Unit 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 bevor- zugen, das Ergebnis bleibt gleich.
  • Seite 63: Vergleichsoperatoren

    5 Programmiersprache C2 5.7.4 Vergleichsoperatoren Vergleichsoperatoren liefern den Wert -1, (minus 1, nicht 1!), falls der Ausdruck wahr ist. Ist der Ausdruck falsch, wird das Vergleichsergebnis 0. Der Wert -1 entspricht hexadezimal dem Integerwert 0xFFFF bzw. dem Longinteger 0xFFFFFFFF. Operator Bedeutung Beispielausdruck Ergebnis...
  • Seite 64 C-Control II Unit Operator Bedeutung Beispielausdruck Ergebnis & 1 & 1 1 and 0 14 & 3 (1<2)&(2<3) (1<2)&(3<2) nand und mit anschließender Bitinvertierung !& 1 !& 1 1 nand 0 14 !& 3 (1<2)!&(2<3) (1<2)!&(3<2) oder 1 | 1...
  • Seite 65: Stringverkettung Mit Dem Operator

    5 Programmiersprache C2 Das gilt jedoch nicht für konstante float-Ausdrücke, die keinen “echten” Fließkommawert haben, z.B. 2.0, da diese vom Compiler als int- oder long- Konstanten betrachtet werden. z.B.: float x; int result; x = 2; result = not x; // result wird 0 result = not 2.0;...
  • Seite 66: Funktionen

    Nach dieser Anweisung enthält s den Text ”bbbwwwAAAXXXXcccD”. 5.8 Funktionen Die virtuelle Maschine der C-Control II Unit unterstützt die Programmierung mit Unterfunktionen. Blöcke von Anweisungen, die im Programm mehrfach benutzt werden, können in Funktionen zusammengefaßt werden. Beim Aufruf einer Funktion können Parameter übergeben werden.
  • Seite 67 5 Programmiersprache C2 Funktionen in C2 können nur numerische Ergebnisse zurückgeben, also die Datentypen byte, int, long und float. Die Rückgabe von Strings, Arrays oder zusammen- gesetzten Typen ist nicht möglich. function fx() returns byte // OK function fx() returns int // OK function fx() returns long // OK...
  • Seite 68: Parameter Und Lokale Variablen

    C-Control II Unit 5.8.2 Parameter und lokale Variablen Im Anweisungsblock einer Funktion können lokale Variablen definiert werden (siehe 5.5.5) Die im Funktionskopf definierten Parameter können ebenso wie Variablen verwendet werden. Numerische Parameter (byte … float) sind echte lokale Variablen der Funktion. Sie werden beim Aufruf der Funktion auf dem Stack des aktuellen Threads gespeichert und mit dem übergebenen Wert initialisiert.
  • Seite 69: Ende Einer Funktion Und Ergebnisrückgabe

    5 Programmiersprache C2 5.8.3 Ende einer Funktion und Ergebnisrückgabe Eine Funktion endet automatisch, wenn die Programmausführung zur schließenden geschweiften Klammer des Anweisungsblocks gelangt. Eine Funktion mit Rückgabewert liefert dann das Ergebnis 0. z.B.: function fx () returns int thread main int i;...
  • Seite 70: Aufruf

    C-Control II Unit 5.8.4 Aufruf Der Aufruf einer Funktion erfolgt durch Angabe ihres Bezeichners, gefolgt von einer öffnenden und einer schließenden runden Klammer. Wenn im Kopf der Funktion formale Parameter definiert wurden, so müssen beim Funktionsaufruf innerhalb der runden Klammern genau so viele aktuelle Parameter aufgelistet werden, jeweils durch ein Komma getrennt.
  • Seite 71: Typenprüfung

    5 Programmiersprache C2 5.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 72: Inline-Funktionen Und -Anweisungen

    Das kann von lokalem Fehlverhalten bis zum Absturz des gesamten Systems der C-Control II Unit führen! 5.8.7 Inline-Funktionen und -Anweisungen Die Bibliotheksmodule zum Zugriff auf die Ressourcen der C-Control II Unit (z.B. hwcom.c2) benutzten inline-Funktionen und -Anweisungen zum direkten Einfügen von virtuellen Maschinencodes in den Programmquelltext. Es gilt, inline-Funktionen dürfen nur inline-Anweisungen enthalten.
  • Seite 73: Main-Threads

    Programm still und wartet endlos auf den run-Befehl (siehe 5.9.3). 5.9.3 Prioritätssteuerung Die virtuelle Maschine der C-Control II Unit stellt jedem Thread soviel Rechenkapazität zur Verfügung, wie es seinem Prioritätswert entspricht. Ein Thread mit Priorität 32 kann genau 32 virtuelle Maschinenoperationen hintereinander ausführen, bevor ihn das System unter-...
  • Seite 74 C-Control II Unit 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 75 5 Programmiersprache C2 z.B.: halt blink2; 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 76: Warten Auf Ereignisse

    C-Control II Unit 5.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 77: Synchronisation

    5 Programmiersprache C2 Ist die Pause noch nicht vorüber, dann gibt der aktuelle Thread die Programmausführung sofort an den nächsten Thread ab (vgl. yield). 5.9.6 Synchronisation In Computersystemen mit parallelen Prozessen kann es zu folgenden problematischen Situationen kommen: • Aliasing von Speicherzugriffen •...
  • Seite 78 C-Control II Unit Wie in 5.9.3 bereits gezeigt, wird eine C2-Anweisung in mehreren Einzeloperationen der virtuellen Maschine ausgeführt. Die Anweisung 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 5.9.3 ebenfalls erläutert wurde, kann diese Befehlskette jederzeit von einem...
  • Seite 79 Signal steht noch auf “frei”, obwohl schon ein anderer Thread den kritischen Bereich betre- ten hat! Zur Lösung des Synchronisationsproblems stellt die virtuelle Maschine der C-Control II Unit eine atomare Maschinenoperation zur Verfügung, auf die in C2 über das Schlüsselwort capture zugegriffen werden kann.
  • Seite 80 C-Control II Unit Das Setzen des “Freisignals” erfolgt durch das Schlüsselwort release. Da sich ein Thread merkt, welche byte-Variable er besetzt hat, steht die release-Anweisung ohne weite- re Angaben. release; Ein Thread sollte release sofort aufrufen, wenn er den synchronisierten Bereich verläßt.
  • Seite 81 Im Beispiel wird hier ein Modul ressource angenommen, dessen Funktionen selbst noch nicht synchronisiert sind. Alle Bibliotheksmodule zum Zugriff auf Systemressourcen der C-Control II Unit enthalten bereits die notwendige Synchronisation (siehe z.B. Modul hwcom.c2).
  • Seite 82: Anweisungen Zur Ablaufsteuerung

    C-Control II Unit 5.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 bloße rechnerische Verknüpfung von Werten hinausgehen. 5.10.1 if … else … - Bedingte Ausführung Mit der if-Anweisung wird die Abarbeitung von Programmabschnitten an eine Bedingung geknüpft.
  • Seite 83: Loop - Endlosschleife

    5 Programmiersprache C2 fx1(); else fx2(); // fx2 wird aufgerufen 5.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 84: For - Schleife

    C-Control II Unit 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 ; 5.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 85: Vorzeitiger Abbruch

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

    C-Control II Unit 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.
  • Seite 87: Softwareentwicklung

    6 Softwareentwicklung 6.1 Installation und Start der Integrierten Entwicklungsumgebung Mit der C-Control II Unit 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 88: Richtlinien Zur Quelltextformatierung

    Quelltext durchführbar. Nachfolgende Richtlinien sind Gestaltungsvorschläge. Es steht Ihnen frei, die Vorschläge anzunehmen, zu variieren oder zu verwerfen. Wenn Sie jedoch Unterstützung von Conrad Electronic wünschen und dazu Quelltextauszüge zur Überprüfung einsenden, können diese nur bearbeitet werden, wenn sie den unten aufgeführten Richtlinien erkennbar entsprechen.
  • Seite 89: Bezeichner

    6 Softwareentwicklung 6.3.3 Bezeichner 1. Bezeichner sollen selbstbeschreibend sein. Abkürzungen sind möglich, solange die Bedeutung im Kontext ohne zusätzliche Kommentare erkennbar bleibt. 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 90: Threads

    C-Control II Unit 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. //----------------------------------------------------- function getMaxTemp ( int deviceID, int channel ) returns int //----------------------------------------------------- 6.3.6 Threads 1.
  • Seite 91: Kombinationen Mit Schlüsselworten Zur Ablaufsteuerung

    6 Softwareentwicklung return result; 6.3.8 Kombinationen mit Schlüsselworten zur Ablaufsteuerung 1. Einzelne Anweisungen in Kombinationen mit Schlüsselworten zur Ablaufsteuerung (if, else, loop, while, do, for) stehen in derselben Zeile wie das Schlüsselwort oder vorzugsweise um zwei Leerzeichen eingerückt in der nächsten Zeile. 2.
  • Seite 92: Automatischer Compiler

    6.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. Schätzen Sie selbst ab, welche Folgen eine Programmfehlfunktion beim Betrieb Ihrer Applikation haben kann.
  • Seite 93: Simulationsumfang

    6.5.2 Simulationsumfang Kern des Simulators ist dieselbe virtuelle Maschine, die auch im Betriebssystem der C-Control II Unit 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 94: Programmübertragung In Die Unit

    C-Control II Unit 6.6 Programmübertragung in die Unit Schließen Sie die Control II Unit an einer seriellen Schnittstelle Ihres PCs an. Verwenden Sie dazu das der Unit beiliegende Nullmodem- und das SUB-D-Adapterkabel. Falls Sie kein Application Board oder eine andere Zwischenplatine benutzen, stecken Sie das Adapterkabel so auf die Pins von X1, daß...
  • Seite 95: Standardmodule

    7 Standardmodule 7 Standardmodule Dieses Kapitel gibt einen Überblick über alle Bibliotheksmodule zum Zugriff auf die Systemressourcen der C-Control II Unit. Im einzelnen sind das die Module Datei Inhalt can.c2 CAN-Bus constant.c2 allgemeine Konstanten hwcom.c2 1. serielle Schnittstelle (Hardwareschnittstelle) i2c.c2 C-Bus lcd.c2...
  • Seite 96 C-Control II Unit speed Übertragungsgeschwindigkeit 50 kbit/s SPEED_50 (0) 62,5 kbit/s SPEED_62 (1) 125 kbit/s SPEED_125 (2) 250 kbit/s SPEED_250 (3) 500 kbit/s SPEED_500 (4) Wenn Sie einen ungültigen Wert für speed übergeben, wird die Übertragungsrate auf 125 kbit/s festgesetzt.
  • Seite 97: Statusabfrage Für Einen Can-Kanal

    7 Standardmodule 7.1.2 Statusabfrage für einen CAN-Kanal function ready ( int channel ) returns int Die Funktion ready prüft, ob ein Kanal bereit für eine neue CAN-Übertragung ist. 0 … 14 ( channel 14 kann nur empfangen und ist nie bereit) channel Rückgabe: -1 wenn bereit, sonst 0 7.1.3 Test auf Übertragungsfehler...
  • Seite 98: Nachricht Veröffentlichen

    C-Control II Unit 7.1.5 Nachricht veröffentlichen function publish ( int channel, int id, byte buf[], int length ) Die Funktion publish übergibt Bytes aus einem Bytepuffer an einen CAN-Ausgabekanal und stellt die Daten für “Remote-Request”-Anforderungen anderer CAN-Busteilnehmer zur Verfügung. D.h. andere Busteilnehmer können unter Angabe der passenden Message-ID die Übertragung der Pufferdaten anfordern.
  • Seite 99: Senden Einer "Remote-Request"-Anforderung

    7.1.8 Senden einer “Remote-Request”-Anforderung function request ( int channel ) So wie die C-Control II Unit Nachrichten veröffentlichen kann (siehe 7.1.5), kann sie auch selbst eine Nachricht anfordern, die ein anderer CAN-Busteilnehmer veröffentlicht hat. Es muß bekannt sein, unter welcher Message-ID diese Nachricht abrufbar ist. Diese ID muß...
  • Seite 100: Initialisierung

    C-Control II Unit beschriebene Funktionen sind in den Modulen hwcom.c2 und swcom.c2 gleichartig definiert. 7.2.1 Initialisierung function init () Die Funktion init initialisiert eine serielle Schnittstelle und deaktiviert eventuell konkur- rierende Portfunktionen. 7.2.2 Einstellen der Übertragungsgeschwindigkeit Für jede der beiden Schnittstellen kann die Übertragungsgeschwindigkeit eingestellt wer- den.
  • Seite 101: Verwerfen Von Daten

    7 Standardmodule function setbuf ( byte buf[], int length ) Referenz auf eine statische oder quasi-statische Bytepuffervariable Länge des Puffers length 7.2.4 Verwerfen von Daten Applikationen, die serielle Daten in Rahmenform empfangen, können unter bestimmten Bedingungen unvollständige Rahmen im Empfangspuffer enthalten. Dann ist es erforder- lich, alle Bytes im Empfangspuffer zu verwerfen, um auf den Beginn des nächsten Rahmens zu synchronisieren.
  • Seite 102: Test Auf Sendebereitschaft

    C-Control II Unit den Empfang weiterer Bytes. Das Warten wird abgebrochen, wenn zwischen zwei Bytes eine längere Pause erkannt wird (timeout). Der Rückgabewert gibt die Anzahl der tatsächlich gelesenen Bytes zurück. Referenz auf eine Bytepuffervariable Länge des Puffers length Timeout in Millisekunden timeout 7.2.8 Test auf Sendebereitschaft...
  • Seite 103: I2C.c2

    7 Standardmodule 7.3 i2c.c2 Über die Funktionen des Moduls i2c.c2 kann ein Programm auf ICs zugreifen, die am I Bus der C-Control II Unit angeschlossen sind. Eine typische Anwendung ist der Anschluß serieller EEPROMs zur Aufzeichnung von Daten. Der I C-Bus der C-Control II Unit ist als Single-Master-Bus implementiert.
  • Seite 104: Schreiben Eines Bytes

    C-Bus bereit für eine neue Übertragung ist. Rückgabe: -1 wenn bereit, sonst 0 7.4 lcd.c2 Das 2x8-Zeichen-LCD der C-Control II Unit ist am I C-Bus angeschlossen. Durch das Senden von Steuer- und Datenbytes an das Display kann der Inhalt der Anzeige gesetzt...
  • Seite 105: Initialisierung

    7 Standardmodule des Diplaycontrollers. Zur Vereinfachung bietet das Betriebssystem einige vorgefertigte Routinen zur LCD-Ausgabe. Diese Systemroutinen werden über die Funktionen im Modul lcd.c2 angesprochen. 7.4.1 Initialisierung function init () Die Funktion init initialisiert das Display. Die Initialisierung wird bereits automatisch beim Reset des Systems durchgeführt und muß...
  • Seite 106: Position Setzen

    C-Control II Unit 7.4.5 Position setzen function goto ( int line, int pos ) Die Funktion goto setzt die aktuelle Ausgabeposition (Cursor) auf die angegebene Stelle. Die Numerierung von line und pos beginnt bei 0. Die Position links oben ist also (0,0).
  • Seite 107: Ein Zeichen Ausgeben

    Bytepuffervariable statisch sein (globale Variable oder Variable eines Threads). Referenz auf eine statische Bytepuffervariable Länge des Puffers length 7.5 lpt.c2 Die Digitalports der C-Control II Unit können u.a. als parallele Druckerschnittstelle benutzt werden. 7.5.1 Initialisierung function init () Die Funktion init initialisiert die Druckerschnittstelle. Eventuell konkurrierende...
  • Seite 108: Ausgabepuffer Leeren

    C-Control II Unit 7.5.2 Ausgabepuffer leeren function flush () Die Funktion flush leer den Ausgabepuffer und beendet so einen im Hintergrund laufenden Druckvorgang. 7.5.3 Test auf Ausgabebereitschaft function ready () returns int Die Funktion ready prüft, ob die Druckerschnittstelle bereit für eine neue Ausgabe ist.
  • Seite 109: Math.c2

    7 Standardmodule 7.6 math.c2 7.6.1 Mathematische Standardfunktionen Die Definitionen der Standardfunktionen haben die Form function fx ( float x ) returns float Name berechnetes Ergebnis Quadrat sqrt Quadratwurzel curt Kubikwurzel Sinus, Argument x in Bogenmaß (Radiant) Cosinus, Argument x in Bogenmaß (Radiant) Tangens, Argument x in Bogenmaß...
  • Seite 110: Minimum- Und Maximumfunktionen

    C-Control II Unit function abs ( int value ) returns int function labs ( long value ) returns long function fabs ( float value ) returns float 7.6.4 Minimum- und Maximumfunktionen Für jeden numerischen Datentyp (außer byte, das entspricht int beim Funktionsaufruf)
  • Seite 111: Kopieren

    7 Standardmodule 7.7.2 Kopieren function copy ( byte dest[], int pos, byte src[], int length ) Die Funktion copy kopiert eine Anzahl (length) Zeichen aus einer Bytepuffervariable (src) an eine bestimmte Position (pos) einer anderen Bytepuffervariable (dest). Es ist darauf zu achten, daß der Zielpuffer genügend Platz für die kopierten Zeichen bietet. 7.7.3 Speichern von Zahlenwerten in einem Bytepuffer 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ß-...
  • Seite 112: Lesen Von Zahlenwerten Aus Einem Bytepuffer

    C-Control II Unit 7.7.4 Lesen von Zahlenwerten aus einem Bytepuffer Zu den Funktionen zum Schreiben von Zahlenwerten gibt es je eine entsprechende Funktion zum Lesen der Werte aus einem Bytepuffer. function getint ( byte src[], int pos ) returns int...
  • Seite 113: Setzen Des Portmodus

    7 Standardmodule timebase Zeitbasis (Dauer eines Ticks) BASE_400 (0) 400 ns BASE_800 (1) 800 ns BASE_1600 (2) 1,6 µs BASE_3200 (3) 3,2 µs BASE_6400 (4) 6,4 µs BASE_12800 (5) 12,8 µs BASE_25600 (6) 25,6 µs BASE_51200 (7) 51,2 µs 7.8.2 Setzen des Portmodus Jeder der drei PLM-Ports kann in einem von zwei verschiedenen Hardwaremodi betrieben werden: entweder mit digitalem Ausgangspegel oder mit Transistor-Push-Pull-Ausgang.
  • Seite 114: Ausgabe Von Tonfrequenzen

    Benutzung von beep sollte eine niedrige Zeitbasis gewählt werden, da dadurch die Tonfrequenzen mit höherer Präzision wiedergegeben werden. 7.9 ports.c2 Die C-Control II Unit stellt insgesamt 16 Digitalports und 8 A/D-Wandlerports des Mikrocontrollers an ihren Pins zur universellen Anwendung bereit. Der Zugriff auf diese Ports erfolgt über Funktionen des Moduls ports.c2.
  • Seite 115: Abfrage Von Digitalports

    7 Standardmodule Zwischen den digitalen Prozessorports und den Portnummer-Parametern der Funktionen dieses Moduls besteht folgender Zusammenhang: Prozessor-Port Nummern der Einzelports Nummern der Nibbleports Nummern der Byteports P1L.0 P1L.1 P1L.2 P1L.3 P1L.4 P1L.5 P1L.6 P1L.7 P1H.0 P1H.1 P1H.2 P1H.3 P1H.4 P1H.5 P1H.6 P1H.7 7.9.1 Abfrage von Digitalports...
  • Seite 116: Setzen Von Digitalports

    C-Control II Unit Folgende Tabelle zeigt gültige Portnummern und den Wertebereich der Ergebnisse der einzelnen Abfragefunktionen. Funktion Anwendung Portnummern Ergebnis Abfrage von Einzelports 0 … 15 0, -1 Abfrage von Nibbleports 0 … 3 0 … 15 getn Abfrage von Byteports 0 …...
  • Seite 117: Deaktivieren Von Ports

    7.9.6 Frequenzmessung function getfreq ( int number ) returns long Die Pins DCF/FRQ 0 und FRQ 1 der C-Control II Unit können zur Messung von Pulsfrequenzen benutzt werden. Die Abfrage erfolgt mit der Funktion getfreq, mit der Nummer 0 oder 1 als Parameter.
  • Seite 118: Analog-Digital-Wandlung

    Die Funktion adc liefert den digitalisierten Meßwert von einem der 8 ADC-Ports der C-Control II Unit. Die Nummer des Ports (0 … 7) wird als Parameter übergeben. Das Ergebnis ist ein Integer im Bereich von 0 bis 1023 - entsprechend der 10bit-Auflösung des A/D-Wandlers des Mikrocontrollers;...
  • Seite 119: Ausgabe In Einen String

    7 Standardmodule 7.10.4 Ausgabe in einen String Über die put…-Funktionen im Modul str.c2 können Inhalte an eine existierende Stringvariable angehängt werden: einzelne Zeichen, Teilstrings, Integer-, Long- oder Floatwerte: function putchar ( string s, int c ) function putstring ( string dest, string source ) function putint ( string s, int value ) function putlong ( string s, long value ) function putfloat ( string s, float value )
  • Seite 120: Ausgabe Einer Bitmaske

    C-Control II Unit Die Funktion putlongf arbeitet identisch zu putintf, sie akzeptiert jedoch einen Long- Wert zur Ausgabe. · float-Ausgabe function putfloatf ( string s, float value, int format ) Bei der Funktion putfloatf legt der format-Parameter die Anzahl der Nachkommastellen fest.
  • Seite 121: System.c2

    2147483647 in den negativen Wert -2147483648 überläuft. 7.11.2 Uhrzeit 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 function settime ( int hour, int minute, int second ) Die Teilwerte der aktuellen Uhrzeit (Stunde, Minute, Sekunde) können durch folgende...
  • Seite 122: Status Der Dcf77-Synchonisation

    C-Control II Unit type TIME int hour; int minute; int second; 7.11.3 Status der DCF77-Synchronisation Das Betriebssystem versucht zu jeder vollen Minute, die interne Echtzeituhr auf den empfangenen DCF77-Datenrahmen zu synchronisieren. Unter schlechten Empfangs- bedingungen kann eine Synchronisation über einen längeren Zeitraum ausfallen. Die interne Echtzeituhr läuft dann quarzgetaktet weiter.
  • Seite 123: Sommerzeitflag

    ( int segment, int offset ) Über den Aufruf der Funktion function jump ( int segment, int offset ) können Sie die virtuelle Maschine der C-Control II Unit und somit die Abarbeitung eines C2-Programms verlassen und zu einer beliebigen Routine im Gesamtadreßraum des C164CI springen.
  • Seite 124: Anwenderdefinierte Interruptroutinen

    C-Control II Unit 7.11.7 Anwenderdefinierte Interruptroutinen Zur unverzögerten Reaktion auf die Ereignisse · 1ms-Timerzyklus des Systems, · High-Low-Flanken an den Digitalports P1H.0 … P1H.3, können Interruptroutinen in Assembler oder C geschrieben und im Segment 3 des FLASH- EEPROMs gespeichert werden. Lesen Sie dazu das Kapitel “8 Systemprogrammierung”.
  • Seite 125: Twb.c2

    () returns int liefert -1, wenn ein Antwortrahmen vom 2W-Bus-Modem empfangen wurde, anderenfalls 0. 7.12.3 Datenübertragung Die Kommunikation mit den 2W-Bus-Modulen läuft stets über ein 2W-Bus-Modem. Zwischen der C-Control II Unit und dem Modem werden seriell-synchron 8 Byte lange...
  • Seite 126: Constant.c2 Und Vmcodes.c2

    Adresse übertragen müssen. Lesen Sie dazu die Anleitungen zu den 2W-Bus- Modulen und dem Modem. Einige dieser Anleitungen hatten ihren Redaktionsschluß vor Erscheinen der C-Control II Unit. Der Text der Anleitungen enthält daher keine expliziten Hinweise auf C-Control II.
  • Seite 127: Systemprogrammierung

    8 Systemprogrammierung 8.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 zur C-Control II Unit. Diese Tools enthalten u.a. eine Entwicklungsumgebung mit Editor und Projektverwaltung, einen integrierten C/C++-Compiler, einen Assembler und Linker.
  • Seite 128: Implementierung Eines Eigenen Betriebssystems

    C-Control II Unit 8.1.3 Implementierung eines eigenen Betriebssystems Prinzipiell können Sie ein vollständig eigenes Betriebssystem entwerfen und in die C- Control II Unit laden. Sie sollten dazu über umfangreiche Kenntnisse in der Anwendung und Programmierung des C164CI-Mikrocontrollers verfügen. Außerdem benötigen Sie eine geeignete Entwicklungsumgebung, z.B.
  • Seite 129: Anhang

    9 Anhang 9 Anhang 9.1 Technische Daten Hinweis: detailliertere Informationen finden Sie in den PDF-Dateien der IC-Hersteller auf der C-Control -Utility CD. Alle Spannungsangaben beziehen sich auf Gleichspannung (DC). 9.1.1 Mechanik äußere Abmessungen ohne Pins ca. 82mm x 60mm x 18 mm Masse ca.
  • Seite 130: Literaturverzeichnis

    C-Control II Unit 9.2 Literaturverzeichnis SIEMENS (Infineon): “16Bit-Microcontrollers - C164CI User’s Manual” R. Schultes, I. Pohle: 80C166 Mikrocontroller, Franzis’ Verlag, 1994, ISBN 3-7723-5893-4 W. Lawrenz: “CAN Controller Area Network, Grundlagen und Praxis”, 2. Auflage, Hüthig Verlag, 1997, ISBN 3-7785-2575-1 K. Dembowski: “Computerschnittstellen und Bussysteme”, Hüthig Verlag, 1997, ISBN 3- 7785-2526-3 P.
  • Seite 131 P5.0 74HCT00 74HCT00 P5.1 P5.1 P5.2 P5.2 P5.3 P5.3 P5.4 P5.4 P5.5 P5.5 P5.6 P5.6 P5.7 P5.7 C-Control II P8.0 P8.0 CPU ROM RAM P8.1 P8.1 P8.2 P8.2 Page: 1/3 P8.3 P8.3 Conrad Electronic GmbH final release: D-92240 Hirschau 2000/06/02...
  • Seite 132 MC34063 DIG_GND 470pF 100µF /35V 220µH U_LCD DIG_GND DIG_GND DIG_PWR 1,2k 1% 3,6k 1% 10k 1% 10nF 220µF 220µF DIG_GND DIG_GND DIG_GND DIG_GND DIG_GND DIG_PWR C-Control II CAN 232 Page: 2/3 DIG_GND final release: Conrad Electronic GmbH D-92240 Hirschau 2000/06/02...
  • Seite 133 RSTIN P5.6 P5.7 P3.4 DIG_GND DIG_GND DIG_GND PIN2x5 CANL CANH TxDD RxDD CTSD P3.13 RTSD P3.15 DIG_PWR DIG_PWR DIG_GND U_LCD DIG_PWR Pin1 Pin2 Pin3 Pin4 PIN2x2 DIG_GND C-Control II Anschlüsse Page: 3/3 final release: Conrad Electronic GmbH D-92240 Hirschau 2000/06/02...
  • Seite 134 Detaillierte Definitionen und Anwendungsbeispiele finden Sie im Verlauf dieser Anleitung. C2 Schlüsselworte Seite Seite Seite Seite function step break halt quit string byte release thread capture inline resume type const return wait continue long returns while loop else nand yield float sleep Rangfolge der Operatoren in C2:...
  • Seite 135 ADC 1 C-Control II ADC 2 ADC 3 RSTOUT ADC 4 ADC 5 RSTIN ADC 6 ADC 7 BOOT Conrad Electronic B/N 95 05 70 HOST C SCL C SDA CAN TxD CAN RxD n.c. CANL CANH n.c. n.c. digital TxD digital RxD µC CTS...
  • Seite 136: Lcd Zeichensatz

    LCD Zeichensatz upper 4 bits 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 lower 4 bits xxxx 0000 xxxx 0001 xxxx 0010 xxxx 0011 xxxx 0100 xxxx 0101 xxxx 0110 xxxx 0111 xxxx 1000 xxxx 1001 10 xxxx 1010 11...

Inhaltsverzeichnis