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 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...
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.
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.
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.
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.
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...
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.
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.
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.
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.
(“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...
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.
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.
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)
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.
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.
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.
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-...
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”).
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...
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.
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.
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.
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.
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.
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.
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).
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.
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();...
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.
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.
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.
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 ) …...
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.
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.
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.
= 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.
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;...
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 …...
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’...
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.
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.
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”).
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.
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...
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;...
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...
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.
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;...
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.
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.
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.
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.
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...
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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ß...
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.
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...
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.
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ß...
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.
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.
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...
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.
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...
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ß...
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).
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...
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.
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ß...
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)
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ß-...
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...
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.
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.
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...
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 …...
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.
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;...
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 )
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.
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...
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.
( 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.
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”.
() 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...
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.
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.
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.
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.
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 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...