Home

C-Control II Unit - C

image

Contents

1. 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 Variable Strings Arrays und Parameter mit anwenderdefiniertem Datentyp hingegen werden automatisch als Referenz bergeben Manipulationen an Referenzparametern wirken sich auf das referenzierte Datenobjekt aus zB function string 5 s abc thread main string local_s local_s 123 fx local 53 local e wird im Gegensatz zu numerischen Parametern function fx int i 0 thread main int local_i local i 1 fx local i local i bleibt 1 68 5 Programmiersprache 2 Onrao 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 zB function fx returns int thread main int As i fx i wird 0 Mit der return Anweisung kann eine Funktion vorzeitig beendet werden und den Wert eines numerischen Ausdruc
2. J Conrad Technologie SS Centrum C Control 11 Uni II Unit ONRAD 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 Heizungssteverungen und Datenerfassungssystemen sind uns auch erfolgreiche Eins tze in der Industrieautomation der Laborforschung oder der Midi Technik in Tonstudios bekannt Vielleicht haben Sie schon mit einem unserer bew hrten Systeme C Control BASIC C Control PLUS oder der C Control Station gearbeitet Eventuell sind Sie nach einiger Zeit an deren Grenzen in Bezug auf Leistungsf higkeit und Speicherkapazit t gesto en Oder Sie haben die genannten Systeme bisher noch nicht eingesetzt weil sie nicht f r Ihre Aufgabe geeignet schienen Sicher kann C Control II diese Probleme jetzt l sen Conrad Electronic GmbH Hirschau 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 Nachdruc
3. ber Funktionen des Moduls strc2 7 10 1 String leeren function clear string Die Funktion clear leert den als Referenz bergebenen String seine L nge wird auf O gesetzt 7 10 2 Stringl nge ermitteln function length string s returns int Die Funktion Length ermittelt die L nge des als Referenz bergebenen Strings 7 10 3 String mit Zeichen f llen function fill string s int pos int Die Funktion 111 f llt einen String s ab der Position pos 0 29 bis zur maximalen L nge 30 Zeichen mit dem Zeichen ASCII Code 118 7 Standardmodule ENRAD LL BEST 7 10 4 Ausgabe in einen String ber die put Funktionen im Modul strc2 k nnen Inhalte an eine existierende Stringvariable angeh ngt werden einzelne Zeichen Teilstrings Integer Long oder Floatwerte E function putchar string s int function putstring string dest string source E function putint string s int value function putlong string s long value function putfloat string s float value 7 10 5 Formatierte Ausgabe in einen String C2 unterst tzt einige einfache Formatierungen beim Anh ngen von Zahlenwerten an Strings Das Format wird durch einen Integerparameter bestimmt int Ausgabe function putintf string s int value int format Die Funktion putintf h ngt einen formatierten Integer an einen String an Der Parameter format legt die Anzahl der Ausgabestellen fest Fehlende f
4. 10 L ufe flest for i 9 gt 0 step 1 10 L ufe r ckw rts 5 10 6 Vorzeitiger Abbruch Wird eine 1 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 Daf r kann die break Anweisung benutzt werden break z B for 444 9999 if bad break ER 5 10 7 Vorzeitige Fortsetzung Wird eine 1 while do oder for Schleife mit einem Anweisungsblock verwendet kann es erw nscht sein die Schleife unter bestimmten Sonderbedingungen vorzeitig mit dem n chsten Durchgang fortzusetzen ohne eventuelle weitere Anweisungen des Blocks auszuf hren continue 85 II Unit zB 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 5 10 8 Programmende Die gesamte Programmabarbeitung der virtuellen Maschine kann durch die quit Anweisung beendet werden Dazu mu nach dem quit Schl sselwort ein numerischer Ausdruck stehen dessen berechneter Wert ungleich O ist Mit diesem Wert kehrt das System in den Hostmodus zur ck siehe 4 3 Im Hostmodus k nnte zB ein neues Prog
5. Definitions und Anweisungsformen Abschlie end finden Sie eine Aufstellung aller Datentypen und Funktionen der Systemmodule sowie kurze Beispiele zu deren Anwendung Ausf hrlichere Programmbeispiele befinden sich auf der CD zur Integrierten Entwicklungs umgebung F r nachfolgende Abschnitte vereinbaren wir die folgenden Formatierungen und Stile um Textelemente mit besonderer Bedeutung gezielt hervorzuheben datei ext Dateinamen STRG F1 Tasten und Tastenkombinationen sourcecode Quelltextbeispiele Name im Quelltext zu ersetzen durch das beschriebene Syntaxelement 5 2 Projekte und Module Der C2 Compiler erzeugt aus einem C2 Projekt einen Bin rcode der anschlie end in die C Control II Unit bertragen und von der virtuellen Maschine als Programm ausgef hrt werden kann 43 II Unit Ein C2 Projekt kann aus beliebig vielen Modulen bestehen Ein Modul ist eine einfache ASCll 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 Jeder Name darf nur einmal im Projekt vorkommen Auf die Module verteilt steht der gesamte Quelltext eines Programms Auf Modulebene werden globale Variablen benannte Konstanten zusammengesetzte Datentypen Funktionen und Threads definiert Die Aufteilung eines Projektes in mehrere Module hat folgende Vorteile verbesserte bersich
6. Die maximale L nge des CAN Bus betr gt bis zu 1200m abh ngig von der genutzten Bitrate maximale Busl nge 50 kbit s 1200 m 62 5 kbit s 1000 m 125 kbit s 500 m 250 kbit s 250 m 500 kbit s 100 m Auf dem CAN Bus werden Datenbits massefrei als Differenzspannungen bertragen vgl RS485 Standard Diese Art der Daten bertragung macht das Signal sicherer gegen die Einstrahlung von St rsignalen verglichen mit der bertragung von Spannungspegeln mit Bezugsmasse An beiden Enden mu der CAN Bus mit je einem 120 Ohm Widerstand abgeschlossen sein Die L ngen der Stichleitungen vom Bus zu den angeschlossenen Baugruppen sollten einige wenige Zentimeter nicht berschreiten Sind die Stichleitungen zu lang oder fehlen die Abschlu widerst nde k nnen Leitungsreflexion die Daten bertragung stark st ren oder unm glich machen Als Kabelstrang k nnen einfache verdrillte Leitungen eingesetzt werden twisted pair Bei der Verwendung geschirmter Leitungen lassen sich Probleme mit St rungsabstrahlung und einstrahlung reduzieren Das gilt besonders f r lange CAN Busse und hohe bertragungsgeschwindigkeiten Zur Unterdr ckung von Gleichtaktst rungen sollten spezielle CAN Drosseln verwendet werden Die CAN bertragungsgeschwindigkeit von 1Mbit s wird von C Control II nicht direkt 34 3 Hardware Onrao unterst tzt Diese Bitrate erfordert besondere Ma nahmen zur bertragungssicherheit und vor all
7. Eine wait Anweisung mit nachfolgendem L schen einer frei Variable erf llt diese Voraussetzung nicht z B wait free 2 virtuelle Maschinenoperationen free 0 2 virtuelle Maschinenoperationen 78 5 Programmiersprache 2 ENRAD besteht aus 4 virtuellen Maschinenoperationen Angenommen ein Thread bekommt hier das Freizeichen dann erfolgt ein Threadwechsel bevor er free auf O setzen kann Ein zweiter Thread der ebenfalls auf dieses Freizeichen wartet erh lt nun Rechenzeit Das Signal steht noch auf frei obwohl schon ein anderer Thread den kritischen Bereich 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 Die capture Anweisung existiert in einer expliziten und einer impliziten Form Die explizite Form erwartet die Angabe eines Bezeichners einer globalen byte Variable ZB byte flag thread tx capture flag explicit capture the flag Beim Ausf hren capture Anweisung testet der aktuelle Thread ob der Wert der Variablen ist Freizeichen Wenn ja dann schreibt der Thread seine eigene Nummer Wer 1 255 in die Variable und merkt sich die Adresse der byte Variable Wie bereits erw hnt dieser Vorgang l uft atomar in einer einzigen Operation der virtuellen Maschine ab Die implizite
8. Fernbedienungen von C Control Applikationen durch Infrarot Minidisplay f r zus tzliche Anzeigen im Stil des Minidisplays der C Control II Unit 30 3 Hardware Onrao Zur Ankoppelung der C Control Unit den 2W Bus ben tigen Sie das 2W Bus Modem Dieses Modem hat einen Eingang f r die unmodulierte 12V Versorgungsspannung aus einem Netzteil sowie eine synchrone digitale Schnittstelle mit einer 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 PIH 3 CLOCK und PIH A DATA sowie GND Im Betrieb sendet die C Control II Unit 8 Byte lange Datenrahmen seriell synchron an das 2W Bus Modem Diese Rahmen enthalten die Adresse des angesprochenen 2W Bus Moduls ein Kommando und einige Datenbytes Nach einer kurzen Zeit ca 17ms 30ms antwortet das Modem jeweils mit einem 8 Byte langen Datenrahmen der Statusinformationen und Daten des angesprochenen Moduls enth lt Das Betriebssystem der C Control II Unit enth lt Routinen zur seriell synchronen Kommunikation mit dem 2W Bus Modem Ihr C2 Programm mu lediglich die Datenrahmen aufbereiten und auswer ten Weitere Hinweise zur Programmierung finden Sie im Kapitel 712 Jedes 2W Bus Modul hat eine eindeutige 8bit Adresse im Netzwerk Diese Adress
9. _ CANL H digital TxD digital RxD digital RTS digital CTS uC RTS O ONRAD ground Masse Bezugspotential 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 stabilisierte Ausgangsspannung des Schaltreglers Eingang f r LCD Kontrasteinstellung 8 Digitalports non maskable interrupt RESET out RESET in Aktivieren des Bootstrap Modus nach Reset Aktivieren des Hostmodus nach Reset Versorgungsspannungseingang 8 24V 8 Digitalports Tonfrequenzausgabe oder 2 Ausg nge f r Pulsl ngenmodulation DCF FRQ Funkuhrempfang oder Frequenzmessung Frequenzmessung 8 Analog Digital Converter Eing nge Taktleitung Datenleitung CAN Bus Digitalpegel des Senders CAN Bus Digitalpegel des Empf ngers nur f r Diagnosezweckel CAN Bus hwcom digitale Sendeleitung hwcom digitale Empfangsleitung nur f r Diagnosezweckel hwcom digitale RTS Leitung hwcom digitale CTS Leitung hwcom RTS Port am Mikrocontroller hwcom CTS Port am Mikrocontroller 23 II Unit Anmerkung zu und digital RxD a
10. anschlie endem Senden der Ger teadresse auf den Bus Die Funktion start bernimmt diese Aufgabe Welche Ger teadresse f r welches IC welche Bedeutung hat entnehmen Sie bitte der Dokumentation zu diesen ICs Das Ergebnis der Funktion start ist 1 wenn das angesprochene IC bereit ist anderen falls 0 73 3 Senden der Stopbedingung function stop Eine Daten bertragung auf dem IPC Bus wird durch die Stopbedingung abgeschlossen Die Funktion stop erzeugt dieses Signal auf dem Bus 103 II Unit 7 3 4 Schreiben eines Bytes function write byte c returns int Die Funktion write sendet ein Byte auf dem Das Ergebnis der Funktion ist 1 wenn das angesprochene IC mit einem Acknowledge geantwortet hat anderenfalls 0 73 5 Lesen eines Bytes mit Acknowledge function read returns byte Die Funktion read liest ein Byte ber den IPC Bus und antwortet mit einem Acknowledge Signal Eine typische Anwendung ist das sequentielle Lesen von Bytes aus einem seriellen EEPROM 7 3 6 Lesen eines Bytes ohne Acknowledge function readlast returns byte Die Funktion readlast liest ein Byte ber den IPC Bus und antwortet mit einem No Acknowledge Signal Eine typische Anwendung ist das lesen des letzten Bytes einer Bytesequenz aus einem seriellen EEPROM 7 3 7 Test auf Sendebereitschaft function ready returns int Die Funktion ready pr ft ob der bereit f r eine neue bertrag
11. fung der Bedingung erfolgt nach jedem Schleifendurchlauf Die Anweisung der Schleife wird also mindestens einmal ausgef hrt 83 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 do ee while Ausdruck 5 10 5 for Schleife Die or Schleife f hrt eine Anweisung oder einen Anweisungsblock solange aus bis eine Schleifenvariable eine Vergleichsbedigung nicht mehr erf llt for Variable Wert Operator Endwert step Wert Anweisung for Variable Wert Operator Endwert step Wert d CERE Nach dem Schl sselwort for wird die Schleifenvariable mit einem Startwert initialisiert Vvariable Wert Dann folgt das Optional steht dann ein Vergleichsoperator Operator lt gt lt oder gt Wird der Operator nicht ange geben geht der C2 Compiler von einer kleiner gleich Bedingung aus lt Vor jedem Durchlauf wird die Schleifenvariable mit einem Endwert verglichen Optional kann mit dem Schl sselwort step eine Schrittweite angegeben werden Ohne diese Angabe betr gt die Schrittweite konstant 1 Nach jedem einzelnen Durchlauf wird der Schrittweitenwert zur Schleifenvariable addiert Beispiele for i 0 10 11 L ufe LI sag 84 5 Programmiersprache 2 ENRAD LL for i 0 lt 10
12. 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 kommawerte Dazu k nnen folgende Funktionen des Moduls mem c2 benutzt werden function putint byte dest int pos int value function putlong byte dest int pos long value function putfloat byte dest int float value F r alle drei Funktionen ist dest Referenz auf eine Bytepuffervariable pos Ausgabeposition im Puffer der Zahlenwert Die Funktion put int speichert den Wert in zwei Bytes ab der Position in der Folge HiByte LoByte putlong speichert den Wert in vier Bytes ab der Position pos in der Folge HiByte des HiWord LoByte des HiWord HiByte des LoWord LoByte des LoWord put float speichert den Wert in acht Bytes ab der Position im IEEE Format ab Da dieses Format nicht von allen Computersystemen gleicherma en interpretiert wird sollte putfloat nur f r den Datenaustausch zwischen C Control II Systemen verwendet werden 111 II Unit 7 7 4 lesen von Zahlenwerten aus einem Bytepuffer Zu den Funktionen zum Schreiben von Zahlenwerten gibt es je eine entsprechen
13. t 255 Es hat sich bew hrt die meisten Threads mit einer eher niedrigen Standardpriorit t zB 32 laufen zu lassen Nur einigen Programmabschnitten die lange Zeit auf ein Ereignis warten dann aber mit hoher Geschwindigkeit reagieren m ssen sollte ein h herer Wert zugeteilt werden Anmerkung Multithreading vs Multitasking Von Tasks spricht man in der Regel im Zusammenhang mit parallel unter einem Betriebssystem laufenden unabh ngigen Programmen z B einer Textverarbeitung einem E Mail Client und einer Datenbank die gleichzeitig auf einem PC gestartet wurden Threads hingegen sind sogenannte leichtgewichtige Prozesse innerhalb eines 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 F r den Anwender gen gt zu wissen da es funktioniert 4 4 4 Programm und Konstantenspeicher Die maximale L nge des Bin rcodes betr gt 128kB Er findet in zwei Segmenten des Platz Die Adressierung eines Bin rcodes im Programmspeicher erfolgt word weise ber einen 16bit Offset Getrennt vom Programmspeicher nutzt die virtuelle Maschine zwei weitere FLASH Segmente f r 128kB
14. 5 CHARACTERS und ONE sind Integer Arrays Wie Arrays von numerischen Konstanten k nnen Arrays von Stringkonstanten definiert werden 60 5 Programmiersprache 2 ENRAD 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 ZB 10 4 2 a wird 18 Ausdr cke mit Operatoren gleichen Ranges werden von links nach rechts berechnet z B L R 4 17 2 a wird 1 25 Wie aus der Mathematik bekannt ist kann die Rechenreihenfolge durch Klammersetzung beeinflu t werden zB 10 4 2 wird 5 Klammerebenen k nnen theoretisch beliebig tief ineinander verschachtelt werden Allerdings geht in der Regel bereits ab der dritten oder vierten Verschachtelung jeglicher berblick ber den dargestellten Ausdruck verloren Au erdem k nnen extrem tiefe Verschachtelungen zu Stackproblemen f hren siehe 4 4 6 Das Programm arbeitet dann nicht korrekt Teilen Sie daher die Berechnung komplexer Ausdr cke nach M glichkeit in mehrere Anweisungen und speichern Sie Zwischenergebnisse in lokalen Variablen F gen Sie die Zwischenergebnisse nacheinander zum Endergebnis zusammen Auch w
15. Andere Formate werden von C Control II nicht unterst tzt Bei entsprechenden Detailkenntnissen der Programmierung des C164CI Mikrocontrollers k nnen per Systemprogrammierung auch andere Formate realisiert werden siehe Kapitel 8 Auf der Platine der C Control II Unit befindet sich ein hochwertiges Pegelwandler IC zur Umsetzung der digitalen Bitstr me Non Retum Zero Signale nach dem RS232 Standard positive Spannung lowbits negative Spannung f r Highbits Das IC hat jeweils zwei Kan le in jeder Wandlerrichtung Das Pegelwandler IC verf gt ber einen erh hten Schutz vor Spannungsspitzen Spannungsspitzen k nnen in elektromagnetisch belastetem Umfeld zB in industriellen Anwendungen in die Schnittstellenkabel induziert werden und angeschlossene Schaltkreise zerst ren Ein Kanal ist fest mit dem digitalen seriellen Ein Ausgang des Mikrocontrollers verbunden Diese digitalen Signale k nnen an den Pins digital TxD und digital RxD der Unit bech achtet werden Die NRZ Seite des ersten Kanals des Pegelwandlers finden Sie an den Pins TxD und RxD Im Ruhezustand keine aktive Daten bertragung k nnen Sie am Pin TxD eine negative Spannung von einigen Volt gegen GND messen RxD ist hochohmig Das der C Control II Unit beiliegende Nullmodem Kabel kreuzt die Leitungen RxD und TxD und verbindet sie mit den Pins PC TxD bzw 2 PC RxD der 9poligen SUB D Buchse des PCs Au erdem wird eine Masseverbindung zwischen GND der Uni
16. Anhieb so funk tionieren wie es im Detail gew nscht ist Manche Fehlfunktion ist offensichtlich und repro duzierbar Immer wenn ich die Taste dr cke dann Die Ursache kann meist leicht gefunden und beseitigt werden Schwieriger ist das Finden von Fehlern die nur in der Verkettung mehrerer zum Teil seltener Bedingungen auftreten Wochenlang l uft alles einwandfrei dann Einige Empfehlungen zum Test und zur Fehlersuche Es gilt der Grundsatz alles was nicht getestet wurde wird fr her oder sp ter Fehlfunktionen zeigen niemals glauben da etwas funktioniert sondern testen und wis sen Testen Sie ein Programm nicht erst im vollen Ausbau Stellen Sie zun chst die Korrektheit aller einzelnen Unterprogramme Threads Funktionen sicher f gen Sie die Bestandteile st ckweise zusammen und f hren Sie immer wieder Zwischentests durch 92 6 Softwareentwicklung Onrao F ttern Sie Ihre Funktionen zum Test mit allen m glichen Eingabedaten nicht nur mit den f r Ihre Anwendung normalen Werten Fr her oder sp ter kommt es zu un normalen Situationen an die Sie im Moment vielleicht nicht denken Bauen Sie in Ihr Programm Statusausgaben auf das Mini LCD ein auch wenn Ihre Anwendung das LCD nicht ben tigt nutzen Sie freie Digitalports zur Ausgabe von Statussignalen Beobachten Sie das Programmverhalten anhand der Statusausgaben und signale Kreisen Sie Fehler durch gezielt
17. Anweisungsbl cke 1 Die Definition lokaler Variablen ist durch eine Leerzeile von den restlichen Anweisungen getrennt 2 Eine abschlie ende return Anweisung ist durch eine Leerzeile von den vorangehenden Anweisungen getrennt L ngere Anweisungsbl cke sind durch zus tzliche Leerzeilen geeignet zu strukturieren Geschweifte Klammern stehen paarweise untereinander Geschweifte Klammen stehen jeweils allein in einer Zeile 5 Verschachtelte Anweisungsbl cke sind jeweils um zwei Leerzeichen einger ckt z B function getMaxTemp int channel returns int int i int result if channel 13 90 6 Softwareentwicklung ENRAD 6 EN UDDDDDDODO DO DO D TD OOMMI A return result 6 3 8 Kombinationen mit Schl sselworten zur Ablaufsteuerung 1 Einzelne Anweisungen in Kombinationen mit Schl sselworten zur Ablaufsteuerung 1 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 Die geschweiften Klammern von Anweisungsbl cken nach Schl sselworten zur Ablaufsteuerung stehen linksb ndig unter dem Schl sselwort Vor den Schl sselworten if Loop while do und for sollte eine Leerzeile stehen Die Leerzeile kann entfallen wenn es sich um verschachtelte Konstrukte handelt und das Schl sselwort einger ckt direkt nach einer Zeile folgt do fx while not ready do fx while not read
18. Form lautet capture ohne weitere Angaben Die implizite Form kann nur innerhalb der Anweisungsbl cke von Funktionen verwendet werden nicht in denen von Threads Die implizite Form nutzt versteckte globale byte Variablen die der C2 Compiler automatisch anlegt Zu jeder Funktion exisitiert eine solche Variable 79 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 Andere vor capture wartende Threads werden sonst unn tig blockiert Ein Thread darf niemals zwei capture Anweisungen ohne zwischenzeitliches release ausf hren Der C2 Compiler kann das nicht nachpr fen Bei MiBachtung kommt es zu Blockaden im Programm z B byte flagl byte flag2 thread tx capture flagl Blockade im 2 Durchlauf capture 1 2 flagl wird vergessen hass release nur flag2 wird freigegeben Der Thread tx im obigen Beispiel l uft wie jeder Thread automatisch in einer Endlosschleife Im zweiten Schleifendurchlauf blockiert da 1ag1 noch auf Besetz steht Abschlie end je ein Beispiel zur Anwendung der expliziten und der impliziten capture orm 1 Vermeidung von Aliasing bei Speicherzugriffen durch e
19. PC Programm bernimmt die gesamte Steuerung des Boot Vorganges Die bertragung beginnt mit einem Nullbyte 1 Startbit 8 Datenbits 0 1 Stopbit Der Mikrocontroller der C Control II Unit empf ngt das Nullbyte und benutzt es zur Messung der bertragungs geschwindigkeit zB 9600 Baud Dann initialisiert er seine eigene Schnittstelle ent sprechend 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 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 abzulegen und anschlie end zu starten Die zweite Stufe des Loaders empf ngt letztend lich das Betriebssystem und speichert es im ersten Segment des externen FLASH Dieses erste Segment enth lt ab Adresse 0000 die Interrupt Vektoren darunter auch den Reset Vektor Wenn das Betriebssystem korrekt installiert wurde startet es nach dem n chsten Reset automatisch und geht in den Hostmodus ber Bei allen nachfolgenden Kapiteln gehen wir davon aus daB Sie das Betriebssystem der C Control II Unit korrekt installiert haben 4 3 Hostmodus 4 3 1 Systeminitialisierung und automatisches Starten von Anwenderprogrammen Nach dem Reset werden die Ressourcen des Mikr
20. Sichtbarkeit der LCD Zeichen 5V ergibt sich bei frontaler Betrachtung Gegebenenfalls mu der Kontrast etwas nachgeregelt werden Das kann ber eine LCD ADJ Widerstandsschaltung am Pin LCD ADJ x erfolgen 10k 2 UNIT 24 3 Hardware Onrao 3 3 4 Reset RSTIN RSTOUT Ein Reset bewirkt die R ckkehr des Mikrocontrollersystems in einen definierten Anfangszustand Die C Control II Unit kennt grunds tzlich 3 Reset Quellen Power On Reset wird automatisch nach dem Einschalten der Betriebsspannung ausge f hrt Hardware Reset wird ausgef hrt wenn der RSTIN Pin der Unit low gezogen und wie der losgelassen wird z B durch kurzes Dr cken eines angeschlossenen Reset Tasters Werden am RSTIN Pin die Ausg nge externer ICs oder Schaltungen angeschlossen so m ssen diese Open Collector bzw Open Drain Charakter haben Software Reset ber einen Assembler Befehl SRST kann softwarem ig ein Reset aus gel st werden Bitte beachten Sie Kurzzeitige Ausf lle der Versorgungsspannung f hren zu folgendem Effekt die 5V Betriebsspannung des Controllers f llt gest tzt durch Elektrolytkondensatoren langsam ab Sie steigt jedoch wieder auf 5V bevor die Kondensatoren ganz entladen sind 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 V
21. Sie die Quelltexte und die Dokumentation des Systems sowie einen geeigneten Compiler Die Quelltexte und deren Dokumentation erhalten Sie auf Anfrage als Sonderbestellung bei Conrad Electronic Einen passenden Compiler finden Sie in der Vollversion der TASKING C C Tools Aktuelle Informationen zu Preisen und Support finden Sie ab Verf gbarkeit auf der C Control Homepage wwu c control de 127 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 die Vollversion der TASKING C C Tools Bitte haben Sie Verst ndnis da wir f r die Programmierung Ihrer eigenen Betriebssysteme keinen kostenfreien Support leisten k nnen Sollten Sie Interesse an einer Entwicklungsunterst tzung haben vermitteln wir Ihnen gerne ein entsprechendes Angebot 128 9 Anhang NRAD eg 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 909 Pinraster 2 54mm 9 1 2 Umgeb
22. auf einem Ausgabeger t n Steuerzeichen new line Steuerzeichen carriage return Wagenr cklauf auf einem Ausgabeger t Tabulator Zwischenraumzeichen Backslash Hochkomma Anf hrungszeichen 5 6 4 Unbenannte Stringkonstanten Konstante Strings oder Zeichenketten sind konstante Texte in zwei Anf hrungszeichen Zwischen den Anf hrungszeichen kann jedes darstellbare Zeichen stehen Soll der String selbst ein Anf hrungszeichen enthalten so mu dieses per Sondercode siehe oben ein gebettet werden Das gilt auch f r nicht darstellbare Steuerzeichen Der konstante String D iere hee AE enth lt also 9 Zeichen ein Anf hrungszeichen die Buchstabenfolge einen Zeichen Konstante in Dezimalform Konstante in Hexadezimalform A 165 a 97 w l 0 148 en 36 24 Tabulator 19 9 Tabulator die Buchstabenfolge xyz und noch ein Anf hrungszeichen 58 5 Programmiersprache 2 Onrao S Ree FS Das abschlie ende Anf hrungszeichen einer Stringkonstanten mu vor dem Zeilenende stehen l ngere Strings k nnen gebildet werden in dem zwei Stringkonstanten jeweils in Anf hrungszeichen hintereinander im Quelltext stehen Zwischen den Teilstrings d rfen beliebige Zwischenraumzeichen stehen auch Zeilenvorsch be abe xyz wird vom C2 Compiler verkettet zu abcxyz 5 6 5
23. dem 1 und 2 Befehl im obigen Beispiel Dann kann der measure Thread bereits neue Werte erfa t haben bevor der watch Thread wieder an die Reihe kommt Der watch Thread setzt seine Ausf hrung mit dem Laden von b und dem Aufruf von check fort An die Funktion check wird jetzt also ein a aus einem alten und b aus dem neuen Me zyklus bergeben Abh ngig davon was check konkret von a und b erwartet kann das zu einer schweren Fehlfunktion des Programms f hren Im ung nstigsten Fall l uft ein Programm mit einem potentiellen Aliasing Problem in der Testphase v llig problemlos wenn die Aliasing Bedingung sehr selten eintritt Zur Vermeidung von Konkurrenz und Aliasing Situationen m ssen Threads an bestimmten kritischen Stellen synchronisiert werden d h Threads m ssen gezwungen werden vor der weiteren Programmabarbeitung auf eine Art Freizeichen zu warten Bei Verf gbarkeit des Freizeichens mu der wartende Thread sofort ein Besetzt signalisieren um konkurrie rende Threads zum Warten zu zwingen Hat ein Thread den kritischen Programmbereich durchlaufen mu er das Besetzt zur cknehmen und das Freizeichen signalisieren Anderenfalls w rden die auf das Freizeichen wartenden Threads auf ewig blockiert bleiben Bei genauer berlegung der Problematik leuchtet ein da die Aktion testen ob Freizeichen wenn ja dann besetzten atomar sein mu d h nicht durch einen Threadwechsel unterbrochen werden darf
24. ein Ergebnistyp spezifiziert wer den function name typel namel returns type 66 5 Programmiersprache 2 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 function fx returns long OK function fx returns float OK function fx returns string Fehler function fx returns MyType Fehler In der Liste der formalen Parameter werden Typen und Namen der beim Aufruf zu ber gebenden Daten spezifiziert Mehrere Parameter sind jeweils durch ein Komma vonein ander getrennt Hat eine Funktion keine Parameter stehen nach dem Funktionsnamen nur die ffnende und schlie ende runde Klammer Als Parameter k nnen numerische Daten Strings oder Daten mit zusammengesetztem Typ bergeben werden Auch Arrays sind m glich Bei der bergabe von Arrays erfolgt keine Gr enangabe in den eckigen Klammern nach dem Parameternamen Beispiele Funktion mit einem Integerparameter und einem Integerergebnis function fx int x returns int Funktion mit einem Stringparameter function fx string s Funktion mit einem long Array und einem Integerparameter function fx long al int i Funktion mit einem benutzerdefinierten MyType Parameter function fx MyType t 67 ONRAD
25. einer einzigen Sprache verfa t z B einheitlich englischsprachig oder einheitlich deutschsprachig Bezeichner sind in derselben Landessprache wie die Kommentare zu formulieren 6 3 4 Ausdr cke Komplexe numerische Ausdr cke sind durch Klammersetzung und Leerzeichen so zu gestalten da Teilausdr cke optisch erkennbar sind 6 3 5 Funktionsdefinitionen 1 Die Definitionszeilen sind durch Kommentarzeilen gerahmt siehe Standardmodulquelltexte Zwischen diesen Kommentarzeilen steht nichts au er der Funktionsdefinition 2 Eine Definitionszeile beginnt mit einer Einr ckung von zwei Leerzeichen 3 Rechts und links der runden Klammern steht ein Leerzeichen z B function fx int param Bei Funktionen ohne Parameter entfallen die Leerzeichen innerhalb der run den Klammern z B function fx 4 Bei Funktionsdefinitionen mit mehreren Parametern steht nach jedem Komma in der Liste der formalen Parameter ein Leerzeichen z B function fx int a int b int 89 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 ee ee function getMaxTemp int devicelD int channel returns int ee 6 3 6 Threads 1 Die Definitionszeilen sind wie bei Funktionen durch Kommentarzeilen gerahmt 2 Threads stehen stets am Ende eines Modulquelltextes 6 3 7
26. in Anwenderprogrammen Verschiedene Programmteile k nnen quasi gleichzeitig und von einander unabh ngig abgearbeitet werden Dadurch lassen sich komplexe in der Applikation parallel und asynchron ablaufende Vorg nge auf einfache Weise behandeln Beispiel verschiedene Digitalports sollen st ndig berwacht werden bei Eintreten einer bestimm ten Kombination ist eine Pulsfolge mit vorgegebenem Timing auszugeben gleichzeitig sind st ndig einige A D Kan le zu berwachen und bei berschreitung von Grenzwerten soll ein Alarm ausgel st werden von der seriellen Schnittstelle werden in einem bestimm ten Rhythmus Datenrahmen erwartet die ausgewertet und beantwortet werden sollen ber den Drucker sollen Me werte ausgedruckt werden In Programmteilen die mit anderen Ger ten kommunizieren kann es Situationen geben in denen gewartet werden mu bis der Kommunikationspartner bereit f r den Datenempfang ist In einem Computersystem mit ausschlie lich sequentieller Abarbeitung des Programmes ist es praktisch unm glich in diesen Wartezust nden auf weitere Ereignisse zu reagieren So kann es passieren da ein Alarmzustand aufgrund einer ber temperatur nicht oder nicht rechtzeitig erkannt wird w hrend das 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 Betriebssyste
27. seiner Priorit t sofort an den n chsten Thread ab vgl yield Dadurch wird vermieden da Threads mit hoher Priorit t wartend das System blockieren Ein Thread wiederholt die wait Anweisung so lange bis der numerische Wert ungleich wird wait numerischer Ausdruck zB wait ports get 3 wartet auf High Pegel an Port3 5 9 5 Pausen In vielen Anwendungen ist es erforderlich da ein Thread seine Ausf hrung f r eine bestimmte Zeit unterbricht und danach automatisch weiterl uft Dazu gibt es in C2 die sleep Anweisung Nach dem Schl sselwort sleep folgt ein numerischer Ausdruck sleep numerischer Ausdruck zB sleep 1000 Der berechnete Wert des numerischen Ausdrucks bestimmt die Ruhepause des aktuellen Threads in Millisekunden Der Wert des Ausdrucks bleibt auf den int Bereich beschr nkt Gegebenenfalls nimmt die virtuelle Maschine eine Konvertierung vor Negative Pausenwerte von 1 bis 32768 werden als Werte von 65535 bis 32768 interpretiert Zweierkomplement Die Pr fung ob eine Pause beendet ist erfolgt mit jedem Zyklus in dem der Thread Rechenzeit erh lt In einer Anwendung mit sehr vielen Threads die mit hohen Priorit ten lange Umlaufzeiten nach sich ziehen kann die tats chliche Pause daher etwas l nger als urspr nglich spezifiziert werden 76 5 Programmiersprache 2 Onrao CE 1 Ist die Pause noch nicht vor ber dann gibt der aktuelle Thread die Programmausf hrung sofort an den n c
28. steht in einer eigenen Zeile vor diesen Anweisungen mit derselben Einr ckung wie diese Anweisungen 6 Kommentare sind in einer einzigen Sprache verfa t zB einheitlich englischsprachig oder einheitlich deutschsprachig Kommentare sind in derselben Landessprache wie die Bezeichner zu formulieren 88 6 Softwareentwicklung ENRAD 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 2 Bezeichner von Modulen Threads Funktionen und Variablen beginnen mit einem Kleinbuchstaben 3 Bezeichner von zusammengesetzten Datentypen beginnen mit einem Gro buchstaben 4 Bezeichner von Konstanten bestehen nur aus Gro buchstaben Unterstrichen und Ziffern 5 Bezeichner von Funktionen sollten weitestgehend mit einem Verb oder einer blichen Abk rzung eines Verbs beginnen z B get set put write init In l ngeren Bezeichnem sind einzelne Worte durch Unterstriche oder einzelne Gro buchstaben an Wortwechseln zu trennen z B getMaxTemp oder get max temp Die einmal gew hlte Schreibweise ist beizubehalten 7 Bezeichner sind in
29. und der Verst ndlichkeit sollten Quelltexte jedoch auch optisch korrekt sein Ein stilvoll und diszipliniert gestalteter Quelltext nach einheitlichen Richtlinien ist auch nach l ngerer Zeit und auch f r andere Programmierer lesbar und nachvollziehbar Formatierte Quelltexte enthalten in der Regel von Anfang an weniger Fehler Wenn sie Fehler enthalten ist deren Suche und Beseitigung einfacher an einem sauberen 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 Im Zweifel orientieren Sie sich bitte an der Formatierung der Standardmodule und Beispiele auf der CD zur C Control II Unit 6 3 2 Kommentare 1 Ein Programm soll Kommentare enthalten wenn das zur wesentlichen Verbesserung der Verst ndlichkeit f hrt 2 Ein Kommentar ist zu vermeiden wenn der Sinn von Anweisungen auch durch selbst beschreibende Bezeichner deutlich werden kann Kommentare sollen nicht trivial sein zB x 1 1 an x zuweisen 4 Zeilenendkommentare sollen zumindest f r Folgen von Anweisungen die nicht durch Leerzeilen getrennt sind linksb ndig untereinander stehen 5 Ein erl uternder Kommentar zu einer Folge von Anweisungen
30. zahlreiche interessante Hardwareressourcen wie z B acht 1Obit Analog Digitalwandlerports eine CAN Busschnittstelle eine asynchrone serielle Schnittstelle komfortable Timer II Unit Der Mikrocontroller verarbeitet Daten mit einer Breite von 16 Bit Adre raum umfa t 16MB Speicheradressen bestehen aus einem Segment Byte und einem Offset Word Die Kontrolle der umfangreichen Hardwareressouren des Controllers erfolgt ber Eintr ge in die Special Function Registers SFR Diese befinden sich in einem Bereich des ersten Speichersegments im internen RAM des Controllers Das System der C Control II Unit kapselt die zum Teil sehr komplexen Zugriffsmechanismen auf die Hardwareressourcen in relativ einfachen 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 SpeicherICs an den Controller Intern verf gt der Controller ber 64kB OTP ROM one time programmable einmalig programmierbar sowie 1 RAM inklusive Universal Register und Special Function Register Das interne RAM wird vom Betriebssystem der C Control II Unit ber einen Teil des ersten FLASH Segments gelegt Der interne OTP Bereich ist deaktiviert und nicht nutzbar Der gesamte Speicher ist vom System wie folg
31. 02 Detaillierte Definitionen und Anwendungsbeispiele finden Sie im Verlauf dieser Anleitung F metion 66 break STB LG byte 1 release thread capture 1 resume type CONSE al return wait continue returns while do run else shl yield Arithmetische Operatoren Bit atoren Operator Bedeutung Bedeutung Addition links schieben Subtraktion logisch rechts schieben Multiplikation Division Modulodivision Divisionsrest negatives Vorzeichen Bedeutung Bedeutung ist gleich nicht Bitinvertierung ist ungleich und ist g er und mit anschlie ender Bitinvertierung ist kleiner oder ist gr er oder gleich oder mit anschlieBender Bitinvertierung lt ist kleiner oder gleich exklusiv oder Detailierte Informationen zur Anschlu belegung finden Sie in Kapitel 3 3 ab Seite 22 li DND GND Raster 2 54 mm serial CAN e 2 R C Control II system e 04 2000 e 60 5 010 277 port IL contrast out 5V in 8 24V ss ala 82 LCD Zeichensatz
32. 105 105 105 105 105 106 106 106 107 107 107 107 108 108 108 108 109 109 109 109 110 II Unit 7 7 77 712 773 7 4 78 7 8 1 78 2 78 3 78 4 78 5 79 79 1 79 2 793 79 4 79 5 79 6 79 7 7 10 7 10 1 7 10 2 7 10 3 7 10 4 7 10 5 7 10 6 7 11 ZA1 1 711 2 7 11 3 7 11 4 711 5 7 11 6 7 11 7 7 12 712 1 2 F llen mit einem Wert Kopieren Speichern von Zahlenwerten in einem Bytepuffer Lesen von Zahlenwerten aus einem Bytepuffer 2 Setzen der Zeitbasis Setzen des Portmodus Einstellen der Periodenl nge PLM Ausgabe Ausgabe von Tonfrequenzen ports c2 Abfrage von Digitalports Setzen von Digitalports Umschalten und Pulsen Deaktivieren von Ports Pulsz hlung Frequenzmessung Analog Digital Wandlung str c2 String leeren Stringl nge ermitteln String mit Zeichen f llen Ausgabe in einen String Formatierte Ausgabe in einen String Ausgabe einer Bitmaske 2 Systemtimer Uhrzeit Status der DCF77 Synchonisation Datum Sommerzeitflag Aufruf von Systemfunktionen kk Anwenderdefinierte Interruptroutinen vetere twb c2 Initialisierung 10 110 110 111 111 112 112 113 113 113 113 114 114 115 116 116 117 117 117 118 118 118 118 118 119 119 120 121 121 121 122 122 123 123 124 125 125 Inhalt ONRAD 712 2 Abfrage auf Empfang des Antwortrahmens 125 712 3 Daten bertragung 125
33. 7 13 constant c2 und vmcodes c2 126 8 Systemprogrammierung rk 127 8 1 1 TASKING C C Tools 127 8 1 2 Erg nzungen der virtuellen Maschine und nderungen am Betriebssystem 127 8 1 3 Implementierung eines eigenen Betriebssystem 128 9 Anhang 129 9 1 Technische Daten 129 9 1 1 Mechanik 129 912 Umgebungsbedingungen 129 9 1 3 Versorgungsspannung 129 9 14 Ports 129 92 Literaturverzeichnis 130 II Unit _ 1 Einleitung ee I Einleitung C Control ist ein kompakter Steuerungscomputer 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 eingesetzt Dort bernimmt der Controller wichtige Steverungsaufgaben der Bordelektronik C Control II bietet Ihnen diese hochmoderne Technologie zur L sung Ihrer Steuerungsprobleme Sie k nnen analoge Me werte und Schalterstellungen erfassen und abh ngig von diesen Eingangsbedingungen entsprechende Schaltsignale ausgeben z B f r Relais oder Stellmotoren In Verbindung mit einer DCF77 Funkuhraktivantenne wei C Control 1 was die Stunde geschlagen hat und kann pr zise Schaltuhrfunktionen ber nehmen Verschiedene Hardware Schnittstellen und Bussysteme erlauben die Vernetzung von C Control II mit Sensoren Aktoren und anderen Steuerungssystemen Wir wollen unsere Tec
34. Definition von benannten Konstanten Benannte Konstanten werden stets global auf Modulebene definiert Sie sind nach der Definition ber die Angabe des Modulbezeichners im gesamten Programm verf gbar vgl globale Variablen Lokale Konstanten von Threads und Funktionen gibt es nicht Die Definition einer benannten Konstante beginnt stets mit dem Schl sselwort const Anschlie end folgen der Bezeichner ein Zuweisungsoperator sowie ein konstanter Ausdruck und abschlie end ein Semikolon const Name konstanter Ausdruck z B const A 1000 const B A 100000 const C 17 4 Der Datentyp einer Konstanten wird vom Compiler automatisch bestimmt Es wird der maximal notwendige Typ verwendet F r A im obigen Beispiel ist maximal ein int Datentyp notwendig jedoch ein long und kann nur durch einen float Typ dargestellt werden 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 Unit laden benannte und unbenannte Byte und Integerkonstanten wie oben A immer immediat d h eingebettet in den Operationscode F r A wird daher kein Platz im Konstantenspeicher belegt 59 II Unit Neben numerischen Konstanten k nnen auch Stringkonstanten benannt werden Statt des konstanten numerischen Ausdrucks muB dann eine Zeichenkette in Anf hrungszeichen nach dem Zu
35. Die Funktion put sendet ein einzelnes Byte ber eine serielle Schnittstelle 7 2 10 Senden von Datenrahmen send byte Bir IT ine I Die Funktion send sendet eine Anzahl von Bytes ber die serielle Schnittstelle Das Senden erfolgt im Hintergrund D h die Funktion bergibt lediglich die Adresse des Sendepuffers an das System und startet die bertragung Daher mu die Bytepuffer variable statisch sein globale Variable oder Variable eines Threads buf Referenz auf eine statische Bytepuffervariable length L nge des Puffers 102 7 Standardmodule 73 12 2 ber die Funktionen des Moduls i2c c2 kann ein Programm auf ICs zugreifen die am Bus der C Control II Unit angeschlossen sind Eine typische Anwendung ist der Anschlu serieller EEPROMs zur Aufzeichnung von Daten Der PC Bus der C Control II Unit ist als Single Master Bus implementiert D h die Takt signale die Start und Stopbedingungen werden stets von der C Control II Unit erzeugt 73 1 Initialisierung funetion init Die Funktion init initialisiert den PC Bus Da auch das LCD der C Control II Unit am Bus angeschlossen ist wird die Initialisierung bereits automatisch beim Reset des Systems durchgef hrt und mu in der Regel nicht im Anwenderprogramm vorgenommen werden 73 2 Start der bertragung function start byte device returns int Jeder Zugriff auf ein IC IPC Bus erfolgt durch das Erzeugen der Startbedingung mit
36. I Unit Beispiele type Position int x int y type MyType Position pos float value string text Vorteile eigener Typen sind zB die bessere Lesbarkeit eines Programmes und die einfachere bergabe zusammengeh riger Daten an Funktionen also zB function fx MyType t statt function fx int xpos int ypos float value string text 5 5 Variablen 5 5 1 Definition von Variablen Variablen dienen zur Zwischenspeicherung von Daten w hrend des Programmablaufes Vor der ersten Verwendung im Quelltext mu eine Variable durch Angabe des Datentyps und des Bezeichners definiert werden Typ Name 50 5 Programmiersprache 2 ENRAD LL 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 Namel Name2 z B long 7 Definierte Variablen k nnen nachfolgend in Ausdr cken und Zuweisungen verwendet werden z B 18 8 x 5 5 2 Definition und Anwendung von Variablen zusammengesetzter Datentypen Die Definitionsyntax entspricht der bereits bekannten Syntax f r die Definition von Variablen mit Standardtypen Mit dem Beispiel aus 5 4 3 l t sich eine Variable vom zusammengesetzten Typ MyType wie folgt definieren MyType t Danach kann auf die einzelnen Felder der Variablen t durch Anh ngen eines Punktes und des jeweiligen Fel
37. Konstantenspeicher Am Anfang des Konstantenspeichers sind die Initialisierungswerte f r jeden Thread des Anwenderprogramms abgelegt Dann folgen konstante Zahlenwerte Tabellen und Strings die im Programm verwendet werden Der Zugriff auf den Konstantenspeicher durch das Anwenderprogramm erfolgt word weise durch spezielle Bin rcodes und einen 16bit Offset 4 4 5 Datenspeicher Der dritte Speicherblock ist der Datenspeicher der sich im externen SRAM der C Control II Unit befindet Von den 64kB stehen ca 60kB f r Daten des Anwenderprogramms zur Verf gung abz glich des Speicherbedarfes f r den Stapelprozessor Die Adressierung der Daten erfolgt byte weise ber einen 16bit Offset 41 II Unit 4 4 6 Stapelprozessor Die virtuelle Maschine der C Control Unit arbeitet als Stapelprozessor Sie implementiert nicht wie viele Mikrocontroller und Mikroprozessoren spezielle Rechenregister oder einen Akkumulator Statt dessen werden alle Operanden auf einen Stapel Stack geladen Die Operationen des virtuellen Prozessors manipulieren stets den obersten Wert auf dem Stapel oder verkn pfen die zwei obersten Werte zu einem Ergebnis Speicheroperationen nehmen einen Wert vom Stapel und legen ihn an einer Adresse im Datenspeicher ab Der Stapelprozessor der C Control Unit unterst tzt Rechenoperationen mit vorzeichen behafteten 16bit und 32bit Integerwerten sowie mit 64bit Flie kommazahlen Bytes wer den
38. RYSTAL 2 22 RSTIN DI PWR c3 10u DIG_GND RSTOUT DIG_GND DIG_GND d Best ckungsalternative Quarz Oszillator DIG_GND CO06610 5 0 76 20 ES 279 ADIO 16 N AD8 2 NS Nr TMS29F400 m 1 OO 07 1C55257DFL ADIO 15 Watchdog U6 TC55257DFL 74HCTOO 7 R6 V DIG_GND BSL Bootstrap Onrap Conrad Electronic GmbH D 92240 Hirschau C Conitrol II CPU ROM RAM Page 1 3 final release 2000 06 02 PCA82C250 DIG_PWR C6 100n C5 100n DIG_PWR O H 4 4 _VAREF DIG_GND 7 100n 5 232 171181 MAX232 Rs Slope ADR292GR REFI98GS DIG_PWR c8 DIG_GND 100n 100 100n 100n 100n 100n 100n 100n 100n 100n DIG_GND BYV10 40 R25 BYVIO 40 1 8k 1 MC34063 DIG_GND 100uF 35V R9 R26 c17 1 2k 1 3 6k 1 CIS C 10k 1 220uF 220uF I 10nF I DIG GND DIG HD DIG GND DIG_PWR 16 ENRAD CAN 232 Page 2 3 DIG Conrad Electronic GmbH final release D 92240 Hirschau 2000 06 02 DIG_GND DIG_GND DIG_GND DIG_GND 4 2 20 DIG_PWR DIG_PWR DIG_GND P DIG_GND Onrap Conrad Electronic GmbH D 92240 Hirschau C Conitrol II Anschl sse Page final release 2000 06
39. Schnittstelle swcom An den Digitalports PIH und PIH 2 kann das Betriebssystem softwarem ig eine zwei te asynchrone Schnittstelle emulieren Lesen Sie dazu die Kapitel 3 3 6 und 72 3 3 8 3 Zweidrahtbus Conrad Electronic hat eine Familie von Sensor und Aktuatormodulen entwickelt mit denen ein Steuercomputer wie die C Control Unit um zus tzliche Ein und Ausgabefunktionen erweitert werden kann Die Besonderheit dieser Module ist die einfache Vernetzung ber ein Zweidrahtbussystem englisch two wire bus abgek rzt auch 2W Bus 2WB oder TWB Bei diesem Bussystem werden digitale Daten ber eine 12V Gleichspannungs leitung bertragen Diese Leitung bernimmt gleichzeitig die Versorgung der Module Die Busstruktur ist eine Baumstruktur 12 V Netzteil Sensor 2 Sensor 4 C Control Il Sensor 5 Zur Zeit stehen folgende 2W Bus Module zur Verf gung Digitalportmodul 4 zus tzliche I O Ports Digitalportmodul mit Leistungsausg ngen 4 Ports bis max 2 25V Frequenzmesser Z hlermodul 1 Eingang bis 30kHz Pulsfrequenz integrierter Reed Kontakt zur Tiggerung mit einem externen Magneten z B zur berwachung von T ren und Fenstern Kombimodul 1 x A D Wandler 10bit 2 5V und 2 x digital I O Kombimodul 1 x Temperatursensor 23 C 100 C 0 125K Aufl sung und 2 x digital I O Infrarotsender empf nger zur Fernsteuerung von Ger ten durch C Control oder zur
40. aler Variablen spart jedoch etwas Speicherplatz Typschl sselwort Speicherplatzbedarf f r Variablen 0 255 32768 32767 2147483648 147483647 7 10 1 7 10 5 4 2 Zeichenketten Strings Die h ufigste Zeichenkettenoperation in Steuerungssystemen ist das Zusammensetzen von kurzen Texten und Me werten f r die Anzeige auf einem Display oder die Ausgabe auf einem Drucker Grundlage f r einige einfache Stringverkettungen und funktionen ist der Typ string Eine Stringvariable bietet Platz f r maximal 30 Zeichen und belegt stets 32 Bytes im Speicher auch wenn die tats chlich gespeicherte Zeichenkette k rzer als 30 Zeichen ist Ausgaben die l nger als 30 Zeichen sein sollen k nnen in Bytearray Variablen aus einzelnen Substrings zusammengesetzt werden siehe Bibliotheksmodul 2 5 4 3 Zusammengesetzte Datentypen Zur Kapselung komplexer Datenstrukturen in einem Typ k nnen aus Standardtypen byte string und anderen zuvor definierten Typen zusammengesetzte Datentypen gebildet werden Dazu steht nach dem Schl sselwort type der Bezeichner des neuen Datentyps In geschweiften Klammern folgen die Definitionen der einzelnen Felder des Typs Die Definition eines Feldes besteht aus dem Schl sselwort oder Bezeichner eines zuvor bekannten Typs sowie dem Bezeichner des Feldes Mehrere Felder sind jeweils durch ein Semikolon voneinander getrennt 49 I
41. ameter tone bestimmt einen Ton im Bereich der T ne a bis Ein Ton mit der Frequenz von 440Hz ist der Kammerton o der Ton einer Stimmgabel Ein negativer tone Wert schaltet den Ton ab und legt den PLM Port auf konstanten Lowpegel Eine Anzahl von tone Konstanten ist in der Moduldatei 2 definiert Vor der 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 c 114 7 Standardmodule _ 6 Zwischen den digitalen Prozessorports und den Portnummer Parametern der Funktionen dieses Moduls besteht folgender Zusammenhang Nummern der Einzelports Nummern der Nibbleports Nummern der Byteports 0 79 1 Abfrage von Digitalports Digitalports k nnen einzeln in Vierergruppen Nibbles byteweise und im Ganzen als ein l bit Integer Word abgefragt werden Das Ergebnis der Abfrage ist immer ein Integerwert der als Bitmaske den Portzustand widerspiegelt 1 Bit Port high O Bit Port low Beachten Sie folgende Besonderheit FS Die Abfrage eines einzelnen Digitalports liefert wie eine Vergleichsoperation das Ergebnis 1 Port ist high od
42. auf Highpegel function set int number int state function setn int number int state function setb int number int state function setw int number int state 79 3 Umschalten und Pulsen Nachdem ein Port mit einer set Funktion initialisiert wurde stehen folgende Funktionen zur Verf gung function toggle int number function pulse int number Die Funktion toggle invertiert einen Port Die pulse Funktion gibt einen Nadelpuls an einem Port aus zweimaliges Invertieren kurz hintereinander Das kann zum Beispiel als clock Signal f r digitale Schaltkreise mit Triggereingang benutzt werden 116 7 Standardmodule Onrao S te Beide Funktionen beziehen sich jeweils auf einen einzelnen Digitalport dessen Nummer als Parameter bergeben wird 79 4 Deaktivieren von Ports Wird ein Digitalport nach Aufruf einer set Funktion als Ausgang betrieben sind im Mikrocontroller spezielle Transistorstufen aktiviert die am Port einen Strom treiben Port high oder gegen Masse ziehen k nnen Port low In manchen Anwendungen sollen Digitalports als Ausgang und dann wieder als Eingang betrieben werden Dazu m ssen die Treiberstufen abgeschaltet deaktiviert werden Das erfolgt durch Aufruf folgender Funktionen jeweils f r einen Einzelport Nibbleport Byteport oder Wordport E function deact int number E function deactn int number 45 function deactb int
43. aufzeit 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 Beim Verlassen einer Funktion endet der Lebenszyklus einer lokalen Variable Beim Wiedereintritt in diese Funktion oder dem parallelen Aufrufen der Funktion durch einen anderen Thread ist der Wert einer lokalen Variable stets unbestimmt Eine Sonderform stellen lokale Variablen von Threads dar Da der Speicherkontext von Threads w hrend des gesamten Programmlaufes bestehen bleibt auch f r angehaltene Threads existieren die lokalen Variablen eines Threads quasi statisch Ein Bytearray k nn te somit auch als Pufferspeicher f r Daten bertragungen verwendet werden siehe Bibliotheksmodul hwcom c z B thread tx byte buf 48 Bei der Vergabe von Namen f r lokale Variablen ist zu beachten da sie eventuell globale Bezeichner desselben Moduls verdecken Will man dann auf gleichnamige glo bale Bezeichner zugreifen mu zus tzlich der Modulname spezifiziert werden als w rde sich der globale Bezeichner in einem anderen Modul befinden 55 II Unit z B in Modul oc int 1 function fx int 1 i 0 lt lokales i a i 0 lt globales i 5 6 Konstanten 5 6 1 Benannte und unbenannte Konstanten Unbenannte Konstanten werden sehr h uf
44. automatisches Starten von Anwenderprogrammen Download von Anwenderprogrammen und anderen Host Befehlen Virtuelle Maschine Grundlagen Bin rcodeinterpreter Multithreading Programm und Konstantenspeicher Datenspeicher Stapelprozessor Systemschnittstelle Die Programmiersprache C2 Einleitung Projekte und Module Syntax Grundelemente Kommentare Zwischenr ume Bezeichner Anweisungen und Anweisungsbl cke Ausdr cke Schl sselworte Datentypen Numerische Datentypen Zeichenketten Strings Zusammengesetzte Datentypen Variablen Definition von Variablen Definition und Anwendung von Variablen zusammengesetzter Datentypen Definition und Indizierung von variablen Arrays Initialisierung Globale und lokale Variablen Konstanten Benannte und unbenannte Konstanten Unbenannte Zahlenkonstanten Unbenannte Zeichenkonstanten 37 37 38 38 38 39 40 41 41 42 42 43 43 43 44 44 45 45 46 47 48 48 48 49 49 50 50 5 52 53 54 56 56 57 57 Inhalt 5 6 4 5 6 5 5 6 6 5 7 5 7 1 5 72 5 73 5 74 5 7 5 5 7 6 5 8 5 8 1 5 8 2 5 8 3 5 3 4 5 8 5 5 8 6 5 8 7 5 9 5 9 1 5 9 2 5 9 3 5 9 4 5 9 5 5 9 6 5 10 5 10 1 5 10 2 5 10 3 5 10 4 5 10 5 5 10 6 5 10 7 5 10 8 Unbenannte Stringkonstanten Definition von benannten Konstanten Benannte konstante Arrays Operatoren Rangfolge Arithmethische Operatoren Bitschiebeoperatoren Vergleichsoperatoren Logische Operatoren und Bitmanipula
45. beitung bei Auftreten des Interrupts drei M glichkeiten Die 124 7 Standardmodule ENRAD LL gew nschte Variante bestimmen Sie durch den Parameter mode HOOK REPLACE 0 an Stelle der normalen Interruptbehandlung des Systems HOOK BEFORE 1 vor der normalen Interruptbehandlung des Systems HOOK AFTER 2 nach der normalen Interruptbehandlung des Systems gt Das Aktivieren eigener Interruptroutinen stellt einen erheblichen Eingriff in das Gesamtsystem dar und hat entscheidenden Einflu auf dessen Zeitverhalten Interruptroufinen m ssen so kurz wie m glich gehalten werden Eine Interruptroutine f r ein Ereignis kann durch Aufruf der Funktion unhook deaktiviert werden function unhook int event 7 12 twb c2 7 12 1 Initialisierung Die Initialisierung der 2W Bus Schnittstelle erfolgt mit der Funktion function init Eventuell konkurrierende Portfunktionen werden deaktiviert 7 12 2 Abfrage auf Empfang des Antwortrahmens Die Funktion funetion rxd 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 125 II Unit Datenrahmen bertragen Die Bedeutung der einzelnen Bytes entnehmen Sie bitte den Anleitungen zu den 2W Bus Modul
46. ben geben Sie uns nach M glichkeit eine Skizze Ihrer Anschlu schaltung als angeh ngte Bilddatei im JPG Format sowie den auf das Problem reduzierten Teil Ihres Programmqauelltextes maximal 20 Zeilen Bitte haben Sie Verst ndnis daf r da wir keine Quelltexte analysieren die nicht nach den in dieser Anleitung empfohlenen Stilregeln formatiert sind siehe 6 3 Sollten Sie Interesse an einer kundenspezifischen Softwarel sung haben vermitteln wir Ihnen gem ein entsprechendes Angebot Weiterf hrende Informationen und aktuelle Software zum Download finden Sie auf der C Control Homepage im Internet unter www c control de 3 Hardware Onrao 3 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 Bei Fragen zu Details konsultieren Sie bitte diese Datenbl tter Sie finden diese im Internet als PDF Dateien einige davon auch auf der Utility CD 3 1 entf llt 3 2 Schaltungstechnik intern 3 2 1 Mikrocontroller Der Mikrocontroller 164 stammt aus der C166 Familie von Infineon Technologies fr her SIEMENS Halbleiter und ist der kleine Bruder des C167 Im 8Opoligen QFP Geh use bietet der C164CI
47. dbezeichners zugegriffen werden t value 82 5 So sind auch die Felder verschachtelter Datentypen zu erreichen z B t pos x 31 51 II Unit 5 5 3 Definition und Indizierung von variablen Arrays C2 unterst tzt die Definition von variablen eindimensionalen Arrays Bei der Definition folgt dann nach dem Variablenbezeichner in eckigen Klammern 1 ein konstanter Ausdruck Der Ergebniswert des Ausdrucks legt die Anzahl der Arrayelemente fest Typ ArrayName konstanter Wert zB float coeff 10 Der ben tigte Speicherplatz errechnet sich aus der Gr e eines einzelnen Elements multipliziert mit der Anzahl der Elemente Also werden f r das float Array im obigen Beispiel 80 Bytes belegt 10 8 Bytes Der Zugriff auf einzelne Arrayelemente in Ausdr cken und Zuweisungsanweisungen und erfolgt ber einen Indexterm in eckigen Klammern Der Indexterm kann ein beliebiger auch nichtkonstanter numerischer Ausdruck sein Sein Wert wird zur Programmlaufzeit berechnet z B yli 1 x i coef f i 1 x i 1 FS Der Index ist nullbasiert D h der Indexwert bezieht sich auf das erste Element der Wert 1 auf das zweite usw FS W hrend des Programmlaufes erfolgt keine berpr fung des Index 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 de
48. de Funktion zum Lesen der Werte aus einem Bytepuffer function getint byte src int pos returns int function getlong byte src int pos returns long function getfloat byte src int pos returns float F r alle drei Funktionen ist sre Referenz auf eine Bytepuffervariable pos Leseposition im Puffer 7 8 plm c2 7 8 1 Setzen der Zeitbasis Es k nnen acht veschiedene Zeitbasiswerte eingestellt werden Das Einstellen erfolgt mit der Funktion sert imebase function settimebase int channel int timebase channel PLM Kanal 1 2 timebase _Zeitbasis Die bergebenen Zahlenwerte ergeben folgende Zeitbasen Beachten Sie bitte da channel O und channel 1 eine gemeinsame Zeitbasis haben 112 7 Standardmodule OnrAD Zeitbasis Dauer eines Ticks BASE_400 0 400 ns BASE_800 1 800 ns BASE_1600 2 1 6 us BASE_3200 3 3 2 us BASE_6400 4 6 4 us BASE_12800 5 128 us BASE_25600 6 25 6 us BASE_51200 7 51 2 us 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 Das Einstellen des Modus erfolgt mit der Funktion setmode function setmode int channel int mode channel PLM Kanal 1 2 mode Portmodus 0 digital 1 push pull Transistorstufe 7 8 3 Einstellen der Periodenl nge Das Einstellen der Pe
49. dierung der Datenrahmen und stellt die interne Uhr des Systems Der kann gleichzeitig zur Messung von Pulsfrequenzen von 100Hz bis ca 30kHz 32 _3 Hardware ONRAD benutzt werden ebenso der zweite Frequenzme pin Die Frequenzmessung erfolgt nach dem Prinzip der Pulsz hlung in einer Torzeit von einer Sekunde Dadurch ergeben die Z hlwerte direkt eine Frequenz in Hz Weitere Hinweise zu Funkuhrempfang und Frequenzmessung finden Sie in den Kapiteln 711 und 79 6 3 3 11 PLM Ports Die C Control II Unit verf gt ber drei Ports Kan le zur Ausgabe pulsl ngenmodulierter Signale PLM1 und BEEP PLM2 Diese k nnen zur D A Wandlung zur Ansteuerung von Servomotoren im Modellbau oder zur Ausgabe von Tonfrequenzen benutzt werden Ein pulsl ngenmoduliertes Signal hat eine Periode von N sogenannten Die Dauer eines Ticks ist die Zeitbasis Setzt man den Ausgabewert eines PLM Ports auf X dann h lt dieser f r X Ticks einer Periode Highpegel und f llt f r den Rest der Periode auf low Als Zeitbasen k nnen 8 verschiedene Zeiten von 400ns bis 51 2us eingestellt werden Die Periodenl nge kann von bis 65535 variiert werden Periodenl nge N Ticks Ausgabe BIS Zeitbasis in Nanosekunden Die PLM Kan le und 1 haben eine gemeinsame Zeitbasis und Periodenl nge F r Kanal 2 kann eine von den Kan len O und 1 unabh ngige Zeitbasis und Periodenl nge ein geste
50. dow liefert den Wochentag Dabei steht O f r Sonntag 1 f r Montag usw bis 6 f r Samstag Stellen Sie in Ihrem Programm vor der Abfrage der einzelnen Datumswerte sicher da nicht zwischendurch ein Tageswechsel Mitternacht auftreten kann vgl Quellcode der Funktion gett 7 11 5 Sommerzeitflag Die Funktion function dst returns int gibt die Information zur ck ob es sich beim aktuellen Systemdatum um ein Datum in der Sommerzeitperiode handelt entspricht der Normalzeit Winterzeit 1 bedeutet Sommerzeit 7 11 6 Aufruf von Systemfunktionen kk Aus C2 Programmen heraus k nnen beliebige Funktionen des Betriebssystems oder anwenderdefinierte Assembler C Routinen aufgerufen werden Dazu gibt es im Modul system c2 die Funktion function call 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 Voraussetzung f r den Aufruf von call und jump ist da Sie jeweils die Adresse seg ment offset der Funktion kennen Die Adressen Ihrer eigenen Assembler C Routinen entnehmen Sie bitte den Ausgaben Ihrer Assembler C Entwicklungstools Ein Beispiel zur Anwendung von call finden Sie auf der Utility CD 123 II Unit 7 11 7 Anwenderdefinierte Inter
51. dwarezugriffe zB 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 Die Befehlscodes zum Zugriff auf Hardwareressourcen werden den Anwender programmen ber inline Funktionen in den C2 Systemmodulen zur Verf gung gestellt 42 5 Programmiersprache 2 ENRAD 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 Alle System und Spezialfunktionen werden ber Bibliotheksmodule zur Verf gung gestellt und k nnen in Projekte eingebunden wer den Die Projektarbeit in C2 in Verbindung mit der Integrierten Entwicklungsumgebung ist wesentlich einfacher als in C C2 bietet alle M glichkeiten die zur strukturierten Programmierung ben tigt werden Selten verwendete besonders gef hrliche und schwer verst ndliche Sprachkonstrukte von C wurden weggelassen Inhalt dieses Kapitels ist die systematische Beschreibung der Programmiersprache C2 in Form einer Referenz Nach einem berblick ber die Syntaxelemente folgt eine ausf hrli che Darstellung aller Operatoren Typen
52. e mu einmalig in das Modul bertragen werden Ein Beispielprogramm zur Einstellung der 2W Bus Moduladressen finden Sie auf der CD zur C Control II Unit 3 3 8 4 Druckerschnittstelle der C Control II Unit kann ein Drucker angeschlossen werden wenn sich dieser zeichenweise im klassischen ASClIl Modus ansteuern l t Problemlos sollten sich Nadeldrucker verwenden lassen Tintenstrahl und Laserdrucker arbeiten in der Regel sei tenweise Die Ausgabe einer Seite erfolgt dann oft erst nach Empfang des Seitenvorschubzeichens Einige neue Drucker sind auf die Zusammenarbeit mit grafischen Betriebssystemen spezialisiert sogenannte GUl Printer und ben tigen zur Ansteuerung besondere Treiber Diese Drucker eignen sich nur bedingt zur Verwendung mit der C Control II Unit den Druckertreiber f r C Control II m ten Sie selbst implementieren Bitte haben Sie Verst ndnis da es Conrad Electronic aufgrund der Vielzahl der existierenden Druckermodelle nicht m glich ist in jedem Fall eine Aussage zu treffen welcher Drucker direkt an der C Control II Unit betrieben werden kann und welcher nicht Zum Anschlu eines Druckers an die C Control II Unit verbinden Sie folgende Pins mit denen einer 25poligen SUB D Buchse 31 II Unit Signal C Control II Pin SUB D 25 Pin Datenbit 0 PILO 2 Datenbit 1 PILI 3 Datenbit 2 PIL2 4 Datenbit 3 PIL3 5 Datenbit 4 PIL4 6 Datenb
53. eibung von Buchstaben werden unterschie den Abc abc sind verschiedene Bezeichner C2 Schl sselworte sind als Bezeichner nicht zul ssig FS Jeder Bezeichner mu dem Compiler vor seiner ersten Verwendung bekannt sein D h er mu weiter oben im aktuellen Modulquelltext oder in einem vorher bersetzten Modul definiert sein Bezeichnern die in einem anderen Modul zuvor definiert sind mu 45 II Unit ohne Zwischenraum der Modulname und ein Punkt vorangestellt werden Beispiel Funktion definiert in Moduldatei oc function fx Er Aufruf der Funktion weiter unten in a c2 Aufruf der Funktion in einem anderen Modul in der Modulliste des Projektes nach 2 a ix Auf alle Bezeichner von globalen Variablen benannten Konstanten zusammengesetzten Datentypen Funktionen und Threads eines Modules kann in nachfolgenden Modulen auf die hier beschriebene Weise zugegriffen werden 5 3 4 Anweisungen und Anweisungsbl cke Anweisungen sind die Grundbausteine eines Computerprogramms Folgende Anweisungsformen werden in C2 unterschieden Variablendefinition Konstantendefinition Zuweisung Funktionsaufruf Programmsteueranweisung Eine Anweisung kann sich ber eine oder auch ber mehrere Zeilen erstrecken Nach jeder Anweisung mu ein Semikolon stehen z B int a 123 46 5 Programmiersprache 2 ENRAD LL A
54. em gegen die St raussendung Conrad Electronic geht nicht davon aus da die C Control II Unit in Applikationen Einsatz findet die derartige hohe bertragungsraten erforderlich machen Folgende Zeichnung zeigt die Vernetzung von 3 C Control II Units ber den CAN Bus CC2 UNIT CC2 UNIT CC2 UNIT l 2 3 CAN Drossel Stichleitung Der Anschlu einer C Control II Unit erfolgt ber die Pins CANH und CANL Die digitalen Signale an den Pins CAN_Tx und d rfen nur zu Diagnosezwecken benutzt werden Einen berblick ber die verf gbaren Funktionen zur Programmierung einer der CAN Applikation bekommen Sie in Kapitel 71 35 II Unit 4 Betriebssystem 4 1 berblick Das Betriebssystem der C Control II Unit bernimmt das gesamte Interrupt Handling die Konfiguration des Mikrocontrollers nach dem Reset das laden von Anwender programmen in den FLASH Speicher sowie den Start und die Ausf hrung von Anwender programmen W hrend des Programmablaufes steuert das System alle Ein und Ausgabeoperationen im Hintergrund der Anwendung Ein wichtiger Teil des Systems ist die virtuelle Maschine siehe unten zur Ausf hrung von C2 Programmen 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 Seg
55. en und dem Modem function io byte buf returns int Die Funktion io erwartet als Parameter eine Referenz auf ein 8 Byte langes Array Ihr Programm mu die an den 2W Bus zu sendenden Informationen dort eintragen z B die Adresse des angesprochenen Moduls das Kommando und eventuelle Datenbytes Die Funktion io bertr gt diesen Bytepuffer und wartet auf den Empfang des Antwortrahmens Dieser Antwortrahmen wird in den bergebenen Bytepuffer buf bertragen Der R ckgabewert der Funktion ist 1 bei erfolgreicher Daten bertragung und O im Fehlerfall das Modul hat nicht geantwortet Beachten Sie bitte da Sie in jedes 2W Bus Modul vor der eigentlichen Anwendung eine eindeutige Adresse bertragen m ssen lesen Sie dazu die Anleitungen zu den 2W Bus Modulen und dem Modem Einige dieser Anleitungen hatten ihren RedaktionsschluB vor Erscheinen der C Control II Unit Der Text der Anleitungen enth lt daher keine expliziten Hinweise auf C Control Il 7 13 constant c2 und vmcodes c2 Das Modul constant enth lt einige allgemeine Konstanten die im Quelltext selbst betrachtet werden k nnen Das Modul vmcodes listet alle Operationscodes der virtuellen Maschine auf Eine Dokumentation der Codes ist nicht Bestandteil dieser Anleitung und ist zur Anwendungsprogrammierung der C Control II Unit nicht erforderlich 126 8 Systemprogrammierung Onrao 8 Systemprogrammierung 8 1 1 TASKING Tools Das Betriebssystem de
56. enn die Rangfolge es nicht erfordern w rde kann eine zus tzliche Klammersetzung um Teilausdr cke die Lesbarkeit des Quelltextes erh hen z B x gt 10 amp x lt 20 statt x gt 10 amp x lt 20 6l II Unit Rangfolge der Operatoren in C2 Rang _ Operator 8 7 negatives Vorzeichen not 6 7 mod 5 A lt lt shl gt gt shr 3 1 gt lt gt lt 2 amp and 1 amp nor S Zu einigen Operatoren existiert neben einem Symbol eine alternative Schl sselwortform zB stehen und mod f r die Modulodivision W hlen Sie selbst welche Form Sie bevor zugen das Ergebnis bleibt gleich 5 7 2 Arithmetische Operatoren Bedeutung Beispielausdruck Ergebnis 1 1 Addition 2 Subtraktion 1 Multiplikation 6 Division 2 4 4 5 mod Modulodivision Divisionsrest 2 2 0 2 negatives Vorzeichen 2 5 7 3 Bitschiebeoperatoren Operator Bedeutung Beispielausdruck Ergebnis lt lt shl links schieben 1 lt lt 1 2 3 shl 2 12 gt gt shr logisch rechts schieben L gt gt I 0 5 shr 2 1 1 shr 1 32767 long 1 shr 1 2147483647 62 5 Programmiersprache 2 5 7 4 Vergleichsoperatoren O ONRAD Vergleichsoperatoren liefern den Wert 1 minus 1 nicht 11 falls der Ausdruck wahr ist Ist der Ausdruck falsch wird das Vergleichsergebnis Der Wert 1
57. entspricht hexadezimal dem Integerwert OxFFFF bzw dem OxFFFFFFFF Operator Bedeutung ist gleich Beispielausdruck Ergebnis ist ungleich ist g er ist kleiner ist gr er oder gleich 5 7 5 Logische Operatoren und Bitmanipulationen ist kleiner oder gleich In C2 sind logische Verkn pfungen immer Bitoperationen Es wird nicht wie beispielswei se in C C in Bit AND und logisches AND unterschieden Operator Bedeutung nicht Bitinvertierung Beispielausdruck Ergebnis 63 II Unit Operator Bedeutung Beispielausdruck Ergebnis amp and und 1 amp 1 1 1 and 0 0 14 amp 3 2 1 lt 2 amp 2 lt 3 1 1 lt 2 amp 3 lt 2 0 amp und mit anschlie ender Bitinvertierung 1 18 1 2 1 nand 0 14 amp 3 _3 12 1812 0 1 lt 2 amp 3 lt 2 1 or oder 1 1 l 1 or 0 1 0 or 0 0 14 or 1 15 1 lt 2 2 lt 3 Sch 122 1132 1 2 lt 1 3 lt 2 0 oder mit anschlie ender Bitinvertierung 1 4 4 2 1 0 2 nor 0 1 14 nor 1 16 1 lt 2 2 lt 3 0 1 lt 2 3 lt 2 0 2 lt 1 1132 1 exklusiv oder 0 1 xor 0 0 0 0 14 3 3 1 lt 2 2 lt 3 0 1 lt 2 3 lt 2 1 2 lt 1 3 lt 2 1 Eine Besonderheit bilden logische Operationen mit loat Operanden Hier findet v
58. er Port ist low Parameter der Abfragefunktionen ist die Nummer des Ports der erste Port hat jeweils die Nummer 0 function get int number returns int function getn int number returns int function getb int number returns int function getw int number returns int 115 II Unit Folgende Tabelle zeigt g ltige Pornummern und den Wertebereich der Ergebnisse der einzelnen Abfragefunktionen Abfrage von Einzelports e 0 1 Abfrage von Nibbleports 0 15 Abfrage von Byteports 0 255 Abfrage von Wordports 0x0000 OxFFFF 79 2 Setzen von Digitalports Jeder der 16 Digitalports kann als Eingang oder als Ausgang benutzt werden F r die Anwendung als Ausgang mu vor der ersten Ausgabe die interne Elektronik des Mikrocontrollers entsprechend aktiviert werden Das bernimmt das Betriebssystem der C Control II Unit automatisch beim Aufruf der set Funktionen Das Setzen von Ports kann wie beim lesen einzeln als Nibble als Byte oder als 16bit Integer Word erfolgen Parameter der set Funktionen sind die Portnummer und der zu setzende Portzustand als Bitmaske H herwertige Bits die in einer Ausgabe nicht darstellbar sind werden ignoriert z B das Setzen eines Nibbleports auf den Wert 17 Ob10001 ist nicht m glich und wird als Setzen auf 1 interpretiert Bei der Ausgabe auf Einzelports f hren alle Werte ungleich O zum Setzen des Ports
59. erarbeitung im Programm werden die logischen Werte von einzelnen Eingangsports als low oder 1 high dargestellt Nibbleports nehmen Werte von O bis 15 an Byteports bis 255 Der Wordport wird entsprechend dem 16bit Integerzahlenbereich als ein Wert von 32768 bis 32767 gelesen Ausgangsports k nnen ber eine interne Treiberschaltung digitale Spannungssignale aus geben Angeschlossene Schaltungen k nnen einen geringen Strom aus den Ports ziehen bei High Pegel bzw in diesen speisen bei Low Pegel Beachten Sie den maximal zul ssigen Laststrom f r einen einzelnen Port und f r alle Ports in Summe siehe Kapitel 9 1 Technische Daten Eine berschreitung der Maximalwerte kann zur Zerst rung der C Control II Unit f hren 28 3 Hardware Onrao E Nach dem Reset ist zun chst jeder Digitalport als Eingangsport konfiguriert Ein Port wird automatisch zum wenn das Anwenderprogramm einen Ausgabewert an diesen schreibt Durch Aufruf einer speziellen Funktion der Standardmodule kann ein Ausgangsport jedoch wieder deaktiviert werden d h in den hochohmigen Zustand gebracht werden 79 4 3 3 8 Sonderfunktionen der Digitalports Einige Digitalports stehen alternativ f r spezielle Ein Ausgabe Operationen zur Verf gung Dazu m ssen zun chst die entsprechenden Initialisierungsfunktionen der Systemmodule aufgerufen werden siehe z B Kapitel 72 75 712 Beachten Sie da der Aufruf einer In
60. ersorgungsspannung bestehen mu eine Spannungsw chterschaltung an die C Control II Unit angeschlossen werden z B mit Hilfe des ICs TL 7757 7757 2 UNIT 25 II Unit RSTOUT ist ein Ausgangssignal des Mikrocontrollers Es ndert seinen Pegel nach low wenn eine 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 3 3 5 Non Maskable Interrupt NMI Dieser Anschlu wird von der aktuellen Systemversion nicht benutzt Schlie en Sie ohne interne Kenntnis des Betriebssystems keine externen Bauteile daran an 3 3 6 Serielle Schnittstelle Der Mikrocontroller C164CI besitzt hardwareseitig eine asynchrone serielle Schnittstelle nach RS232 Standard erste serielle Schnittstelle hwcom Eine zweite asynchrone serielle Schnittstelle kann vom Betriebssystem per Software an den Digitalports 1 Empfangen und PIH2 Senden werden zweite serielle Schnittstelle swcom Das Betriebssystem setzt f r beide Schnittstellen das Format 8 N 1 fest also jedes Byte wird mit 8 Datenbits ohne Parit tsbit und mit einem Stopbit bertragen
61. es Auskommentieren von Programmzeilen ein Nutzen Sie Breakpoints Einzelschrittbetrieb und die berwachung und Anzeige von Variablen 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 Was der Simulator nicht oder nicht vollst ndig nachbildet sind extern angeschlossene Systeme zB ICs am C Bus oder Sensormodule Au erdem entspricht das Timing des Simulators nicht dem der realen Unit D h von der Ausf hrungszeit bestimmter Programmabschnitte am PC kann nicht auf das Zeitverhalten im Betrieb der C Control II Unit geschlossen werden Daraus folgt ES Die korrekte Funktion eines Programmes im Simulator ist ein notwendiges jedoch kein hinreichendes Kriterium f r den fehlerfreien Betrieb Ihrer Applikation in Echtzeit und unter realen Hardwarebedingungen Im Simulator kann ein Programm im Einzelschrittmodus oder im ganzen gestartet werden Dabei k nnen Sie in speziellen Ausgabefenstern die Zust nde der wichtigsten Hardware ressourcen z B Digitalports beobachten Au erdem k nnen Sie die Werte globaler und lokaler Varibalen anzeigen lassen 6 5 3 Bedienung Hinweise zur Bedienung des Simulators entnehmen Sie bitte der Online Hilfe der Integrierten En
62. es Threads beginnt mit dem Schl sselwort thread Dann folgen der Bezeichner und ein Anweisungsblock in geschweilten Klammern thread Name Anweisungen Innerhalb des Anweisungsblocks k nnen lokale Variablen definiert werden die quasi statisch sind siehe 5 5 5 Der gesamte Code des Anweisungsblock wird automatisch in einer Endlosschleife ausgef hr 72 5 Programmiersprache 2 Beispiel thread blink2 ports set 2 1 sleep 200 ports set 2 0 sleep 800 5 9 2 main Threads Ein Thread dessen Bezeichner nicht main ist hat zum Programmstart die Priorit t d h er befindet sich im Stillstand seine Anweisungen werden nicht ausgef hrt Jedes Modul kann einen main Thread enthalten also einen Thread mit dem Bezeichner main Dieser hat bei Programmstart die Standardpriorit t 32 Seine Anweisungen wer den von Beginn an ausgef hrt Die Aufgabe der main Threads ist es Initialisierungen vor zunehmen und bei Bedarf andere Threads zu starten Ein Programm sollte mindestens ein Modul mit einem main Thread haben Anderenfalls steht das gesamte 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 Sy
63. exadezimalziffern O 9 A bzw a f mit dem Pr fix oder OX vgl Bin rzahlen sind Folgen der Bin rziffern und 1 mit dem Pr fix oder Oktalzahlen werden nicht unterst tzt Beispiele Dezimalzahlen O 17 12345 Flie kommazahlen 0 0 1 5 123 456 Hexadezimalzahlen OxFF OXABCD Bin rzahlen OB11101 5 6 3 Unbenannte Zeichenkonstanten Zeichenkonstanten stehen f r deren ASCII Codes Wertebereich O 255 und k nnen wie ganze Zahlen in numerischen Ausdr cken verwendet werden Unbenannte Zeichenkonstanten sind von zwei Hochkommata eingeschlossen und bestehen selbst aus einem einzelnen Zeichen oder einem Sondercode Sondercodes erm glichen die Darstellung von Zeichen die im Quelltext nicht sichtbar w ren zB Steuerzeichen Zwischenraumzeichen Auch das Hochkomma selbst mu als Sondercode geschrieben werden Sondercodes beginnen mit einem Backslash Anschlie end folgt ohne Zwischenraum ein Codezeichen nicht case sensitiv oder die Angabe eines ASCIl Codes als Dezimal oder Hexadezimalzahl der Hexadezimalpr fix ist hier nur ein x ohne 0 57 II Unit Sondercodes mit Codezeichen Zeilenvorschub auf einem Ausgabeger t Codezeichen Bedeutung Vollst ndige Zeichenkonstante Klingelton bell jo b Backspace ein Zeichen zur ck Ab f Steuerzeichen form feed Seitenvorschub
64. fruf 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 zB nicht bergeben werden wenn laut Definition an dieser Stelle ein numerischer Ausdruck erwartet wird Es gelten folgende Typkompatibilit tsregeln Typ des formalen Parameters zul ssige aktuelle Parameter beim Funktionsaufruf im Funktionskopf byte int long float beliebiger numerischer Ausdruck bytel Bezeichner einer byt e Arrayvariable Bezeichner einer st ring Variable indizierter Bezeichner einer st ring Arrayvariable int Bezeichner einer int Arrayvariable long Bezeichner einer Long Arrayvariable float Bezeichner einer loat Arrayvariable string unbenannte st ring Konstante Bezeichner einer st ring Variable indizierter Bezeichner einer st ring Arrayvariable Bezeichner einer st ring Konstante indizierter Bezeichner einer st ring Arraykonstante string Bezeichner einer st ring Arrawvariable zusammengesetzter Typ Bezeichner einer MyType Variable z B MyType indizierter Bezeichner einer MyType Arrayvariable Bezeichner einer MyType Arrawariable Referenzen auf konstante Arrays d rfen nicht an Funktionen bergeben werden 5 8 6 Rekursion Eine Funktion kann sich theoretisch auch selbst aufrufen Das wird als Rekursion bezeich net Einige mathematische N he
65. gen werden automatisch auf maximal 30 Zeichen begrenzt Beispiel f r eine Stringverkettung mit const S const SAT EDER string sl string 3 string s 65 II Unit 51 bbb sa 0 uuu 1 vvv 2 www Stringzuweisung mit Verkettung s sl 2 S SA 0 ccc Nach dieser Anweisung enth lt s den Text bbbwwwAAAXKKXccecD 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 Die Funktion selbst kann ein Rechenergebnis zur ckgeben In C2 gibt es keine Trennung zwischen Deklaration und Definition einer Funktion Ist eine Funktion einmal in einem Modul geschrieben kann sie weiter unten in diesem Modul und allen nachfolgenden Modulen des Projektes verwendet also aufgerufen werden Der Quelltext einer Funktion besteht aus dem Funktionskopf und einem Anweisungsblock function fx Anweisungen 5 8 1 Funktionskopf Der Funktionskopf beginnt mit dem Schl sselwort function Anschlie end folgen der Funktionsname Bezeichner und in runden Klammern die Liste der formalen Parameter Optional kann dann nach dem Schl sselwort returns
66. h sich selbst anhalten Form 2 bezieht sich immer auf den aktuell ausgef hrten Thread Form 1 halt ThreadName 74 5 Programmiersprache 2 LL zB 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 Form 1 resume ThreadName z B halt blink2 blink2 steht resume blink2 blink2 l uft wie vor dem halt Form 2 resume z B run 100 aktueller Thread l uft mit Prio 100 resume aktueller Thread l uft wie vor run 100 e yield Mit Ausf hrung der yield Anweisung gibt der aktuelle Thread die Programmausf hrung unabh ngig von seiner Priorit t sofort an den n chsten Thread ab yield Der yield Befehl wird relativ selten ben tigt 75 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 dann gibt der aktuelle Thread die Programmausf hrung unabh ngig von
67. hannel returns int Die Funktion rxd testet ob eine neue Nachricht auf einem Empfangskanal channel ver f gbar ist Wenn das so ist gibt sie den Wert 1 zur ck anderenfalls channel 14 7 1 10 Empfangene Daten lesen function get int channel byte buf returns int Daten die auf einem Kanal channel automatisch oder nach einem request empfangen wurden k nnen mit get abgeholt und in eine Bytepuffervariable bertragen werden Der Puffer mu Platz f r 8 Bytes bieten Die Funktion liefert als Ergebnis die Anzahl der Bytes die tats chlich empfangen wurden g ltige Nachrichten k nnen auch aus Datenbytes bestehen channel 14 buf Referenz auf Bytepuffervariable 72 hwcom c2 und swcom c2 Die C Control II Unit verf gt ber zwei asynchrone serielle Schnittstellen Eine davon ist als Hardware hwcom bereits im Mikrocontroller implementiert Die zweite Schnittstelle swcom kann vom Betriebssystem softwarem ig ber zwei interruptsensible Ports nach gebildet werden Der Zugriff auf beide Schnittstellen in C2 ist identisch Nachfolgend 99 II Unit beschriebene Funktionen sind in den Modulen hwcom c2 und swcom c2 gleichartig definiert 72 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 beide
68. hnologie einem breiten Anwenderkreis zur Verf gung stellen Aus unserer bisherigen Arbeit im C Control Service wissen wir da sich auch lernbereite Kunden ohne jegliche Elektronik und Programmiererfahrungen f r C Control interessieren Sollten Sie zu dieser Anwendergruppe geh ren gestatten Sie uns an dieser Stelle bitte einen Hinweis FS C Control II ist nur bedingt f r den Einstieg in die Programmierung von Mikrocomputern und die elektronische Schaltungstechnik geeignet Wir setzen voraus da Sie zumindest ber Grundkenntnisse in einer h heren Programmiersprache wie z B BASIC PASCAL C C oder Java verf gen Au erdem neh men wir an da Ihnen die Bedienung eines PC unter einem der Microsoft Windows Betriebssysteme 95 98 NT 2000 gel ufig ist Sie sollten auch einige Erfahrungen im Umgang mit dem L tkolben Multimetern und elektronischen Bauelementen haben Wir haben uns bem ht alle Beschreibungen so einfach wie m glich zu formulieren Leider k nnen wir in einer Bedienungsanleitung zum hier vorliegenden Thema nicht immer auf den Gebrauch von Fachausdr cken und Anglizismen verzichten Schlagen Sie diese bei Bedarf bitte in entsprechenden Fachb chern nach 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 v
69. hrende Stellen werden mit aufgef llt Peiner 1 2 h ngt also 0001 an an Negative format Werte f hren zur Ausgabe als Hexadezimal Zahl mit Gro buchstaben 5 255 4 erweitert s um OOFF long Ausgabe function putlongf string s long value int format 119 II Unit Die Funktion put longf arbeitet identisch zu put int 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 Gegebenenfalls wird eine Anzahl von Nullen hinter dem Dezimalpunkt ausgegeben zB putfloatf s 1 3 h ngt 1 000 an s an Insgesamt werden maximal 8 Ziffern vor und nach dem Dezimalpunkt ausgegeben 7 10 6 Ausgabe einer Bitmaske function putmask string s int value int cl int Die Funktion putmask gibt einen Integerwert 0 255 als 8 Bitzeichen in einen String aus Das Zeichen f r Highbits wird durch den Parameter c1 bestimmt ASCII Code cO legt das Lowzeichen fest z B putmask 170 h ngt s an Mit putmask k nnen zum Beispiel Byteport Zust nde einfach zur Ausgabe auf dem LCD vorbereitet werden 120 7 Standardmodule ENRAD LL 7 11 system c2 7 11 1 Systemtimer Das Betriebssystem verwaltet einen frei
70. hsten Thread ab vgl yield 5 9 6 Synchronisation In Computersystemen mit parallelen Prozessen kann es zu folgenden problematischen Situationen kommen Aliasing von Speicherzugriffen Konkurrenz mehrerer Prozesse um eine Ressource Konkurrenz um eine Ressource entsteht beispielsweise wenn zwei Threads gleichzeitig Daten ber dieselbe serielle Schnittstelle senden wollen Die serielle Schnittstelle kann aber nur einen Ausgabepuffer zu einer Zeit bedienen Folglich kann nur ein Thread gleichzeitig senden Der zweite Thread mu warten bis die Ressource frei ist Zur Erl uterung des Aliasing Problems folgendes Beispiel Ein Thread fragt zyklisch zwei Me kan le ab und speichert diese in zwei globalen Variablen Ein paralleler Thread liest diese globalen Variablen und soll jeweils beide Werte aus einem Me zyklus einer Pr ffunktion zuf hren float a b Messwerte thread measure a get_channel_a b get channel b thread watch check a b 77 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 Threadwechsel unterbrochen werden also auch zwischen
71. htzeituhr 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 Bedingt durch Temperatureinfl sse und Toleranzen der elektronischen Bauteile f hrt das nach einer l ngeren Zeit zu einer zu nehmenden Zeitabweichung der internen Uhr Um im C2 Programm die Aktualit t und Genauigkeit der internen Uhr abzusch tzen kann ber die Funktion dcferr ein Z hler des Betriebssystems abgefragt werden der die Anzahl der vergeblichen Synchronisationen wiedergibt function dcferr returns int Das R cksetzen des Z hlers erfolgt mit jeder korrekten Synchronisation Ist dann z B inner halb von 30 Minuten keine neue Synchronisation m glich steht der Z hler auf 30 Bei dauerhaftem Synchronisationsausfall wird der Z hler auf dem Wert 32767 festgehalten Auch beim Reset wird der Z hler mit diesem Wert initialisiert 7 11 4 Datum Mit der DCF77 Synchronisation wird auch das Datum des Systems gestellt Wenn Sie das Datum im C2 Programm manipulieren m chten benutzen Sie die Funktion function setdate int year int month int day Zur Abfrage der einzelnen Datumsinformationen dienen die Funktionen ZE function year returns int function month returns int function day returns int function dow returns int 122 7 Standardmodule Onrao
72. ig verwendet In der Anweisung 1 ist 1 eine unbenannte Zahlenkonstante Benannte Konstanten repr sentieren einen Wert der ihnen zuvor in der Konstanten definition siehe weiter unten zugewiesen wurde Die Definition und Verwendung von benannten Konstanten hat folgende Vorteile Reduzierung des Aufwandes bei eventuellen nderungen im Programm Konstanten m ssen nur an der Stelle ihrer Definition modifiziert werden nicht an den vielen Stellen ihrer Verwendung im Programm Erh hung der Lesbarkeit eines Programmes wenn Konstanten mit vollst ndig selbstbe schreibenden Bezeichnern definiert werden also z B ERDUMFANG statt EUMF f r wiederholte Verwendung derselben long float und string Konstanten wird weniger Speicherplatz im Konstantenspeicher ben tigt Unbenannte Konstanten mit gleichem Wert oder Textinhalt w rden n mlich bei mehrfacher Verwendung im Programmaquelltext mehrfach im Konstantenspeicher angelegt werden Konstanten mit zusammengesetztem Datentyp werden in C2 nicht unterst tzt 56 5 Programmiersprache 2 ENRAD 5 6 2 Unbenannte Zahlenkonstanten Dezimalzahlen bestehen aus einer Folge der Ziffern 9 ohne Zwischenr ume Optional kann ein Minus als negatives Vorzeichen vorangestellt werden Bei dezimalen Flie kommazahlen folgen ohne Zwischenraum ein Dezimalpunkt kein Kommal und die Nachkommastellen Das Exponentialformat wird nicht unterst tzt Hexadezimalzahlen sind Folgen der H
73. immer als 16bit Integer verarbeitet Der Stapel dient auch als Zwischenspeicher f r lokale Variablen von Threads und Unterfunktionen sowie zur bergabe von Parametern und R ckgabewerten beim Aufruf von Unterfunktionen Au erdem werden R cksprungadresse und Speicherkontext BP vor einem Funktionsaufruf auf dem Stapel gesichert und beim R cksprung wiederhergestellt Jeder Thread des Anwenderprogramms verf gt ber einen eigenen Stapel Der f r den Stapel eines Threads zur Verf gung stehende Speicherplatz betr gt theoretisch 64kB Eine Limitierung ist jedoch dadurch gegeben da sich der Stapel das 64kB gro e SRAM Segment mit einigen Daten des Betriebssystems den globalen Variablen des Anwenderprogramms und weiteren Stapeln anderer Threads teilen mu Die Adressierung von Daten auf dem Stapel erfolgt relativ zu einem 16bit Basepointer BP Ein 16bit Stackpointer SP zeigt auf das obere Ende des Stapels Jeder Thread hat sein eigenes Paar von Base und Stackpointern 4 4 7 Systemschnittstelle Die virtuelle Maschine der C Control II Unit verf gt ber spezielle Befehlscodes als Schnittstelle zu den Hardwareressourcen und Funktionen des Betriebssystems Damit unter scheidet sie sich vom zugrundeliegenden Mikrocontroller 164 der die Hardware ressourcen als Register in einen bestimmten Speicheradre bereich legt Special Function Register Die Umwandlung von Systemoperationen der virtuellen Maschine in konkrete Har
74. in vorhandenes C2 Anwenderprogramm CMD_LOAD_VMC 4 Beginn der bertragung eines 2 Anwenderprogramms CMD_ERASE_VMC 6 l scht ein vorhandenes C2 Anwenderprogramm CMD_RESET 255 f hrt einen Software Reset des Mikrocontrollers aus 4 4 Virtuelle Maschine 4 4 1 Grundlagen Die Ausf hrung von Anwenderprogrammen auf der C Control II Unit erfolgt durch die virtuelle Maschine VM Der Begriff virtuell wird heute in vielen Zusammenh ngen verwendet Virtuell bedeutet soviel wie gedacht nachgebildet so als ob Die Maschinen der Computertechnik sind die Mikroprozessorkerne Sie sind durch ihren jeweiligen Aufbau aus Registern Rechenwerken Steuerwerken und der Schnittstelle zum Programm und Datenspeicher charakterisiert Diesen Aufbau bezeichnet man als die Prozessorarchitektur Eine virtuelle Maschine ist nachgebildeter Mikroprozessorkern Die gew nschte 38 4 Betriebssystem Onrao Architektur wird per Software auf einem existierenden Computersystem hergestellt Dem Nachteil einer geringeren Geschwindigkeit bei der Ausf hrung einfacher Programm anweisungen stehen einige Vorteile gegen ber Realisierbarkeit von Architekturelementen die das als Basis benutzte Computersystem nicht bietet optimale Anpassung an eine Programmiersprache einfache Portierbarkeit der VM auf andere Computersysteme bei Wiederverwendbarkeit existierender Programme sogar als Bin rcode Im Betriebss
75. ine Garantie daf r da die Leistungsmerkmale dieser Software individuellen Anforderungen gen gen und da die 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 Sollte die C Control II Unit inklusive Software Ihre Anspr che nicht befriedigen oder soll ten Sie mit den Gew hrleistungs und Haftungsbedingungen nicht einverstanden sein nutzen Sie unsere l4t gige Geld Zur ck Garantie Bitte geben Sie uns die Unit dann innerhalb dieser Frist ohne Gebrauchsspuren in unbesch digter Originalverpackung und mit allem Zubeh r zur Erstattung oder Verrechnung des Warenwertes zur ck II Unit 2 5 Service Conrad Electronic stellt Ihnen ein Team von erfahrenen Servicemitarbeitern zur Seite Sollten Sie Fragen zur C Control Unit haben erreichen Sie unsere Technische Kundenbetreuung telefonisch per Brief Fax oder E Mail Telefon 0180 53 12 116 FAX 0180 53 12 119 Postanschrift Conrad Electronic GmbH TKB Computer und Me technik Klaus Conrad Str 1 92240 Hirschau E Mail webmaster c control de Bitte nutzen Sie vorzugsweise die Kommunikation per E Mail Wenn Sie ein Problem ha
76. int E 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 gibt es eine Minimum und eine Maximumfunktion function min int a int b returns int function lmin long a long b returns long function fmin float a float b returns float ZE function max int a int b returns int function lmax long a long b returns long E function fmax float a float b returns float 77 mem c2 Die Funktionen des Moduls mem c2 erm glichen verschiedene Manipulationen an Bytepuffervariablen Hauptanwendungen dieser Funktionen sind der Aufbau von Datenrahmen vor einer Daten bertragung das Lesen von Daten aus empfangenen Datenrahmen die Zeilenformatierung vor einer Ausgabe z B auf einem Drucker 77 1 F llen mit einem Wert function fill byte buf int length byte Die Funktion i11 f llt eine angegebene Bytepuffervariable mit einer Anzahl gleicher Zeichen z B Leerzeichen buf Referenz auf eine Bytepuffervariable length F ll l nge Zeichen ASCIl Code 110 7 Standardmodule ENRAD LL 7 7 2 Kopieren function copy byte dest int byte src int length Die Funktion copy kopiert eine Anzahl length Zeichen aus einer Bytepuffervariable src an eine bestimmte Position
77. it 5 PIL5 7 Datenbit 6 PIL6 8 Datenbit 7 PILZ 9 BUSY Handshake P1H 5 1l ACKNOWLEDGE Handshake P1H 6 10 STROBE Handshake PIH 7 Masse GND 18 25 Das Betriebssystem verf gt ber eingebaute Routinen zur Datenausgabe an den Drucker ber die genannten Ports Bei Bedarf k nnen Sie die erweiterten Signale des Druckers aus werten bzw an den Drucker senden Diese Ansteuerung ist jedoch nicht im Betriebssystem der C Control II Unit implementiert Welche erweiterten Signale die Schnittstelle eines Druckers definiert entnehmen Sie bitte der Fachliteratur Mit welchen freien Digitalports der C Control II Unit sie die zus tzlichen Signale verbinden steht Ihnen frei Hinweise zum Zugriff auf die Druckerschnittstelle in Ihren Programmen finden Sie im Kapitel 7 5 3 3 9 A D Ports Die C Control II Unit verf gt ber 8 Ports A D 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 Lesen Sie zum Thema A D Wandlung auch die Kapitel 3 2 3 und 79 7 3 3 10 DCF FRQ Ports Am DCF FRQO Pin kann der invertierte Signalausgang einer DCF77 Funkuhraktivantenne angeschlossen werden Der erforderliche Pullup Widerstand ist bereits in der Unit integriert Das Betriebssystem bernimmt bei Signalempfang automatisch die Deko
78. itialisierung alle konkurrierenden Portfunktionen deaktiviert Pin Standardfunktion Sonderfunktion Digital Byteport Datenbits der Druckerschnittstelle Digital Counter und Interruptport Digital Counter und Interruptport swcom RxD Digital Counter und Interruptport swcom TxD Digital Counter und Interruptport clock f r Anschlu eines 2W Bus Modems Digitalport data f r Anschlu eines 2W Bus Modems Digitalport BUSY Handshake der Druckerschnittstelle Digitalport ACKNOWLEDGE Handshake der Druckerschnittstelle Digitalport STROBE Handshake der Druckerschnittstelle 3 3 8 1 Z hler und Interruptports Die vier Ports PIH O PIH 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 Au erdem pr ft das System ob eine besondere Behandlungsroutine des Anwenders installiert ist und f hrt diese gegebenenfalls aus siehe Kapitel 711 7 und 8 1 2 Die Z hlereing nge k nnen Pulse mit Abst nden bis hinab zu ca einer Millisekunde ver lustfrei z hlen Sollte eine k rzere Reaktionszeit notwendig sein kann das mit Hilfe der Systemprogrammierung durch Erh hen der Interruptpriorit ten erfolgen 29 II Unit 3 3 8 2 Zweite serielle
79. k auch auszugsweise verboten Diese Bedienungsanleitung entspricht dem technischen Stand bei Drucklegung nderung in Technik und Ausstattung vorbehalten Copyright 2003 by Conrad Electronic GmbH Printed in Germany 30 10 2003 Inhalt Inhaltsverzeichnis 2 1 2 2 2 3 2 4 2 5 3 1 3 2 3 2 1 3 2 2 3 2 3 3 2 4 3 2 5 3 3 3 3 1 3 3 2 3 3 3 3 3 4 3 3 5 3 3 6 3 3 7 3 3 8 3 3 9 3 3 10 3 3 11 3 3 12 4 1 4 2 Einleitung Wichtige Hinweise Lesen dieser Anleitung Handhabung Bestimmungsgem e Verwendung Gew hrleistung und Haftung Service Hardware entf llt Schaltungstechnik intern Mikrocontroller Speicher Referenzspannungserzeugung Takterzeugung entf llt Schaltungstechnik extern Anschlu belegung berblick Spannungsversorgung entf llt Reset RSTIN RSTOUT Non Maskable Interrupt NMI Serielle Schnittstelle Digitalports PILO PILZ PIHO Sonderfunktionen der Digitalports A D Ports DCF FRQ Ports PLM Ports CAN Interface Betriebssystem berblick Bootstrap Installieren des Betriebssystems O ONRAD Seite 36 36 36 II Unit 4 3 4 3 1 4 3 2 4 4 4 4 1 4 4 2 4 4 3 4 4 4 4 4 5 4 4 6 4 4 7 5 1 5 2 5 3 5 3 1 5 3 2 5 3 3 5 3 4 5 3 5 5 3 6 5 4 5 4 1 5 4 2 5 4 3 5 5 5 5 1 5 5 2 5 5 3 5 5 4 5 5 5 5 6 5 6 1 5 6 2 5 6 3 Hostmodus Systeminitialisierung und
80. ks als Ergebnis zur ckgeben return return numerischer Ausdruck Die erste Form darf nur f r Funktionen ohne definierten R ckgabetyp verwendet werden Die zweite Form mit numerischem Ausdruck ist f r Funktionen mit definiertem R ckgabetyp z B function fx int param returns int return param param 100 69 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 ZB function fx int a int b zwei Parameter ia fx Fehler 17 Fehler fx 17 4 OK Aufrufe von Funktionen die einen R ckgabewert liefern k nnen in numerischen Ausdr cken verwendet werden aber auch als einzelne Anweisung Aufrufe von Funktionen ohne R ckgabewert d rfen ausschlie lich als einzelne Anweisung stehen zB function get_something returns int Her function do something II ess get_something OK R ckgabewert ignoriert do_something OK int a get something OR do something Fehler 70 5 Programmiersprache 2 Onrao 5 8 5 Typenpr fung Der C2 Compiler f hrt zu jedem Au
81. laufenden Timer In jeder Millisekunde wird der Timer um 1 erh ht Der Z hlerstand wird vom System in einer internen long Variable gespeichert Der aktuelle Wert dieser Variablen kann durch die Funktion function timer returns long abgefragt werden Beachten Sie da der Z hlerstand gem dem Wertebereich von long Variablen nach 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 Funktionen abgefragt werden function hour returns int function minute returns int function second returns int Beachten Sie da zwischen den einzelnen Abfragen eine neue Minute oder Stunde anbrechen kann Beutzen Sie daher vorzugsweise die Funktion function gettime TIME time Diese Funktion gibt die volle Uhrzeit im Block in die als Parameter bergebene Daten struktur vom Typ TIME aus 121 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 Ec
82. lektrostatische Entladungen zerst rt werden Beachten Sie die allgemeinen Regeln zur Handhabung elektronischer Bauelemente Richten Sie Ihren Arbeitsplatz fachgerecht ein Erden Sie Ihren K rper vor der Arbeit zB durch Ber hren eines geerdeten leitenden Gegenstandes Vermeiden Sie die Ber hrung der Anschlu pins der C Control II Unit Entfernen Sie vor der ersten Benutzung der C Control II Unit eventuelle R ckst nde des Antistatic Schaumstoffes von den Pins 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 Die C Control II Unit darf nicht in galvanischer Verbindung zu Spannungen ber Schutzkleinspannung stehen Die Ankoppelung an Systeme mit h herer Spannung darf ausschlie lich ber Komponenten mit VDE Zulassung erfolgen Dabei m ssen die vorge schriebenen Luft und Kriechstrecken eingehalten sowie ausreichende Ma nahmen zum Schutz vor Ber hrung gef hrlicher Spannungen getroffen werden Auf der Platine der C Control II Unit arbeiten elektronische Bauelemente mit hochfrequen ten Taktsignalen und steilen Pulsflanken Bei unsachgem em Einsatz der Unit kann das zur Aussendu
83. lich die Adresse des Ausgabepuffers an das System und startet die bertragung Daher mu die Bytepuffervariable statisch sein globale Variable oder Variable eines Threads buf Referenz auf eine statische Bytepuffervariable length L nge des Puffers 108 7 Standardmodule ENRAD Gs 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 sqr Quadrat sqrt Quadratwurzel curt Kubikwurzel sin Sinus Argument x in Bogenma Radiant cos Cosinus Argument x in Bogenma Radiant tan Tangens Argument x in Bogenma Radiant asin Arkussinus Ergebnis in Bogenma Radiant acos Arkuscosinus Ergebnis in Bogenma Radiant atan Arkustangens Ergebnis in Bogenma Radiant log Logarithmus zur Basis 10 In nat rlicher logarithmus exp Exponentialfunktion e ceil kleinste ganze Zahl die nicht kleiner als ist Aufrunden floor gr te ganze Zahl die nicht gr er als x ist Abrunden 7 6 2 Potenzieren Die Funktion function pow float x float y returns float berechnet die y Potenz zur Basis x hoch 7 6 3 Absolutwertfunktionen F r jeden numerischen Datentyp au er byte das entspricht int beim Funktionsaufruf gibt es eine Absolutwertfunktion 109 C Control II Unit function abs int value returns
84. llt werden Lesen Sie dazu auch Kapitel 78 In Anwendungen zur pulsweitenmodulierten Digital Analogwandlung werden Zeitbasis und Periodenl nge einmalig eingestellt und dann nur der Ausgabewert manipuliert H lt man jedoch die Periodenl nge variabel und stellt sicher da der Ausgabewert zB stets die H lfte der Periodenl nge betr gt k nnen die PLM Kan le auch zur Ausgabe von Rechtecksignalen bestimmter Frequenzen benutzt werden Die Ausgabefrequenz eines 33 II Unit PLM Kanals ergibt sich aus 1 Zeitbasis Periodenl nge Hinweise zur Ausgabe von Tonfrequenzen finden Sie im Kapitel 78 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 ist ein digitales Kommunikationssystem zur Vernetzung von mikrocontrollerbasierten Baugruppen Urspr nglich wurde es f r Anwendungen in der Automobiltechnik konzipiert und geht auf Entwicklungen der Robert Bosch GmbH zur ck In modernen Autos bernehmen Mikrocontroller mit CAN Steuerungsaufgaben von ABS bis zur Zentralverriegelung Inzwischen hat sich CAN auch als Feldbus in der industriellen Automatisierungstechnik etabliert und verbindet speicherprogrammierbare Steuerungen mit Sensoren und Aktoren oder auch untereinander Der CAN Bus selbst ist ein Kabelstrang mit zwei elektrischen Leitern CAN H CAN L
85. m glich Zum Verst ndnis der einzelnen Fehlercodes empfehlen wir dringend die Lekt re eines Fachbuches zum Thema CAN Bus sowie der Systemdokumentation zum 164 Mikrocontroller R ckgabe Code Konstante ERROR_STUFF 1 ERROR_FORM 2 ERROR_ACK 3 ERROR BIT1 4 ERROR_BITO 5 ERROR CRC 6 ERROR EWRN 8 ERROR BUSOFF 9 7 1 4 Nachricht senden function send int channel int id byte buf int length Die Funktion send bergibt Bytes aus einem Bytepuffer an einen CAN Ausgabekanal channel 13 channel 14 kann nur empfangen id Message ID der Nachricht buf Referenz auf Bytepuffervariable length Pufferl nge max 8 97 II Unit 7 1 5 Nachricht ver ffentlichen function publish int channel int id byte 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 channel 13 channel 14 kann nur empfangen id Message ID der Nachricht buf Referenz auf Bytepuffervariable length Pufferl nge max 8 7 1 6 Z hlen der Remote Request Anfragen function rtrcount int channel returns byte Die Funktion rtrcount liefert nach Ver ffentlichung einer Nachricht eine
86. ment des FLASH Speichers gespeichert werden erstes Segment Segment Nur in Ausnahmef llen finden Sie dort eine Testversion vor die w hrend der Produktion geladen wurde Wenn Sie die C Control II Unit erstmalig in Betrieb nehmen sollten Sie auf jeden Fall zun chst das Betriebssystem von der CD installieren Auf der C Control Homepage wwvw c control de im Internet finden Sie gegebenenfalls auch eine aktuellere Version der Installation oder einzelne Dateien zum Download Sie sollten dann diese Version statt der auf der CD ausgelieferten verwenden 4 2 Bootstrap Installieren des Betriebssystems Im Bootstrap Modus des Mikrocontrollers kann das C Control II Betriebssystem in den FLASH Speicher der Unit bertragen werden Installieren Sie zun chst das Boot Tool von der C Control CD auf Ihrem PC Lesen Sie dabei die Installationsanleitung und gegebenenfalls die zus tzlichen Hinweise Um den Bootstrap Modus zu aktivieren m ssen Sie bei einem Hardware Reset der C Control II Unit gleichzeitig den BOOT Pin auf Low Pegel legen zB durch Kurzschlie en des BOOT Pins mit dem benachbarten GND Pin durch eine Steckbr cke oder einen Taster Wenn kurz darauf der BOOT Pin wieder auf High Pegel geht erwartet der Mikrocontroller die bertragung des Betriebssystems ber die serielle Schnittstelle 36 4 Betriebssystem ENRAD RSTIN ee Starten Sie nun die Daten bertragung des Systems mit Hilfe des Boot Tools Dieses
87. ms reihum eine Portion Rechenzeit zugeteilt Wieviel Rechenzeit ein Thread erh lt kann ber seine Priorit t gesteuert werden Bei Priorit t wird sofort zum n chsten Thread weitergeschaltet Der h chstm gliche Priorit tswert ist 255 In einem Umlauf f hrt der Bin rcodeinterpreter f r jeden Thread maximal so viele Operationen aus wie es dessen jeweiligem Priorit tswert entspricht In Wartesituationen erfolgt die Weiterschaltung vorzeitig Die Priorit t jedes Threads kann w hrend des Programmablaufes den aktuellen Leistungs anforderungen angepa t werden Die Schwierigkeit bei der Erstellung eines Programms mit Multithreading liegt in der aus gewogenen Vergabe der Priorit tswerte Bei bis zu 255 Threads und 256 Priorit tsstufen gibt es nahezu unz hlige M glichkeiten Rechenzeit zu verteilen Mit der Zuteilung von sehr niedrigen Priorit ten an alle Threads ergeben sich schnelle Umlaufzeiten und somit eine relativ geringe Verz gerung bis ein einzelner Thread auf ein Ereignis reagieren kann Daf r sinkt die Performance des Gesamtsystems da pro Zeiteinheit mehr Rechenleistung der virtuellen Maschine f r das Umschalten von Threads verbraucht wird So ist es nicht 40 4 Betriebssystem Onrao sinnvoll allen Threads die Priorit t 1 zu erteilen Die Performance steigt mit der Vergabe von hohen Priorit ten Das wird jedoch durch l ngere Reaktionszeiten erkauft Im nicht zu empfehlenden Extremfall haben alle Threads die Priorit
88. n Schnittstellen kann die bertragungsgeschwindigkeit eingestellt wer den Die hwcom Schnittstelle kann dabei bis 115 200 Baud arbeiten swcom nur bis 9 600 Baud function setspeed int speed speed bertragungsgeschwindigkeit SPEED_300 0 300 Baud SPEED_600 1 600 Baud SPEED_1200 2 1200 Baud SPEED_2400 3 2400 Baud SPEED_4800 4 4800 Baud SPEED_9600 5 9600 Baud SPEED_19200 6 19200 Baud SPEED_38400 7 38400 Baud SPEED_57600 8 57600 Baud SPEED_115200 9 115200 Baud SPEED 19200 bis SPEED 115200 nur f r hwcom 72 3 Setzen des erweiterten Empfangspuffers Das Betriebssystem implementiert f r beide seriellen Schnittstellen standardm ig je einen Empfangspuffer von 64 Byte In Applikationen in denen gr ere Datenbl cke zu empfangen sind sollte ein erweiterter Empfangspfuffer reserviert werden Anderenfalls kann es zum Verlust empfangener Daten f hren die vom Programm nicht schnell genug aus dem Puffer gelesen werden 100 7 Standardmodule Onrao function setbuf byte buf int length buf Referenz auf eine statische oder quasi statische Bytepuffervariable length L nge des Puffers 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
89. n Z hlerwert wie oft diese Nachricht von anderen Busteilnehmern abgefragt wurde Der Z hler ist jedoch auf den Wertebereich eines Bytes beschr nkt Wird eine Nachricht fter als 253 mal abgefragt bleibt der Z hlerwert auf 253 stehen channel 13 channel 14 kann nur empfangen 7 1 7 Einstellen der Empfangs ID function expect int channel int id F r jeden Kanal der zum Empfangen von CAN Nachrichten benutzt werden soll mu eine Empfangs ID eingestellt werden siehe auch 71 1 Werden f r mehrere Kan le glei che Empfangsbedingungen hergestellt resultierend aus der Akzeptanzmaske und der Empfangs ID so wird eine eingehende Nachricht die diesen Bedingungen entspricht im niedrigsten freien Kanal gespeichert Ein Kanal ist frei wenn seine zuletzt empfangene Nachricht mit get ausgelesen wurde siehe 0 channel 14 id Empfangs ID des Kanals 98 7 Standardmodule ENRAD LL fo 7 1 8 Senden einer Remote Request Anforderung function request int channel So wie die C Control II Unit Nachrichten ver ffentlichen kann siehe 71 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 zuvor per expect f r den Kanal channel als Empfangs ID eingestellt sein sonst kann die Antwort des Busteilnehmers nicht empfangen werden 7 1 9 Test auf Empfang function int c
90. n diesen Pins darf kein Signal eingespeist werden Sie dienen ausschlie lich zur Signalanalyse zB mit Hilfe eines Speicheroszilloskopes 3 3 2 Spannungsversorgung POWER 5 Volt GND In der Unit befindet sich ein kompaktes IC Schaltnetzteil das aus der am Pin POWER ein gespeisten Versorgungsspannung die stabilisierte 5V Betriebsspannung f r den Mikrocontroller und alle anderen Schaltkreise erzeugt Durch die Leistungsreserven des Netzteils stehen diese 5V auch zur Versorgung externer ICs zur Verf gung und k nnen der Unit abgegriffen werden Beachten Sie den maximal entnehmbaren Strom siehe Kapitel 9 1 Technische Daten Eine berschreitung kann zur Zerst rung der C Control Il Unit f hren Die Gleichspannung zur Versorgung der Unit mu im Bereich von 8V bis 24V liegen Diese Spannung kann unstabilisiert sein darf aber nur eine geringe Restwelligkeit auf weisen Bei Bedarf ist die Versorgungsspannung mit zus tzlichen Kondensatoren Elko 470uF 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 Beachten Sie den Hinweis zu kurzzeitigen Ausf llen der Versorgungsspannung in Kapitel 3 3 4 3 3 3 LCD Kontrast LCD ADJ Die beste
91. n konstanten Ausdr cken sind auch zuvor definierte benannte Konstanten siehe 5 6 ver wendbar 5 3 6 Schl sselworte Untenstehend finden Sie eine alphabetische Liste aller C2 Schl sselworte Detaillierte Definitionen und Anwendungsbeispiele finden Sie im weiteren Verlauf dieser Anleitung and function or step break halt quit string byte if release thread capture inline resume type const int return wait continue long returns while do loop run xor else nand shl yield float nor shr for not sleep 5 4 Datentypen 5 4 1 Numerische Datentypen C2 bietet insgesamt vier verschiedene numerische Datentypen zur Definition von Variablen Funktionsparametern und R ckgabewerten von Funktionen byte int long und float Der Datentyp einer Variablen eines Funktionsparameters oder eines R ckgabewertes sollte nach dem erforderlichen Wertebereich und der notwendigen 48 5 Programmiersprache 2 Onrao 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 loat Operationen ist geringer als die von 1ong 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 Das Verwenden des byte Jupe bei der Definition globaler und lok
92. ng elektromagnetischer St rsignale f hren Die Ergreifung entsprechender Ma nahmen zB Verwendung von Drosselspulen Begrenzungswiderst nden Blockkondensatoren und Abschirmungen zur Einhaltung gesetzlich vorgeschriebener Maximalwerte liegt in der Verantwortung des Anwenders Die maximal zul ssige L nge angeschlossener Leitungen ohne zus tzliche Ma nahmen betr gt 0 25 Meter Ausnahme siehe CAN Interface und Serielle Schnittstelle Unter dem EinfluB von starken elektromagnetischen Wechselfeldern oder St rimpulsen kann die Funktion der C Control II Unit beeintr chtigt werden Gegebenenfalls sind ein Reset und ein Neustart des Systems erforderlich Achten Sie beim Anschlu von externen Baugruppen auf die zul ssigen maximalen Strom und Spannungswerte der einzelnen Pins Das Anlegen einer verpolten oder zu hohen Spannung oder die Belastung mit einem zu hohen Strom kann zur sofortigen Zerst rung der Unit f hren 2 Wichtige Hinweise ONRAD J 2 4 Gew hrleistung und Haftung Conrad Electronic bietet f r die C Control II Unit eine Gew hrleistungsdauer von 24 Monaten ab Rechnungsdatum Innerhalb dieses Zeitraums werden defekte Units kosten frei umgetauscht wenn der Defekt nachweislich auf einen Produktionsfehler oder Transportschaden zur ckzuf hren ist Die Software im Betriebssystem des Mikrocontrollers sowie die PC Software auf CD ROM werden in der vorliegenden Form geliefert Conrad Electronic bernimmt ke
93. nnen dessen Verst ndlichkeit und Lesbarkeit erh hen C2 Kommentare sind kompatibel zu denen in C und C Es gibt Zeilenendkommentare die durch zwei unmittelbar aufeinanderfolgende Schr gstriche 44 5 Programmiersprache 2 Onrao eingeleitet werden Jeglicher Text bis zum Zeilenende einschlie lich der Schr gstriche wird beim Compilieren berlesen zB 123 das ist ein Kommentar Mehrzeilige Kommentare k nnen in Sequenzen eingebettet werden ZB das alles ist ein Kommentar Verschachtelte mehrzeilige Kommentare sind nicht zul ssig 5 3 2 Zwischenr ume Alle Zeichen mit den ASCIl Codes O 32 werden als Zwischenr ume engl whitespa ces oder blanks gelesen und beim Compilieren berlesen zB die Leerzeichen Tabulatoren und Zeilenvorsch be im Programmauelltext Das gilt jedoch nicht innerhalb von Stringkonstanten Leerzeichen in Stringkonstanten blei ben erhalten und gelangen so zur Ausgabe wie sie sich im Quelltext befinden 5 3 3 Bezeichner Bezeichner sind die Namen von Modulen Variablen Konstanten zusammengesetzten Typen deren Felder Funktionen und Threads Bezeichner besteht aus mindestens einem Zeichen und kann beliebig lang sein g ltige Zeichen eines Bezeichners sind Buchstaben Z 2 keine Umlaute oder Ziffern 9 und Unterstriche _ das erste Zeichen darf keine Ziffer sein C2 ist case sensitiv d h Gro und Kleinschr
94. number function deactw int number 79 5 Pulsz hlung getcount int number returns long Die vier Digitalports sind interruptsensibel Sie werden vom Betriebssystem beim Reset so eingerichtet da sie eingehende Inpulse z hlen bei High Low Flanke am Digitalport Diese vier Z hlerst nde k nnen ber die Funktion get count abgefragt wer den Als Parameter erwartet die Funktion die Portnummer 3 Bei jeder Abfrage eines Z hlerstandes wird dieser auf O zur ckgesetzt Das Aufsummieren ber einen gr eren Zeitraum mu im Anwenderprogramm erfolgen 7 9 6 Frequenzmessung function getfreq int number returns long Die Pins DCF FRQ und FRQ 1 der C Control Unit k nnen zur Messung von Pulsfreguenzen benutzt werden Die Abfrage erfolgt mit der Funktion get freq mit der Nummer O oder 1 als Parameter 117 oaccaaoo C Control II Unit 79 7 Analog Digital Wandlung function adc int number returns int Die Funktion liefert den digitalisieren Me wert von einem der 8 ADC Ports der C Control II Unit Die Nummer des Ports 7 wird als Parameter bergeben Das Ergebnis ist ein Integer im Bereich von bis 1023 entsprechend der 10bit Aufl sung des A D Wandlers des Mikrocontrollers siehe dazu auch Kapitel 3 2 3 7 10 str c2 Die C Control II Unit unterst tzt einfache Stringoperationen bereits auf Ebene der virtuellen Maschine Der Zugriff auf diese Operationen erfolgt
95. nweisungsbl cke sind Folgen von Anweisungen die durch geschweifte Klammern zusammengefa t sind z B 123 a 1 Nach einem Anweisungsblock ist kein Semikolon erforderlich Anweisungsbl cke k nnen statt einer einzelnen Anweisung stehen zB um mehrere Aktionen innerhalb einer Programmsteueranweisung auszuf hren z B if x gt 0 123 a 1 5 3 5 Ausdr cke Ein Ausdruck oder Term ist die Verkn pfung von Daten Variablen oder Konstanten durch Operatoren In C2 gibt es ausschlie lich numerische Ausdr cke Jeder numerische Ausdruck ergibt durch mathematische Berechnung einen Wert G ltige numerische Ausdr cke sind zB a feb Fre 1 x E x F Io 2 21977 Eine Sonderform ist der konstante Ausdruck Dessen Wert l t sich bereits vor der Programmausf hrung bestimmen So ist der Wert des Ausdrucks 1 2 1977 offenbar immer 1980 Das steht zur Zeit der Programmierung fest und wird sich auch bei der Programmausf hrung nicht ndern Um unn tige Berechnungen konstanter Ausdr cke w hrend der Programmausf hrung zu vermeiden versucht der C2 Compiler diese 47 oaccaaoo C Control II Unit weitestgehend vorherzubestimmen und zusammenzufassen So wird die Anweisung 1 2 1977 e vom Compiler vorberechnet und intern umgewandelt in a 1980 Funktionen siehe 5 8 werden jedoch immer aufgerufen und ausgef hrt auch wenn deren Parameter und der R ckgabewert konstant sind I
96. ocontrollers initialisiert Anschlie end wird gepr ft ob ein C2 Anwenderprogramm im FLASH gespeichert ist Wird ein Programm gefunden dann startet das System die virtuelle Maschine und f hrt dieses Programm aus Anderenfalls geht das System in den Hostmodus ber Wenn Sie ein im FLASH gespeichertes Anwenderprogramm nicht automatisch starten wollen z B weil Sie ein neues Anwenderprogramm in die Unit laden m chten mu beim Reset der HOST Pin der Unit auf Low Pegel gezogen sein 37 II Unit RSTIN 2 KV 4 3 2 Download von Anwenderprogrammen und andere Host Befehle Im Hostmodus erwartet das System den Empfang von Kommandobytes ber die serielle 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 Lesen Sie dazu die Hinweise auf der CD bzw in der Online Hilfe zur Integrierten Entwicklungsumgebung U a sind folgende Kommandobytes definiert Kommando Reaktion der Unit im Hostmodus CMD_SEND_ID 0 antwortet mit dem Text II CMD SEND VERSION 2 antwortet mit einem Versionsstring CMD_START 3 startet e
97. on Bauelementen Wir werden die dann notwendigen Informationen im Internet unter www c control de bereitstellen In dieser neuen Version der Bedienungsanleitung der C Control II sind einige Abs tze ge k rzt worden da sich die Bauart und der Lieferumfang der C Control ge ndert hat Diese sind in der Bedienungsanleitung mit entf llt gekennzeichnet Wir w nschen Ihnen viel Freude mit C Control II Ihr Conrad Technologie Centrum Conrad Electronic GmbH Klaus Conrad Stra e 1 92240 Hirschau 2 Wichtige Hinweise ENRAD 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 Kapitel und Abs tze die Themen mit gehobenem Schwierigkeitsgrad enthalten sind durch das Symbol gekennzeichnet Sie k nnen diese Themen zu einem sp teren Zeitpunkt aufgreifen nachdem Sie erste Erfahrungen mit der Anwendung der C Control II Unit und der Programmiersprache C2 gesammelt haben ES F r Sch den die aus der Nichtbeachtung von Hinweisen in dieser Anleitung resul tieren besteht keinerlei Gew hrleistungsanspruch und bernehmen wir keine Haftung 2 2 Handhabung FS Die C Control II Unit enth lt empfindliche Bauteile Diese k nnen durch e
98. operationen plm c2 Pulsweitenmodulation f r D A Wandlung und Tonausgabe ports c2 Digitalports und Analogports A D str c2 Stringmanipulation swcom c2 2 serielle Schnittstelle Softwareschnittstelle system c2 Timer Systemuhr Interrupt Umleitung twb c2 Zweidrahtbus vmcodes c2 Codekonstanten der virtuellen Maschine 7 1 2 7 1 1 Initialisierung function init int speed int qglobalMask int specialMask Vor der Daten bertragung auf dem CAN Bus mu das System initialisiert werden Der erste Parameter der init Funktion dient zur Festlegung der bertragungsgeschwindigkeit Folgende speed Werte werden unterst tzt 95 II Unit speed bertragungsgeschwindigkeit SPEED_50 0 50 kbit s SPEED_62 1 62 5 kbit s SPEED_125 2 125 kbit s SPEED 250 3 250 kbit s SPEED 500 4 500 kbit s Wenn Sie einen ung ltigen Wert f r speed bergeben wird die bertragungsrate auf 125 kbit s festgesetzt Zur Akzeptanzfilterung eingehender CAN Nachrichten m ssen zwei Maskenwerte globalMask und specialMask spezifiziert werden globalMask gilt f r alle 15 Kan le f r den 15 Kanal channel 14 gilt zus tzlich die specialMask die vom Mikrocontroller intern mit der 9lobalMask UND verkn pft wird Die Akzeptanzmaske bestimmt welche Bits der Message ID einer eingehenden Nachricht mit der Empfangs ID eines CAN Kanals zu
99. or der logischen Verkn pfung eine automatische Konvertierung in einen Integerwert oder 1 statt der float Wert 0 0 wird zum Integer alle Werte ungleich 0 0 werden zu 1 64 5 Programmiersprache 2 Onrao Das gilt jedoch nicht f r konstante float Ausdr cke die keinen echten Flie kommawer haben zB 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 result wird 3 5 7 6 Stringverkettung mit dem Operator Bei Zuweisungen an string Variablen kann auf der rechten Seite des Zuweisungsoperators verketteter Stringausdruck stehen In der Verkettung werden Teilstrings zu einem Ergebnis zusammengef gt Die Teilstrings sind jeweils durch einen Operator voneinander getrennt Als ein einzelner Teilstring kann Bezeichner einer string Variable ein indizierter Bezeichner eines variablen Stringarrays Bezeichner einer string Konstante ein indizierter Bezeichner einer konstanten Stringarrays eine unbenannte Stringkonstante ein numerischer Ausdruck stehen Numerische Ausdr cke in der Stringverkettung m ssen in Klammern stehen wenn sie selbst Operatoren enthalten Ein numerischer Ausdruck wird als ASCII Code eines Zeichens interpretiert und als solches im Ergebnisstring eingebunden Gegebenenfalls erfolgt eine Reduzierung des Wertes auf den Bereich von 255 Verkettun
100. r 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 zB Type Line int row 10 52 5 Programmiersprache 2 OnrAaD A A Type Matrix Line 1 10 Matrix m int x Ent uk 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 Bevor eine Variable zur Berechnung eines Ausdrucks herangezogen wird sollte sie initialisiert werden Anderenfalls ist auch das Ergebnis des Ausdrucks unbestimmt abgesehen von trivialen Ausdr cken wie O x Die Initialisierung erfolgt durch Wertzuweisung z B EREL i 0 Bei Arrayvariablen mu jedes Element einzeln initialisiert werden z B in einer Schleife die den Index von O bis zur Anzahl der Elemente 1 laufen l t int 1 long table 13 for i 0 ss lt 13 table i 0 Variablen zusammengesetzter Datentypen sind erst dann vollst ndig initialisiert wenn alle einzelnen Felder auch die Felder verschachtelter Typen initialisiert sind 53 II Unit MyType t t pos x 0 t po
101. r C Control II Unit wurde mit der Vollversion der TASKING Tools entwickelt Eine Demoversion dieser Tools finden Sie auf der Utility CD zur C Control Unit Diese Tools enthalten u a eine Entwicklungsumgebung mit Editor und Projektverwaltung einen integrieren C C Compiler einen Assembler und Linker N here Informationen entnehmen Sie bitte den Dateien und Installationshinweisen auf der CD 8 1 2 Erg nzungen der virtuellen Maschine und nderungen am Betriebssystem In das Segment 3 des externen FLASH EEPROMs der Mikrocontrollerschaltung k nnen Sie kleine Systemroutinen zur Erg nzung der virtuellen Maschine laden Diese k nnen aus C2 Programmen heraus mit den Funktionen system call und system jump aufgerufen oder per Funktion system hook als Interrupt Handler f r Digitalports oder den Systemtimer installiert werden siehe Kapitel 711 Die Routinen in Assembler C oder C k nnen mit Hilfe der Demoversion der Tasking C C Tool bersetzt werden Beachten Sie dabei die Limitierungen der Demoversion Das erzeugte Ausgabefile im Intel Hexformat l t sich mit Hilfe der C2 Entwicklungs umgebung in das Segment 3 der Unit bertragen Die Adressen Ihrer Funktionen finden Sie in der erzeugten Map Datei Wenn Sie aus Ihren Assembler C oder C Routinen auf Daten und Funktionen des Betriebssystems zugreifen m ssen oder Sie das von Conrad Electronic ausgelieferte Betriebssystem nach Ihren W nschen anpassen m chten ben tigen
102. ramm von einem angeschlossenen PC bertragen und dann gestartet werden Wird quit mit dem Parameter 1 oder 255 aufgerufen f hrt das System einen Software Reset des Mikrocontrollers aus quit Ausdruck zB quit 63 zur ck in den Hostmodus quit 1 Sofware Reset 86 6 Softwareentwicklung ENRAD Be 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 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 Zur Installation legen Sie die CD in das CD laufwerk Ihres PC Ist f r das CD Laufwerk der Autostart Modus aktiviert das ist die Standardeinstellung dann ffnet sich nach Einlegen der CD ein Begr ungsbildschirm Folgen Sie bitte den Hinweisen dieses Begr ungsbildschirms Wenn Sie f r Ihr CD Laufwerk den Autostart Modus deaktiviert haben laden Sie bitte die Datei start htm aus dem Wurzelverzeichnis der CD in Ihren aktuellen Internet Browser Wenn Sie noch keinen Internet Browser installiert haben lesen Sie bitte die Datei browsertxt im Wurzelverzeichnis der CD Nach erfolgreicher Installation der Integrierten Entwicklungsumgebung k nnen Sie diese von Ihrem Windows Startmen aus starten Die Benutzeroberfl che der Integrierten Ent
103. renz von 4 Ist x ein digitaler Me wert dann errechnet sich der entsprechende Spannungswert u wie folgt u 4 096 1024 oder einfach u x 0 004 3 2 4 Takterzeugung Die Takterzeugung erfolgt durch einen 5MHz Quarzoszillator Im Controller erzeugt eine PLl Schaltung daraus den 20MHz Systemtakt 3 2 5 entt llt 21 II Unit 3 3 Schaltungstechnik extern 3 3 1 Anschlu belegung berblick op PIH4 PIHS 5 Volt GND PIH6 PIH7 5 Volt GND GND LCD ADJ GND GND PMO PIL7 PIMI PILS per rra 0 PIL3 PU GND GND PILI PILO 6 RSTOUT Wu RSTIN op BOOT GND GND GND HOST GND GND n c w RD RIS digital RTS n c n c serial CAN 12C A D C Control Il system 04 2000 S 010 277 port 1L contrast out 5V 8 24V AAA a a amp amp a giess 0j a 000o gliese a Unterseite 22 3 Hardware Allgemein GND 2 X4 n C TxD RxD RTS CTS 5 Volt LCD ADJ PILO 7 NMI RSTOUT RSTIN BOOT HOST POWER PILO 7 BEEP PLM 0 1 FRQ 1 ADC O 7 PC SCL SDA CAN_Tx
104. riodenl nge erfolgt mit der Funktion function setperiod int channel int length channel PLM Kanal 1 2 length Periodenl nge N Ticks Beachten Sie bitte da channel O und channel 1 eine gemeinsame Periodenl nge haben 7 8 4 PLM Ausgabe function out int channel int value 113 II Unit channel PLM Kanal 1 2 length Periodenl nge N Ticks Die Funktion out gibt einen Wert pulsweitenmoduliert an einem PLM Port aus Ist der Ausgabewert mindestens so gro wie die f r diesen Kanal eingestellte Periodenl nge so ist der Ausgangspegel des Ports permanent high Ein Ausgabewert O f hrt zu perma nentem Lowpegel 7 8 5 Ausgabe von Tonfrequenzen An jedem der drei PLM Ports kann ber eine bestimmte Periodenl nge und einen Ausgabewert von zB halber Periodenl nge ein Rechtecksignal mit einer bestimmten Frequenz ausgegeben werden Dabei ist die eingestellte Zeitbasis zu ber cksichtigen Die Ausgabefrequenz der Pulsl ngenmodulation f r einen Kanal ergibt sich aus 1 Zeitbasis Periodenl nge wenn der PLM Ausgabewert kleiner als die Periodenl nge und gr er als ist Zur Vereinfachung der Ausgabe von Tonfrequenzen gibt es die Funktion beep Sie bezieht sich stets auf den dritten PLM Kanal channel 2 Alle Berechnungen und Einstellungen von Periodenl ngen unter Ber cksichtigung der aktuellen Zeitbasis bernimmt diese Funktion function beep int tone Der Par
105. rt wenn das Ergebnis des numerischen Ausdrucks zur Programmlaufzeit ungleich ist zB x 123 if x fx x wird aufgerufen if x 123 fx fx wird nicht aufgerufen ber das Schl sselwort else kann eine alternative Anweisung oder ein Block angege ben werden die ausgef hrt wird wenn der Wert des Audrucks gleich O ist if Ausdruck Anweisung else AlternativAnweisung zB x 123 if x 123 ist 0 82 5 Programmiersprache 2 ENRAD 1 else fx2 x2 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 loop Anweisung loop d Zei 5 10 3 while Schleife Die while Schleife wiederholt eine Anweisung oder einen Anweisungsblock solange der berechnete Wert eines numerischen Bedingungsausdrucks ungleich O ist Die Pr fung der Bedingung erfolgt vor jedem Schleifendurchlauf Nach dem Schl sselwort while folgt ein numerischer Ausdruck und danach die Anweisung bzw der Anweisungsblock while Ausdruck Anweisung while Ausdruck FR gs 5 10 4 do Schleife Die do Schleife wiederholt eine Anweisung oder einen Anweisungsblock solange der berechnete Wert eines numerischen Bedingungsausdrucks ungleich O ist Die Pr
106. rungen beruhen auf rekursiven Algorithmen mit Abbruchschranken FS C2 verbietet rekursive Funktionsaufrufe nicht ausdr cklich sie sollten jedoch vermieden werden 71 II Unit Rekursionen f hren ab einer gewissen Tiefe immer zur berschreitung des Stackbereiches der f r einen Thread reserviert ist Dann werden Daten anderer Threads ungewollt ber schrieben 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 Programmauelltext Es gilt inline Funktionen d rfen nur inline Anweisungen enthalten In einer inline Anweisung mu nach dem Schl sselwort ein konstanter Ausdruck stehen der einen Operationscode darstellt siehe 4 4 2 087 inline Funktionen und Anweisungen werden nur von C2 Systementwicklern ben tigt Eine ausf hrliche Dokumentation der einzelnen Operationscodes der virtuellen Maschine ist nicht Bestandteil des Lieferumfanges der C Control II Unit 5 9 Threads 5 9 1 Definition Threads werden auf Modulebene definiert und sind nach der Definition global sichtbar Es gibt keine verschachtelten Threads innerhalb von Threads und keine lokalen Threads innerhalb von Unterfunktionen Die Definition ein
107. ruptroutinen 2 Zur unverz gerten Reaktion auf die Ereignisse Ims Timerzyklus des Systems High Low Flanken an den Digitalports PIH S k nnen Interruptroutinen in Assembler oder C geschrieben und im Segment des FLASH EEPROMs gespeichert werden lesen Sie dazu das Kapitel 8 Systemprogrammierung Das Aktivieren der anwenderdefinierten Interruptroutinen erfolgt durch Aufruf der Funktion hook function hook int event int segment int offset int mode Die Funktion hook h ngt eine anwenderdefinierte Interruptroutfine die normale Interruptbehandlung des Systems ein Der Parameter event gibt vor f r welche Interrupt quelle eine Interruptroutine aktiviert werden soll event Interruptquelle EVENT_TIMER 0 I ms Timer EVENT P1H0 1 Digitalport PIH O EVENT P1H1 2 Digitalport PIH EVENT P1H2 3 Digitalport PIH 2 EVENT P1H3 4 Digitalport PIH 3 Die Parameter segment und offset geben die Speicheradresse der Interruptroutine im Gesamtadre raum des Mikrocontrollers an Die Speicheradresse entnehmen Sie bitte den Ausgaben Ihrer C Assembler Entwicklungstools Lesen Sie dazu die Dokumentation zu diesen Tools Wenn Sie eine C Funktion als Interruptroutine schreiben m chten mu sie im Stil void fx void definiert sein also ohne Parameter und R ckgabewert Wird eine Interruptroutine in die normale Interruptbehandlung des Systems eingeh ngt gibt es f r die Abar
108. s y 0 t value 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 z B int i function fx sat Globale Variablen existieren w hrend des gesamten Programmablaufes statisch an einer ganz bestimmten vom Compiler berechneten Speicherstelle ber den Modulnamen sind sie im gesamten Quelltext nach der Definition sichtbar und zugreifbar Globale Variablen sollten sehr sparsam und gut berlegt verwendet werden Nach M glichkeit sollten s mt liche Manipulationen einer Variablen innerhalb desselben Moduls vorgenommen werden in dem sie definiert wurde Anderenfalls wird ein Programm schnell un bersichtlich wenn nicht mehr klar erkennbar ist an welcher Stelle sich der Wert einer globalen Variablen ndern kann Typische Anwendung f r globale Variablen sind Variablen zur Speicherung von Programmzust nden und Benutzereinstellungen Variablen f r den Datenaustausch zwischen Threads oder Bytearray Variablen als Pufferspeicher bei einer Daten bertragung Lokale Variablen werden im Anweisungsblock eines Threads oder einer Funktion definiert 54 5 Programmiersprache 2 ENRAD LL z B function fx int i Lokale Variablen einer Funktion werden zur Programml
109. stem unter bricht und der n chste Thread an der Reihe ist Zur Orientierung die Anweisung on E wird in vier virtuellen Maschinenoperationen ausgef hrt wenn a b und c vom gleichen numerischen Datentyp sind b auf den Stack laden 1 2 c auf den Stack laden 3 Addition 4 Ergebnis in a speichern 73 ONRAD 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 run Das Schl sselwort run wird in zwei Formen verwendet Form 1 setzt die Priorit t des ange gebenen Threads auf den Standardwert 32 Diese Form dient in der Regel dazu um von main Threads aus andere Threads zu starten Form 2 setzt die Priorit t des aktuell ausge f hrten Threads auf das Ergebnis des angegebenen numerischen Ausdrucks Form 1 run ThreadName zB run blink2 Form 2 run numerischer Ausdruck zB run 100 Beachten Sie da stillstehender Thread Priorit t sich niemals mit run selbst starten kann e halt Die halt Anweisung setzt die Priorit t eines Threads auf O Es gibt zwei Formen Mit Form 1 kann ein beliebiger laufender Thread einen anderen Thread oder auc
110. t aufgeteilt Segment Adressen physischer Speichertyp Verwendung 0 0x00000 OxOFFFF ext FIASH EEPROM Betriebssystem internes RAM Register Hardwarezugriff 0 10000 0x1 FFFF ext Betriebssystemreserve 2 0x20000 Ox2FFFF ext Betriebssystemreserve 3 0x30000 0x3FFFF ext FLASH EEPROM Anwendersystemroutinen 4 0x40000 Ox4FFFF ext FLASH EEPROM 2 VM Codes 5 0x50000 0x5FFFF ext FLASH EEPROM 2 VM Codes 6 0x60000 0x6FFFF ext FLASH EEPROM 2 Programm Konstanten 7 0x70000 NH ext FLASH EEPROM 2 Programm Konstanten 8 0x80000 0x8FFFF ext SRAM C2 Programm Daten 3 2 3 Referenzspannungserzeugung Der Mikrocontroller verf gt ber einen Analog Digital Wandler mit einer Aufl sung von 10 Bit Das hei t gemessene Spannungen k nnen als ganze Zahlen von O bis 1023 dar gestellt werden Die Referenzspannung f r die untere Grenze ist der GND Pegel also OV Die Referenzspannung f r die obere Grenze betr gt 4 096V und wird durch ein pr zises 20 3 Hardware Onrao Referenzspannungs IC erzeugt Die Toleranz der Referenzspannung liegt unter einem Prozent Die maximale Temperaturdrift ber den gesamten zul ssigen Betriebstemperaturbereich betr gt 5 parts per million I ppm 0 0001 Prozent Eine Differenz von einem Bit des digitalisieren Me wertes entspricht einer Spannungs diffe
111. t und Pin 5 der 9poli 26 3 Hardware Onrao Wes k2 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 Wenn Sie die Pins digital RTS mit uC RTS und digital CTS mit uC CTS verbinden dann arbeitet die erste serielle Schnittstelle hwcom mit Handshake Signalen Alternativ k nnen Sie die Pins digital RTS mit PIH 2 und digital CTS mit PIH verbinden Dann ist die zweite serielle Schnittstelle swcom am Pegelwandler ange schlossen digitale Signale NRZ Signale 5232 1641 Pegelwandler E digital TxD 50 digital RxD RxD Loi Im 3 L gt lt J SA oder Ja swcom RxD hwcom mit Handshake ET swcom an zweiten Pegelwandlerkanal Eine Kabelverbindung mit Anschlu an die NRZ Pins TxD RxD RTS CTS darf bis zu 10 Metern lang sein Verwenden Sie nach M glichkeit geschirmte Normkabel Bei l ngeren Leitungen oder ungeschirmten Kabeln k nnen St reinfl sse die Daten bertragung beein tr chtigen Verwenden Sie nur Verbindungskabel deren Anschlu belegung Sie kennen 27 II Unit FS Verbinden Sie niemals die seriellen Sendea
112. tionen Stringverkettung mit dem Operator Funktionen Funktionskopf Parameter und lokale Variablen Ende einer Funktion und Ergebnisr ckgabe Aufruf Typenpr fung Rekursion Inline Funktionen und Anweisungen Threads Definition main Threads Priorit tssteuerung Warten auf Ereignisse Pausen Synchronisation Anweisungen zur Ablaufsteuerung else Bedingte Ausf hrung loop Endlosschleife while Schleife do Schleife for Schleife Vorzeitiger Abbruch Vorzeitige Fortsetzung Programmende O ONRAD 58 59 60 61 6l 62 62 63 63 65 66 66 68 69 70 7 7 72 72 72 73 73 76 76 77 82 82 83 83 83 84 85 85 86 II Unit 6 6 1 6 2 6 3 6 3 1 6 3 2 6 3 3 6 3 4 6 3 5 6 3 6 6 3 7 6 3 8 6 4 6 5 6 5 1 6 5 2 6 5 3 6 6 7 1 7 1 1 7 1 2 7 1 3 7 1 4 7 1 5 7 1 6 71 7 7 1 8 7 1 9 7 1 10 7 2 7 2 1 72 2 72 3 724 Softwareentwicklung Installation und Start der Integrierten Entwicklungsumgebung Quelltexte bearbeiten Richtlinien zur Quelltextformatierung Vorteile der einheitlichen Formatierung Kommentare Bezeichner Ausdr cke Funktionsdefinitionen Threads Anweisungsbl cke Kombinationen mit Schl sselworten zur Ablaufsteuerung Automatischer Compiler Simulation und Debugging Test und Fehlersuche Simulationsumfang Bedienung Programm bertragung in die Unit Standardmodule can c2 Initialisier
113. tlichkeit ber die Quelltexte gro er Programme einfache Wiederverwendung getesteter Module in anderen Projekten verbesserte Lesbarkeit von Quelltexten durch die automatische Bildung eines Namensraumes f r jedes Modul und die Notwendigkeit der Modulspezifikation bei der Verwendung von Bezeichnern aus einem Modul Ein Projekt beschreibt eine Liste von Modulen Die Reihenfolge der Module in der Liste bestimmt die Reihenfolge bei der bersetzung durch den C2 Compiler Das erste Modul in der Liste wird als erstes bersetzt dann das zweite usw bis zum letzten Modul Zusammen mit der Integrierten Entwicklungsumgebung werden zahlreiche Bibliotheks module ausgeliefert die z B Funktionen zum Zugriff auf Systemressourcen der C Control II Unit enthalten In der Praxis besteht ein Projekt zun chst aus einigen dieser Bibliotheksmodule Dann folgen in der Liste die wiederverwendbaren Anwendermodule zB zur Implementierung oft ben tigter Algorithmen wie standardisierte Pr fsummen berechnungen oder hnliches Anschlie end stehen Module mit applikationsspezifischem Code z B zur Ansteuerung einer ganz konkreten externen Hardware Die letzten Module der Liste sind in der Regel die Hauptmodule Sie enthalten unabh ngige Hauptthreads des Programms Die meisten Anwendungen haben nur einen Hauptthread und somit nur ein Hauptmodul am Schlu der Modulliste 5 3 Syntax Grundelemente 5 3 1 Kommentare Sinnvolle Kommentare in einem Programm k
114. twicklungsumgebung 93 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 die rote Ader des Flachbandkabels zum Geh userand zeigt RS232 Schlie en Sie die Versorgungsspannung an die Unit an und aktivieren Sie den Hostmodus siehe Kapitel 4 3 Stellen Sie in der Integrierten Entwicklungsumgebung die korrekte Schnittstelle ein Beenden Sie alle anderen Programme die auf dieselbe serielle Schnittstelle zugreifen laden oder bearbeiten Sie ein C2 Projekt compilieren Sie es und rufen Sie in der Integrierten Entwicklungsumgebung das Men zum bertragen des Programms auf Lesen Sie dazu auch die Online Hilfe 94 7 Standardmodule ENRAD DS Ki 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 Da can c2 CAN Bus constant c2 allgemeine Konstanten hwcom c 1 serielle Schnittstelle Hardwareschnittstelle 120 2 TL Bus Icd c2 Mini LCD der Unit Ipt c2 Druckerschnittstelle ber digitale Ports der Unit math c2 Flie komma Arithmetik mem c2 Bytepuffer
115. ung Statusabfrage f r einen CAN Kanal Test auf bertragungsfehler Nachricht senden Nachricht ver ffentlichen Z hlen der Remote Request Anfragen Einstellen der Empfangs ID Senden einer Remote Request Anforderung Test auf Empfang Empfangene Daten lesen hwcom c2 und swcom c2 Initialisierung Einstellen der bertragungsgeschwindigkeit Setzen des erweiterten Empfangspuffers Verwerfen von Daten 87 87 87 88 88 88 89 89 89 90 90 91 92 92 92 23 93 94 95 95 95 97 97 97 98 98 98 99 99 99 99 100 100 100 101 Inhalt 72 5 7 2 6 127 72 8 729 72 10 73 7 3 1 7 3 2 7 3 3 7 3 4 7 3 5 73 6 73 7 74 74 742 743 74 4 74 5 74 6 747 74 8 749 74 10 7 5 7 5 1 79 2 75 3 75 4 75 5 7 6 7 6 1 7 6 2 7 6 3 7 6 4 Test auf Empfang Lesen eines empfangenen Bytes Empfang von Datenrahmen Test auf Sendebereitschaft Senden eines Bytes Senden von Datenrahmen i2c c2 Initialisierung Start der bertragung Senden der Stopbedingung Schreiben eines Bytes eines Bytes mit Acknowledge Lesen eines Bytes ohne Acknowledge Test auf Sendebereitschaft Ipt c2 Initialisierung Ausgabepuffer leeren Test auf Ausgabebereitschaft Ein Zeichen drucken Text drucken math c2 Mathematische Standardfunktionen Potenzieren Absolutwertfunktionen Minimum und Maximumfunktionen ONRAD 101 101 101 102 102 102 103 103 103 103 104 104 104 104 104
116. ung ist R ckgabe 1 wenn bereit sonst O 7 4 entf llt 104 7 Standardmodule OnrAaD gemeng 74 1 entf llt 7 4 2 entf llt 74 3 entf llt 74 4 entf llt 105 II Unit 7 4 5 entf llt 7 4 6 entf llt 7 4 7 entf llt 7 4 8 entf llt 106 7 Standardmodule OnrAaD TN 74 9 entt llt 7 4 10 entf llt 7 5 Ipt 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 initialisiett die Druckerschnittstelle Eventuell konkurrierende Portfunktionen werden deaktiviert 107 II Unit 75 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 R ckgabe 1 wenn bereit sonst 7 5 4 Ein Zeichen drucken function put byte Die Funktion put gibt ein einzelnes Zeichen ASCII Code auf dem Drucker aus 7 5 5 Text drucken function print byte buf int length Die Funktion print gibt Zeichen ASCIl Codes aus einer Bytepuffervariable auf dem Drucker aus Die Ausgabe erfolgt im Hintergrund D h die Funktion bergibt ledig
117. ungsbedingungen Bereich der zul ssigen Umgebungstemperatur OPC 40 Bereich der zul ssigen relativen Umgebungsluftfeuchte 20 60 9 1 3 Versorgungsspannung Bereich der zul ssigen Versorgungsspannung 8V 24V Stromaufnahme der Unit ohne externe Lasten ca 60 1 max zul ssiger Dauerstrom aus der stabilisieren 5V Spannung der Unit 100mA max zul ssige Verlustleistung der Unit 1 5W 9 1 4 Ports max zul ssiger Strom aus digitalen Ports 5 max zul ssige Summe der Str me an digitalen Ports 50 mA Bereich zul ssiger Eingangsspannung an den Portpins digital und 0 5V 5 5 129 II Unit 9 2 Literaturverzeichnis SIEMENS Infineon 16Bit Microcontrollers C164CI Users Manual R Schultes I Pohle 80C166 Mikrocontroller Franzis Verlag 1994 ISBN 3 7723 5893 4 W Lawrenz Controller Area Network Grundlagen und Praxis 2 Auflage H thig Verlag 1997 ISBN 3 7785 2575 1 Dembowski Computerschnittstellen und Bussysteme H thig Verlag 1997 ISBN 3 7183 2526 Rechenberg Bamberger Hrsg Informatik Handbuch Carl Hanser Verlag 1997 ISBN 3 446 18691 3 S McConnell Code Complete Microsoft Press 1994 ISBN 3 86063 333 3 Hopfen M ller BASIC Einf hrung in das Programmieren VEB Fachbuchverlag leipzig 1987 ISBN 3 343 00367 0 130 Ul CLOCK 22pf Cor C
118. usg nge zweier Ger te miteinander Sie erkennen die Sendeausg nge in der Regel an der negativen Ausgangsspannung im Ruhezustand Wird die zweite serielle Schnittstelle ohne Pegelwandler betrieben gilt wie f r alle digitalen Ports eine maximal zul ssige Leitungsl nge von 0 25 Metern ES Wird die zweite serielle Schnittstelle mit dem Pegelwandler betrieben darf die C Control II Unit nicht mehr direkt von der 1Opoligen Steckerleiste X1 siehe 3 3 1 Anschlu belegung ber den Schnittstellenadapter und das beiliegende Nullmodemkabel mit einem PC verbunden werden 3 3 7 Digitalports PILO PILZ PIH 7 Die C Control II Unit f hrt 16 digitale Ports des Mikrocontrollers nach au en PILO PIL 7 sowie PIHO PILZ An den Digitalports k nnen zB Taster mit Pull Up Widerst nden Digital ICs Optokoppler oder Treiberschaltungen f r Relais angeschlossen werden Die Ports k nnen einzeln in Vierergruppen Nibble byteweise oder im ganzen als 16bit Word angesprochen werden siehe Kapitel 79 Ein Port ist entweder Eingang oder Ausgang ES Schalten Sie niemals zwei Ports direkt zusammen die gleichzeitig als Ausgang arbeiten sollen Eingangsports sind hochohmig und berf hren ein anliegendes Spannungssignal in einen logischen Wert Voraussetzung daf r ist da sich das Spannungssignal innerhalb der f r bzw CMOS ICs definierten Bereiche f r Low oder Highpegel befindet In der weite ren V
119. vergleichen sind um zu entscheiden ob eine eingehenden Nachricht f r diesen Kanal bestimmt ist und zu empfangen ist Ein O Bit bedeutet don t care egal 1 Bit bedeutet compare mu verglichen werden Beispiel g ltig f r alle Kan le 13 00000 0x07FF Ox7FF 07 Empfangs ID egal 0x0120 0x120 0x120 Message ID egal 0x0120 0x121 0x121 Empfang ja nein ja ja nein ja Wenn specialMask ungleich globalMask ist dann werden wegen der UND Verkn pfung f r Kanal 14 weniger Bits als bei den Kan len 13 verglichen Kanal 14 ist also f r mehr eingehende Nachrichten empfangsbereit Man k nnte zB globalMask auf OxO7FF setzen alle 11 ID Bits und specialMask auf 0x0000 Dann ist jeder Kanal 13 nur f r den Empfang genau einer Nachricht zust ndig und Kanal 14 ist ein Universalempf nger Weitere Details zum Nachrichtenempfang siehe auch ab 71 7 96 7 Standardmodule Onrao 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 channel 14 channel 14 kann nur empfangen und ist nie bereit R ckgabe 1 wenn bereit sonst 7 1 3 Test auf bertragungsfehler function error returns int Die Funktion error befragt die integrierte CAN Hardware des C164CI nach dem zuletzt aufgetretenen Fehler Eine Zuordnung eines Fehlers zu einem einzelnen Kanal ist nicht
120. weisungsoperator stehen const Name Text zB const 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 Zeichen ent halten Sie werden jedoch bei Stringoperationen auf maximal 30 Zeichen reduziert 5 6 6 Benannte konstante Arrays Sowohl von numerischen Konstanten als auch von Stringkonstanten lassen sich benannte eindimensionale Arrays anlegen In beiden F llen steht nach dem Bezeichner ein Paar eckiger Klammern 1 Nach dem Zuweisungsoperator werden jeweils durch ein Komma getrennt die einzelnen Elemente aufgelistet Die Gr e des Arrays ergibt sich automatisch aus der Z hlung der aufgelisteten Elemente Ein Array kann auch aus nur einem Element bestehen const Name elementl element2 2 8 const CHARACTERS A ICT 0 100 10000 1000000 17 const TABLEI const TABLE2 const ONE 1 Arrays von numerischen Werten werden automatisch in dem maximal notwendigen Zahlenformat abgelegt Dieses ergibt sich aus dem Element mit dem anspruchsvollsten Datentyp So wird TABLE1 im obigen Beispiel ein Array von 1 wegen des Elementes 1000000 TABLE2 wird ein f1oat Array wegen des Elementes 1
121. wicklungsumgebung entspricht aktuellen Standards und ist intuitiv zu bedienen Details entnehmen Sie bitte der Online Hilfe die Sie durch Dr cken der Taste F1 aufrufen k nnen 6 2 Quelltexte bearbeiten Im Editor der Integrierten Entwicklungsumgebung geben Sie die Quelltexte der einzelnen Module ein Durch das sogenannte Syntax Highlighting werden die verschiedenen Syntaxelemente verschiedenen einstellbaren Farben und Schriftstiien angezeigt Dadurch wird die Lesbarkeit der Programme am Bildschirm und beim Ausdruck erh ht Au erdem k nnen einfache Schreibfehler leichter erkannt werden Der Editor verf gt ber die blichen Funktionen zum laden und Speichern von Dateien Suchen und Ersetzen von Textpassagen sowie ber Undo und Redo f r Quelltext nderungen Weitere Werkzeuge zur Unterst tzung Ihrer Arbeit sind die automatische Vervollst ndigung von Bezeichnern w hrend der Eingabe kontextsensitive Hilfe zu C2 Schl sselw rtern und modul bergreifendes Suchen nach der Definition von C2 Bezeichner im aktuellen Projekt Die genauen Beschreibungen dazu finden Sie in der Online Hilfe der Integrierten Entwicklungsumgebung Taste 1 87 II Unit 6 3 Richtlinien zur Quelltextformatierung 6 3 1 Vorteile der einheitlichen Formatierung F r die syntaktische und funktionale Korrektheit eines Programms ist die Formatierung eines Quelltextes ohne Bedeutung Im Interesse der bersichtlichkeit
122. xplizites capture 80 5 Programmiersprache 2 Onrao f float a b Messwerte byte flag Synchronisationsvariable thread measure capture flag a get_channel_a b get channel b release thread watch d capture flag check a b release 2 Synchronisation von Ressourcenzugriffen durch implizites capture in einer Funktion function send byte buf int length capture wait ressource ready ressource send buf length release 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 zB Modul hwcom c 81 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 Nach dem Schl sselwort i folgt ein numerischer Ausdruck und danach eine Anweisung oder ein Anweisungsblock if Ausdruck Anweisung if Ausdruck Die Anweisung bzw der Block werden nur dann ausgef h
123. y if x lt LIMIT else leave it alone while is good for x 0 9 do_this do_that 91 II Unit 6 4 Automatischer Compiler Bereits w hrend der Eingabe des Quelltextes l uft im Hintergrund die Syntaxanalyse und bersetzung durch den C2 Compiler Im Ergebnis wird direkt im Editorfenster angezeigt ob eine Programmzeile fehlerhaft ist Kreuzsymbol oder zu ausf hrbarem Code f hrt Punktsymbol Das entsprechende Symbol wird vor der Zeile angezeigt Leere Zeilen oder solche die nicht unmittelbar zu ausf hrbarem Code f hren haben kein Symbol Wenn Ihre Eingabe Fehler enth lt werden Ihnen im Meldungsfenster konkrete Fehlerbeschreibungen angezeigt Nachdem Sie alle Modulquelltexte eines Projektes vollst ndig geschrieben und alle syntaktischen Fehler beseitigt haben kann Ihr Programm simuliert oder in die C Control II Unit bertragen werden 6 5 Simulation und Debugging 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 11 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 Von einfachsten Anwendungen abgesehen wird ein Programm selten auf
124. ystem der C Control II Unit l uft eine von Conrad Electronic entwickelte virtuelle Maschine Sie ist funktionell eng an die Programmiersprache C2 gekoppelt und bietet den Anwenderprogrammen einfachen Zugang zu den Systemressourcen 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 Die virtuelle Maschine der C Control II Unit kennt vier Codeformen zwei 16bit Formen und zwei 32bit Formen Form low byte low word high byte low word high word A Befehl 0 63 64 Byte Parameter Word Parameter Byte Parameter Word Parameter An dem Wertebereich in dem der Befehlscode liegt erkennt der Interpreter die Befehlsform Abh ngig von der Befehlsform werden optional Byte Parameter und ein Word Parameter geladen bevor es zu Ausf hrung der dem Codewert zugeordneten Operation kommt Einen berblick ber alle verf gbaren Operationen zu geben f hrt an dieser Stelle zu weit und ist f r das prinzipielle Verst ndnis der C Control II Unit nicht erforderlich 39 II Unit 4 4 3 Multithreading Ein Hauptmerkmal der C Control II Unit ist die Unterst tzung von Multithreading
125. zu synchronisieren function flush Die Funktion flush entfernt alle Daten aus dem Empfangspuffer 72 5 Test auf Empfang function rxd returns int Die Funktion rxd testet ob ein oder mehrere neue Bytes im Empfangspuffer einer seriellen Schnittstelle verf gbar sind Wenn das so ist gibt sie den Wert 1 zur ck anderenfalls 7 2 6 Lesen eines empfangenen Bytes function get returns byte Die Funktion get liest und entfernt ein einzelnes Byte aus dem Empfangspuffer 72 7 Empfang von Datenrahmen function receive byte buf int length long timeout returns int Die Funktion receive liest und entfernt eine Anzahl von Bytes Datenrahmen aus dem Empfangspuffer und kopiert diese in eine Bytepuffervariable Enth lt der Empfangspuffer bei Aufruf der Funktion weniger empfangene Bytes als spezifiziert wartet die Funktion auf 101 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 buf Referenz auf eine Bytepuffervariable length L nge des Puffers timeout Timeout in Millisekunden 7 2 8 Test auf Sendebereitschaft function ready returns int Die Funktion ready pr ft ob eine serielle Schnittstelle bereit f r eine neue bertragung ist R ckgabe 1 wenn bereit sonst 72 9 Senden eines Bytes function put byte c

Download Pdf Manuals

image

Related Search

Related Contents

  OPERATOR`S MANUAL  Le programme et liens de la Commission  IB-141CL-U3 4 baies – station de clonage pour les disques durs  Samsung X638 用户手册  Electrostatic Precipitator Technical & Operation Manual  ブラックボードスタンド看板 取扱説明書  HERMA Labels A4 70x36 mm natural-white recycled paper matt blue angel 2400 pcs.  Turnigy 9XR User Manual  取扱説明書 - シーホネンス  

Copyright © All rights reserved.
Failed to retrieve file