C-Control Pro Mega Series © 2005 Conrad Electronic
I C-Control Pro Mega Series Inhalt 2 Kapitel 1 Wichtige Hinweise 1 Einleitung ................................................................................................................................... 2 2 Lesen dieser ................................................................................................................................... Anleitung 2 3 Handhabung ............................................................................................................................
Inhalt II 1.6 Bibliotheksverwaltung ................................................................................................................................... 52 2 Editor................................................................................................................................... 53 2.1 Editorfunktionen ................................................................................................................................... 53 2.2 Reguläre ...........................
III C-Control Pro Mega Series 3.5 Operatoren ................................................................................................................................... 97 3.6 Kontrollstrukturen ................................................................................................................................... 99 3.7 Funktionen ................................................................................................................................... 103 3.8 Tabellen .........
Kapitel 1
2 1 C-Control Pro Mega Series Wichtige Hinweise Dieses Kapitel behandelt wichtige Informationen zur Gewährleistung, und zum Support und Betrieb der C-Control-Pro Hardware und Software. 1.1 Einleitung Die C-Control Pro Systeme basieren auf dem Atmel Mega 32, bzw. dem Atmel Mega 128 RISC Mikrocontroller. Dieser Mikrocontroller wird in sehr vielen Geräten in großen Stückzahlen eingesetzt.
Wichtige Hinweise 1.3 3 Handhabung Die C-Control Pro Unit enthält empfindliche Bauteile. Diese können durch elektrostatische 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, z.B. durch Berühren eines geerdeten, leitenden Gegenstandes (z.B. Heizkörper). Vermeiden Sie die Berührung der Anschlußpins der C-Control Pro Unit. 1.
4 C-Control Pro Mega Series Sollte die C-Control Pro Unit inklusive Software Ihre Ansprüche nicht befriedigen, oder sollten Sie mit den Gewährleistungs- und Haftungsbedingungen nicht einverstanden sein, nutzen Sie unsere 14tä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! 1.
Wichtige Hinweise · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 5 Unterstützung des externen 64kb SRAM externe Interrupts 3-7 werden unterstützt (Mega128) Routinen für 2.
6 C-Control Pro Mega Series Fehlerkorrekturen · Bei Umlauten stürzt Compiler nicht mehr ab · interner Bytecode Befehl StoreRel32XT korrigiert · Offset in Stringtabelle verbessert Version 1.28 vom 26.04.
Kapitel 2
8 2 C-Control Pro Mega Series Installation In diesem Abschnitt wird die Installation von Hard- und Software erläutert. 2.1 Applicationboard Wichtiger Hinweis zum Ein-Ausbau eines Mega Moduls Für die Verbindung zwischen dem Modul und dem Application Board sind hochwertige Steckverbinder verwendet worden, die eine gute Kontaktierung sicherstellen.
Installation 9 das Hebeln von mehreren Seiten erfolgen. Installation des USB Treibers Bitte verbinden Sie das Application Board mit einem Netzgerät. Sie können hierzu ein Standard Steckernetzteil mit 9V/250mA verwenden. Die Polung ist beliebig, sie wird durch Dioden immer richtig umgesetzt. Je nach zusätzlicher Beschaltung kann es später notwendig sein ein Netzteil mit höherer Leistung zu verwenden. Stellen Sie eine Verbindung zwischen dem Application Board und Ihrem PC mit Hilfe eines USB Kabels her.
10 C-Control Pro Mega Series Danach ist der Pfad zum Verzeichnis des Treibers anzugeben. Hat man die Software nach "C:\Programme" installiert, ist der Pfad "C:\Programme\C-Control-Pro\FTDI USB Driver". Die Nachricht "C-Control Pro USB Device hat den Windows-Logo-Test nicht bestanden....
Installation 11 ganz normal. Sie besagt nicht, daß der Treiber beim Windows-Logo-Test versagt hat, sondern daß der Treiber am (ziemlich kostspieligen) Test in Redmond nicht teilgenommen hat. An dieser Stelle einfach "Installation fortsetzen" drücken. Nach ein paar Sekunden sollte der USB Treiber dann fertig installiert sein. In der PC-Software im Menü Optionen auf IDE klicken und den Bereich Schnittstellen selektieren. Dort den Kommunikationsport "USB0" auswählen.
Kapitel 3
Hardware 3 13 Hardware Dieses Kapitel beschreibt die Hardware die bei der C-Control Pro Serie zur Anwendung kommt. Beschrieben werden die Module von C-Control Pro Mega32 und C-Control Pro Mega128. Weitere Abschnitte erklären Aufbau und Funktion der zugehörigen Application Boards, und die mitgelieferten LCD Module, sowie Tastatur. 3.1 Firmware Das Betriebssystem des C-Control Pro besteht aus folgenden Komponenten: · Bootloader · Interpreter Bootloader Der Bootloader ist immer verfügbar.
14 C-Control Pro Mega Series In der Hauptsache arbeitet der Interpreter den Bytecode ab, der vom Compiler generiert wurde. Weiter sind die meisten Bibliotheksfunktionen in ihm integriert, damit das Bytecodeprogramm z.B. auf Hardwareports zugreifen kann. Die RAM und EEPROM Schnittstelle wird vom Debugger der IDE benutzt, um Zugang zu Variablen zu bekommen, wenn der Debugger bei einem Breakpoint angehalten hat.
Hardware 3.2.1 15 Modul Modulspeicher In dem C-Control Pro Modul sind 32kB FLASH, 1kB EEPROM und 2kB SRAM integriert. Auf dem Application Board befindet sich ein zusätzliches EEPROM mit einer Speichertiefe von 8kB. Dieses EEPROM ist über eine I2C Schnittstelle ansprechbar. Hinweis: Detailliertere Informationen findet man in den PDF-Dateien der IC-Hersteller auf der C-Control Pro Software CD.
16 C-Control Pro Mega Series Niemals zwei Ports direkt zusammenschalten, die gleichzeitig als Ausgang arbeiten sollen! Digitale Eingangspins sind hochohmig oder mit internem Pullup-Widerstand beschaltet und überführen ein anliegendes Spannungssignal in einen logischen Wert. Voraussetzung dafür ist, daß sich das Spannungssignal innerhalb der für TTL-bzw. CMOS-ICs definierten Bereiche für Low- oder Highpegel befindet.
Hardware Technische Daten Modul Hinweis: detailliertere Informationen findet man in den PDF-Dateien der IC-Hersteller auf der C-Control Pro Software CD. Alle Spannungsangaben beziehen sich auf Gleichspannung (DC). Umgebungsbedingungen Bereich der zulässigen Umgebungstemperatur Bereich der zulässigen relativen Umgebungsluftfeuchte Versorgungsspannung 0°C … 70°C 20% … 60% Bereich der zulässigen Versorgungsspannung Stromaufnahme des Moduls ohne externe Lasten 4,5V … 5,5V ca.
18 C-Control Pro Mega Series Reset-Taster (SW5). Im USB-Betrieb wird der Status der Schnittstelle über zwei Leuchtdioden angezeigt (LD4 rot, LD5 grün). Leuchtet nur die grüne LED, so ist die USB-Schnittstelle bereit. Erfolgt eine Datenübertragung, so leuchten beide LEDs. Das gilt auch für den Debugmodus. Ein Blinken der roten LED zeigt einen Fehlerzustand an. Für die USB-Kommunikation wird die SPI-Schnittstelle des Mega32 verwendet (PortB.4 bis PortB.7, PortA.6, PortA.
Hardware 19 LCD-Kontrast (LCD ADJ) Die beste Sichtbarkeit der LCD-Zeichen ergibt sich bei frontaler Betrachtung. Gegebenenfalls muß der Kontrast etwas nachgeregelt werden. Der Kontrast kann über den Drehwiderstand PT1 eingestellt werden. Tastatur Für Benutzereingaben steht eine 12-er Tastatur (0..9,*,#) zur Verfügung. (X15: 13-poliger Stecker). Die Tastatur ist 1 aus 12 organisiert, d.h. jeder Taste ist eine Leitung zugeordnet. Die Tasteninformation wird seriell über ein Schieberegister eingelesen.
20 C-Control Pro Mega Series Eine Kabelverbindung mit Anschluß an die NRZ-Pins TxD, RxD, RTS darf bis zu 10 Metern lang sein. Es sind nach Möglichkeit geschirmte Normkabel zu verwenden. Bei längeren Leitungen oder ungeschirmten Kabeln können Störeinflüsse die Datenübertragung beeinträchtigen. Nur Verbindungskabel verbinden, deren Anschlußbelegung bekannt ist.
Hardware 21 20% … 60% Bereich der zulässigen relativen Umgebungsluftfeuchte Versorgungsspannung 8V … 24V ca. 125mA Bereich der zulässigen Versorgungsspannung Stromaufnahme ohne externe Lasten max. zulässiger Dauerstrom aus der stabilisierten 5V-Spannung 3.2.3 200mA Pinzuordnung PortA bis PortD werden für direkte Pin-Funktionen (z.B. Port_WriteBit) von 0 bis 31 gezählt, siehe "PortBit". Pinbelegung für Application Board Mega32 M32 PIN 1 2 3 Port PortBit Name PB0 PortB.0 PB1 PortB.1 PB2 PortB.
22 3.2.4 C-Control Pro Mega Series 26 27 28 29 30 31 32 33 PC4 PC5 PC6 PC7 PortC.4 PortC.5 PortC.6 PortC.7 PA7 PortA.7 34 PA6 35 20 21 22 23 7 AVCC GND AREF ADC7 RX_BUSY PortA.6 5 ADC6 TX_REQ PA5 PortA.5 5 ADC5 KEY_EN 36 PA4 PortA.4 4 ADC4 LCD_EN 37 PA3 PortA.3 3 ADC3 EXT_SCK 38 PA2 PortA.2 2 ADC2 EXT_DATA 39 40 PA1 PA0 PortA.1 PortA.
Hardware 23 Jumperpositionen im Auslieferzustand JP4 JP4 dient zum Umschalten der Betriebsspannung (Netzteil oder USB). Das Application Board sollte mit Netzteil und Spannungsregler betrieben werden (Auslieferzustand). Der maximal entnehmbare Strom der USB Schnittstelle ist kleiner als der des Netzteils. Ein Überschreiten kann zu Schäden am USB Interface des Computers führen. JP6 Bei Verwendung des Displays kann mit JP6 die Beleuchtung (back light) abgeschaltet werden.
D C B 1 SCHUTZHAUBE-DIL40 * X1 R1 20K * VCC GND VCC C3 10NF/16V * D1 BAS70 * GND GND X1 40 41 42 43 44 1 2 3 9 10 11 12 13 14 15 16 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 4 2 AGND PA0 (ADC0) PA1 (ADC1) PA2 (ADC2) PA3 (ADC3) PA4 (ADC4) RESET PA5 (ADC5) PA6 (ADC6) PB0 (XCK/T0) PA7 (ADC7) PB1 (T1) PB2 (AIN0/INT2) PB3 (AIN1/OC0) PB4 (SS) PB5 (MOSI) PC0 (SCL) PB6 (MISO) PC1 (SDA) PB7 (SCK) PC2 (TCK) PC3 (TMS) PC4 (TDO) PD0 (RXD) PC5 (TDI) PD1 (TXD) PC6 (TOSC1) PD2 (IN
RESET VCC H2 H3 TL36W000050 D3 1N4007 H4 6 5 GND VCC SCL SDA IC2 D4 1N4007 7 1 2 3 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 GND VCC GND C6 100NF/50V GND VIN VOUT IC3 LM78M05 JP4 1 2 3 JUMPER 3 C7 10NF/50V GND 1 L1 VCC GND 3 GND GND VCC GND PAD2 PAD1 C13 10UF/35V VREG C9 100NF/50V C15 100NF/50V VUSB LD3 GND LD2 LD1 R3 390E VCC R2 390E VCC R1 390E VCC C32 100NF/50V LED1 LED2 GND BLM21A 102SPT AREF PAD3 AREF C14 100NF/50V VCC AVCC A
KEY-E LCD-E EXT-SCK EXT-DATA KEY-E LCD-E R23 1K GND GND 8 EXT-SCK 7 9 15 1 2 10 7 9 15 1 2 10 9 1 2 EXT-DATA VCC Q7 Q7 CE PL CP DS IC9 Q7 Q7 CE PL CP DS IC8 MR CP DSA DSB IC7 VCC 14 VCC GND VCC D0 D1 D2 D3 D4 D5 D6 D7 3 4 5 6 10 11 12 13 GND 74HC165 D0 D1 D2 D3 D4 D5 D6 D7 KEY03 KEY06 KEY09 KEY02 GND KEY01 KEY02 KEY09 KEY06 KEY03 KEY12 KEY05 KEY07 KEY11 KEY04 KEY10 KEY08 VCC 11 12 13 14 3 4 5 6 KEY08 KEY10 KEY04 KEY11 KEY07 KEY01 KEY05 KEY1
4X1 1 2 3 4 X16 0E R11 27E GND XF1 2K2 R19 XF2 33PF/16V C27 28 Q2 6.
28 3.2.5.
Hardware 3.3 29 Mega128 Mega128 Übersicht Der Mikrocontroller ATmega128 stammt aus der AVR-Familie von ATMEL. Es handelt sich um einen low-power Mikrocontroller mit Advanced RISC Architecture.
30 C-Control Pro Mega Series Software Selectable Clock Frequency ATmega103 Compatibility Mode Selected by a Fuse Global Pull-up Disable · I/O and Packages 53 Programmable I/O Lines 64-lead TQFP and 64-pad MLF · Operating Voltages 2.7 - 5.5V for ATmega128L 4.5 - 5.5V for ATmega128 3.3.1 Modul Pinlayout des Moduls Das Mega128 Modul wird auf 4 doppelreihigen (2x8) Vierkantstiften ausgeliefert.
Hardware 31 ADC-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 0 bis 1023 dargestellt werden. Die Referenzspannung für die untere Grenze ist der GND-Pegel, also 0V. Die Referenzspannung für die obere Grenze kann vom Benutzer gewählt werden: · 5V Versorgungsspannung (VCC) · interne Referenzspannung von 2,56V · externe Referenzspannung z.B.
32 C-Control Pro Mega Series führen. Nach dem Reset ist zunächst jeder Digitalport als Eingangsport konfiguriert. Über bestimmte Befehle kann die Datenrichtung umgeschaltet werden. Es ist wichtig, vor der Programmierung die Pinzuordnung von M32 und M128 zu studieren, da wichtige Funktionen der Programmentwicklung (z.B. die USB Schnittstelle des Application Boards) auf bestimmten Ports liegen.
Hardware 33 Versorgungsspannung Bereich der zulässigen Versorgungsspannung Stromaufnahme des Moduls ohne externe Lasten 4,5V … 5,5V ca. 20mA Takt Taktfrequenz (Quarzoszillator) Mechanik äußere Abmessungen ohne Pins ca. Masse Pinraster Pinanzahl (zweireihig) 14,7456MHz 40 mm x 40mm x 8 mm ca. 90g 2,54mm 64 Ports Max. zulässiger Strom aus digitalen Ports Zulässige Summe der Ströme an digitalen Ports Zulässige Eingangsspannung an Portpins (digital und A/D) Interne Pullup Widerstände (abschaltbar) 3.3.
34 C-Control Pro Mega Series Leuchtdioden Es stehen 5 Leuchtdioden zur Verfügung. LD3 (grün) befindet sich an der Frontseite unter dem DC-Anschluß und leuchtet, wenn die Versorgungsspannung vorhanden ist. LD4 und LD5 zeigen den Status der USB-Schnittstelle an (siehe Abschnitt USB). Die grünen Leuchtdioden LD1 und LD2 befinden sich neben den vier Tasten und stehen dem Anwender frei zur Verfügung. Sie sind über einen Vorwiderstand an VCC gelegt. Über Jumper kann LD1 an PortG.3 und LD2 an PortG.
Hardware 35 SRAM Auf dem Application Board befindet sich ein SRAM-Chip (K6X1008C2D) von Samsung. Dadurch wird der verfügbare SRAM-Speicher auf 64kByte erweitert. Das SRAM belegt zur Ansteuerung die Ports A , C und teilweise Port G. Wird das SRAM nicht benötigt, dann kann es mit JP7 deaktiviert werden und diese Ports stehen dann dem Anwender zur Verfügung. Obwohl der eingesetzte RAM Chip 128kb Kapazität hat, sind aus Gründen des Speichermodells nur 64kb davon nutzbar.
36 C-Control Pro Mega Series Der Mikrocontroller Atmega128 besitzt hardwareseitig zwei asynchrone serielle Schnittstellen nach RS232-Standard. Das Format kann bei der Initialisierung der Schnittstelle festgelegt werden (Datenbits, Paritätsbit, Stopbit). Auf dem Application Board befindet sich ein hochwertiges Pegelwandler-IC zur Umsetzung der digitalen Bitströme in Non-Return-Zero-Signale nach dem RS232 Standard (positive Spannung für Lowbits, negative Spannung für Highbits) für beide Schnittstellen.
Hardware 37 Technische Daten Application Board Hinweis: Detailliertere Informationen findet man in den PDF-Dateien der IC-Hersteller auf der C-Control Pro Software CD. Alle Spannungsangaben beziehen sich auf Gleichspannung (DC). Mechanik 160 mm x 100 mm 2,54 mm äußere Abmessungen ca. Pinraster Verdrahtungsfeld Umgebungsbedingungen 0°C … 70°C 20% … 60% Bereich der zulässigen Umgebungstemperatur Bereich der zulässigen relativen Umgebungsluftfeuchte Versorgungsspannung 8V … 24V ca.
38 C-Control Pro Mega Series X1_4 X1_3 X1_2 X1_1 X2_5 X2_6 X2_3 X4_10 X4_12 PB4 PB5 PB6 PB7 PG3 PG4 X2_9 X2_10 X2_11 X2_12 X2_13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 1 1 1 1 6 6 12 13 14 15 51 52 OC0 OC1A OC1B OC1C TOSC2 TOSC1 RESET VCC GND XTAL2 XTAL1 INT0 INT1 INT2 INT3 IC1 PD0 PD1 PD2 PD3 PD4 3 3 3 3 3 24 25 26 27 28 X2_14 X2_15 X2_16 X2_7 X2_8 X4_8 X4_7 X4_6 X4_5 X4_4 X4_3 X4_2 X4_1 X2_4 X3_16 X3_15 X3_14 X3_13 X3_12 X3_11 X3_10 X3_9 X4_10 X4_12 X3_8 30 31 32 33 34 35 36 37 38 39
Hardware X3_3 X3_2 X3_1 X4_11 X4_12 X4_9 3.3.4 59 60 61 62 63 64 PF2 PF1 PF0 5 5 5 42 41 40 39 ADC2 ADC1 ADC0 AREF GND AVCC Jumper Application Board Jumper Durch Jumper können bestimmte Optionen ausgewählt werden. Das betrifft einige Ports, welche mit speziellen Funktionen belegt sind (siehe Tabelle der Pinzuordnung von M128). Beispielsweise ist die serielle Schnittstelle über die Pins PortE.0 und PortE.1 realisiert.
40 C-Control Pro Mega Series unterbrochen. Dies kann zur Störung von USB, RS232 etc. auf dem Board führen. Die grau eingezeichnete Markierung stellt den ersten Pin (Pin 0) des Ports dar. JP1 und JP2 Die Jumper sind den Tastern SW1 und SW2 zugeordnet. Es besteht die Möglichkeit, die Taster gegen GND oder VCC zu betreiben. In der Grundeinstellung schalten die Taster gegen GND. JP4 JP4 dient zum Umschalten der Betriebsspannung (Netzteil oder USB).
Hardware Mega 128 Modul 14 16 15 14 13 12 9 8 7 6 5 4 3 2 1 15 11 16 10 X3 3.3.5.
Applicationboard MOD3 X6 X6A 14 3 15 2 16 1 MOD4 12 5 13 6 14 7 15 8 16 11 7 9 8 PG0 PG1 PG2 PG3 PG4 4 5 6 7 8 b0805j GND 4 1 5 2 47k GND BLM21A GND C6 b0805j 100nF C32 b0805j 10nF AREF GND 16 GND JP4 1 1 VUSB 2 3 GND 3 + 10uF 2 - G C13 100nF b0805j + C14 100uF - 1N4007 $plname D4 $plname 1N4007 D3 e03c165 2 taster1 X3B 1 SSSCK MOSI MISO 2 2 3 3 4 4 5 1 6 2 7 3 8 RX-BUSY EXT-A1 EXT-A2 EXT-SCK 4 X5A 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 E
Hardware 5 1k 6 b0805j LCD-D5 2 A1 3 A2 IC2 24Cxx LCD-D4 b0805j 4 11 12 KEY-E 13 GND R28 b0805j 4k7 8 9 10 11 12 13 14 15 16 LCD-RS LCD-E LCD-D5 LCD-D7 b0805j $plname 74HC165 R35 KEY1 4k7 b0805j R36 KEY5 1 4k7 4k7 b0805j R25 4k7 R52 b0805j 4k7 R51 b0805j 4k7 R50 b0805j b0805j 5 GND JP5 9 4 8 3 3 RXD0 TXD0 6 7 7 2 6 1 VCC 8 $plname 9 10 11 12 100nF 7 2 $plname b0805j 4k7 GND 5 C31 R34 KEY7 EXT-T2 1 4 b0805j b0805j SW2 3 100nF
C-Control Pro Mega Series IC11 29 PG0 PG1 24 22 3 30 2 IC10 PG2 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 2 EN C1 CS1 JP7 32 VCC CS2 16 GND GND 0R GND b0805j 19 12 3 18 11 14 4 17 10 15 5 16 9 17 6 15 8 18 7 14 7 19 8 13 6 20 12 5 1D 9 A0 I/O1 I/O8 $plname PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 21 J2 1 2 3 4 5 27 7 26 9 J3 74HC573 13 23 1 GND 11 VCC OE R48 1 1 WE 25 2 VCC 6 8 10 R44 4 $val 28 GND b0805j 3 3
Hardware 3.3.5.
Kapitel 4
IDE 4 47 IDE Die C-Control Pro Benutzeroberfläche (IDE) besteht aus folgenden Hauptelementen: Sidebar für Projekt Dateien Editor Fenster Compiler Meldungen C-Control Ausgaben Variablenfenster © 2005 Conrad Electronic Mehrere Dateien können hier zu einem Projekt abgelegt werden. Es können beliebig viele Editor Fenster geöffnet werden, um Dateien zu editieren. Fehlermeldungen und allgemeine Compilerinformationen werden hier angezeigt. Ausgabe von Debug Nachrichten der CompactC Programme.
48 4.1 C-Control Pro Mega Series Projekte Jedes Programm für das C-Control Pro Modul wird durch ein Projekt konfiguriert. In einem Projekt steht, welche Quelldateien und Bibliotheken benutzt werden. Auch sind hier die Einstellungen des Compilers vermerkt. Ein Projekt besteht aus der Projektdatei mit der Endung ".cprj" und den dazugehörigen Quelldateien. 4.1.1 Projekterstellung Unter dem Menü Projekt kann man mit dem Aufruf von Neu die Projekt erstellen Dialogbox aufrufen.
IDE 49 übersetzt werden. Die Compiler Meldungen werden in einem eigenen Fensterbereich ausgegeben. Kommt es bei der Kompilierung zu Fehlern, so wird pro Zeile ein Fehler beschrieben. Die Form ist: Dateiname(Zeile,Spalte): Fehlerbeschreibung Man kann die Fehlerposition im Quelltext über die Befehle Nächster Fehler (F11) oder Vorheriger Fehler (Shift-F11) finden. Beide Befehle sind im Menüpunkt Projekt.
50 C-Control Pro Mega Series · · · · · 4.1.4 Nach Oben - Die Projektdatei wandert in der Liste nach oben (auch mit Strg - Pfeil rauf) Nach Unten - Die Projektdatei wandert unten (auch mit Strg - Pfeil runter) Umbenennen - Der Name der Projektdatei wird geändert Entfernen - Die Datei wird aus dem Projekt entfernt. Optionen - Die Projektoptionen können geändert werden. Projektoptionen .
IDE 51 Für jedes Projekt können die Compilereinstellungen einzeln geändert werden. Die Einträge Autor, Version, Kommentar können frei beschriftet werden. Sie dienen nur als Erinnerungsstütze um sich später einmal besser an Einzelheiten des Projekts erinnern zu können. In "CPU Auswahl" legt man die Zielplattform des Projekts fest. Klickt man auf "Hardware Abfragen " dann wird das angeschlossene C-Control Pro Modul abgefragt und die CPU richtig ausgewählt.
52 C-Control Pro Mega Series Benutzt ein Thread mehr Platz als zugewiesen, wird der Speicherplatz der anderen Threads in Mitleidenschaft gezogen, und ein Absturz des Programms ist sehr wahrscheinlich. Die Zykluszeit ist die Anzahl der Zyklen (Bytecode Operationen), die ein Thread verarbeiten darf bis zu einem anderen Thread gewechselt wird. Über die Anzahl der Zyklen bis zum Threadwechsel wird auch die Priorität der Threads gesteuert. Siehe auch Threads. 4.1.
IDE 53 · Löschen - Der selektierte Listeneintrag wird gelöscht. · Bibliothek Updaten - Dateien die in der Compilervoreinstellung vorhanden sind, aber in dieser Liste nicht, werden hinzugefügt. 4.2 Editor Man kann in der C-Control Pro Oberfläche mehrere Editorfenster öffnen. Jedes Fenster läßt sich in der Größe und im gezeigten Textauschnitt verändern. Ein Doppelklick auf die Titelzeile maximiert das Fenster. Ein Klick auf den Bereich links neben den Textanfang setzt dort einen Haltepunkt (Breakpoint).
54 C-Control Pro Mega Series · · · · · · Einfügen (Ctrl-V) - kopiert den Inhalt der Ablage an die Cursorposition. Alles Markieren (Ctrl-A) - selektiert den gesamten Text. Suchen (Ctrl-F) - Öffnet den Suchen-Dialog. Weitersuchen (F3) - sucht weiter mit den gleichen Suchkriterien. Ersetzen (Ctrl-R) - Öffnet den Ersetzen-Dialog. Gehe zu (Alt-G) - man kann zu einer bestimmten Zeile springen. Suchen/Ersetzen Dialog · · · · · · Suchtext - Eingabefeld für den zu suchenden Text.
IDE vo.*d vo.+d [qs] [qs]port [^qs] [a-g] {tg}+ \$ 4.3 55 z.B. "vod","void","vqqd" z.B. "void","vqqd" aber nicht "vod" die Buchstaben 'q' oder 's' "qport" oder "sport" alle Buchstaben außer 'q' oder 's' alle Buchstaben zwischen 'a' und 'g' (inklusive) z.B. "tg", "tgtg", "tgtgtg" usw. '$' C-Control Hardware Unter dem Menüpunkt C-Control können die Hardware relevanten Funktionen ausgeführt werden. Dies beinhaltet Übertragen und Starten des Programms auf der Hardware, sowie Passwortfunktionen. 4.3.
56 C-Control Pro Mega Series stören. Nach der Pinzuordnung von M32 und M128 liegt der INT_0 auf dem gleichen Pin wie der SW1. Wird der SW1 beim Einschalten des Moduls gedrückt, führt dies zur Aktivierung des seriellen Bootloader Modus, und das Programm wird nicht automatisch gestartet. 4.3.2 Ausgaben Um Debug Nachrichten anzuzeigen, gibt es einen "Ausgaben" Fensterbereich.
IDE 57 Hat man das Passwort vergessen, gibt es eine Notfallfunktion, um das Modul in den Ausgangszustand zurückzusetzen. Unter C-Control existiert die Option Modul zurücksetzen, mit der man PIN, Interpreter und Programm löschen kann. 4.3.4 Versionsüberprüfung Da die C-Control Pro Mega Serie mehrere Hardware Plattformen zu unterstützt, ist es wichtig, die aktuellen Versionsnummern von Bootloader, Interpreter und Hardwareversion im Auge zu behalten. Dies ist mit Hardware Version im Menü C-Control möglich.
58 C-Control Pro Mega Series Ist man im Debug Modus, so springt man mit Starten (F10) zum nächsten Haltepunkt. Ist kein Breakpoint gesetzt, so wird das Programm normal abgearbeitet, mit der Ausnahme, daß der Programmlauf mit Programm Stoppen angehalten werden kann. Dies funktioniert aber nur wenn das Programm aus dem Debug Modus heraus gestartet wurde. Hat der Debugger im Programm angehalten (der grüne Balken ist sichtbar), so kann man das Programm im Einzelschritt (Singlestep) ausführen lassen.
IDE 59 Programmcode. Dies ist hier nicht erwünscht, da es die Lebenszeit des Flashspeichers (ca. 10000 Schreibzugriffe) drastisch reduzieren würde. 4.4.2 Variablen Fenster Man kann sich im Debugger den Inhalt von Variablen anzeigen lassen. Dafür positioniert man den Mauszeiger über der Variablen, und nach ca. 2 Sekunden wird der Inhalt der Variablen als Tooltip angezeigt. Die Variable wird zuerst gemäß ihrem Datentyp dargestellt, und dann durch Komma getrennt, als Hexzahl mit einem vorangestellten "0x".
60 C-Control Pro Mega Series Es ist nicht möglich, sich den Inhalt von Arrays im Debugger anzusehen.
IDE 61 Auf der linken Seite werden die Indizes des Arrays angezeigt, auf der rechten Seite der Inhalt. Man beachte, daß bei multidimensionalen Arrays die Indizes auf der rechten Seite am schnellsten wachsen. Der Inhalt eines Array Fensters kann bei jedem Halt des Debuggers, oder bei einem Einzelschritt nicht mehr aktuell sein. Wird bei jedem Einzelschritt im Debugger mehrere Array Fenster neu aktualisert, so können Verzögerungen auftreten, da die Daten immer vom Modul geladen werden müssen.
62 4.5.1 C-Control Pro Mega Series Editoreinstellungen · Automatisches Einrücken - drückt man Enter wird der Cursor auf der nächsten Zeile bis zum Anfang der vorherigen Zeile eingerückt. · Einfügen - ist diese Option aus, ist Überschreiben als Standard eingestellt. · Benutze Tabulator - ist dies aktiviert, werden Tab Zeichen eingefügt, sonst werden Leerzeichen benutzt. · Smart Tabulator - mit Tabulator springt man an die Stelle, an der die Zeichen der vorherigen Zeile beginnen.
IDE 63 · Erlaube Draggen - Selektierter Text kann mit der Maus "gedragged" (bei gedrückter linker Maustaste verschoben) werden. · Markierung bei Suchoperation - wird ein gesuchter Text gefunden, ist das Ergebnis selektiert. · Doppelklick selektiert Zeile - normalerweise selektiert ein Doppelklick ein Wort. · Suchtext Text von Cursor - der Text beim "Suchtext" Eingabefeld wird von der Cursorposition übernommen.
64 4.5.3 C-Control Pro Mega Series IDE Einstellungen Man kann einzelne Aspekte der IDE konfigurieren. · Übertragung nach Kompilieren Abfrage - Wurde ein Programm kompiliert, aber nicht zum C-Control Modul übertragen, erfolgt eine Nachfrage beim Benutzer ob das Programm gestartet werden soll. · Letztes Projekt wieder öffnen - Das letzte offene Projekt wird beim Starten der C-Control Pro IDE wieder geöffnet.
IDE 4.5.3.1 65 Kommunikation Über eine Auswahlbox läßt sich die Verbindung zum Application Board einstellen. USB Verbindungen beginnen mit dem Kürzel "USB", und werden dann durchnumeriert: USB0, USB1 ... Serielle Schnittstellen werden genauso behandelt. Sie beginnen mit dem Kürzel "COM": COM0, COM1 .. usw. Mit der Taste "Schnittstellensuche" werden alle Schnittstellen durchsucht, bis die Kommandozeilen Schnittstelle des C-Control Pro reagiert.
66 C-Control Pro Mega Series Damit das Internet Update ordnungsgemäß funktioniert, darf der MS Internet Explorer nicht im "offline" Modus stehen. Ist z.B. wegen einer Firewall, der Zugang auf das Internet durch einen Proxy beschränkt, so können die Proxy Einstellungen wie Adresse, Benutzername und Passwort in diesem Dialog angegeben werden. Sind im MS Internet Explorer Proxy Daten eingetragen, so haben diese eine höhere Priorität, und überschreiben die Einstellungen in diesem Dialog. 4.
IDE 4.7 67 Hilfe Unter dem Menüpunkt Hilfe kann man sich mit Inhalt (Taste F1) die Hilfedatei aufrufen. Der Menüpunkt Programmversion öffnet folgendes "Versionsinformation" Fenster und kopiert gleichzeitig den Inhalt in die Ablage. Soll eine Support email an Conrad geschrieben werden, so sind diese Informationen wichtig. Da sie beim Aufruf von Programmversion auch gleich in der Ablage sind, kann man diese Daten bequem an das Ende einer email einfügen.
Kapitel 5
Compiler 5 Compiler 5.1 Allgemeine Features 69 Dieser Bereich gibt Auskunft über Compiler Eigenschaften und Features die unabhängig von der benutzten Programmiersprache sind. 5.1.1 externes RAM Auf dem Application Board des Mega128 ist externes RAM vorhanden. Dieses RAM wird vom Interpreter automatisch erkannt und für das auszuführende Programm genutzt. Statt ca. 2665 Bytes stehen dann ca. 63848 Bytes als Programmspeicher zur Verfügung. Hierfür muß das Programm nicht neu kompiliert werden.
70 C-Control Pro Mega Series #else // optional ... #endif Man kann kontrollieren, welche Teile eines Quelltextes wirklich kompiliert werden. Nach einer #ifdef symbol Anweisung wird der folgende Text nur kompiliert, wenn das symbol auch durch #define symbol definiert wurde. Ist eine optionale #else Anweisung angegeben, so wird der Quelltext nach #else bearbeitet, wenn das symbol nicht definiert ist.
Compiler 71 werden kann, bitte das character Array großzügig dimensionieren: char txt[60]; txt=__LINE__; Msg_WriteText(txt); Msg_WriteChar(13); txt=__FILE__; Msg_WriteText(txt); Msg_WriteChar(13); txt=__FUNCTION__; Msg_WriteText(txt); Msg_WriteChar(13); 5.1.3 // Zeilennummer ausgeben // LF // Dateinamen ausgeben // LF // Funktionsnamen ausgeben // LF Pragma Anweisungen Mit der Anweisung #pragma kann die Ausgabe und der Ablauf des Compilers gesteuert werden.
72 C-Control Pro Mega Series Gesamtlaenge: 4 bytes Funktion main() count n Gesamtlaenge: 4 bytes 2 2 2 0 Aus dieser Liste ist ersichtlich, daß keine globalen Variablen benutzt werden. Weit existieren zwei Funktionen, "Pulse()" und "main()". Jede dieser Funktionen hat eine Speicherverbrauch von 4 Byte an lokalen Variablen. 5.2 CompactC Eine Möglichkeit den C-Control Pro Mega 32 oder Mega 128 zu programmieren ist in der Programmiersprache CompactC.
Compiler 5.2.2 73 Anweisungen Anweisung Eine Anweisung besteht aus mehreren reservierten Befehlswörtern, Bezeichnern und Operatoren, die mit einem Semikolon (';') am Ende abgeschlossen wird. Um verschiedene Elemente einer Anweisung zu trennen, existiert zwischen den einzelnen Anweisungselementen Zwischenraum, im engl. auch "Whitespaces" genannt. Unter Zwischenraum versteht man Leerzeichen, Tabulatoren und Zeilenvorschübe ("C/R und LF").
74 C-Control Pro Mega Series Bezeichner sind die Namen von Funktionen oder Variablen. · · · · · gültige Zeichen sind die Buchstaben (A-Z,a-z), die Ziffern (0-9) und der Unterstrich ('_') ein Bezeichner beginnt immer mit einem Buchstaben Groß- und Kleinschreibung werden unterschieden reservierte Worte sind als Bezeichner nicht erlaubt die Länge von Bezeichnern ist nicht begrenzt arithmetische Ausdrücke Ein arithmetischer Ausdruck ist eine Menge von Werten, die mit Operatoren verbunden sind.
Compiler 5.2.3 75 Datentypen Werte haben immer einen bestimmten Datentyp. Die Integerwerte (ganzzahlige Werte) haben in CompactC einen 8 oder 16 Bit breiten Datentyp, floating point Zahlen sind immer 4 byte lang. Datentyp char unsigned char byte int unsigned int word float Vorzeichen Wertebereich Bit Ja Nein Nein Ja Nein Nein Ja -128 ... +127 0 ... 255 8 0 ... 255 8 -32768 ... +32767 0 ... 65535 0 ... 65535 ±1.175e-38 to ±3.
76 C-Control Pro Mega Series Möchte man mehrere Variablen des gleichen Typs definieren, so kann man mehrere Variablennamen durch Komma getrennt angeben: Typ Name1, Name2, Name3, ...; Als Typ sind erlaubt: char, unsigned char, byte, int, unsigned int, word ,float Beispiele: int a; int i,j; float xyz; Integer Variablen lassen sich Zahlenwerte dezimal oder als Hexzahl zuweisen. Bei einer Hexzahl werden vor die Zahl die Buchstaben "0x" gesetzt.
Compiler 77 mehrfach im Speicher an. Bei der Beispieldefinition: int x[10]; Wird für die Variable x der 10-fache Speicherplatz angelegt. Den ersten Speicherplatz kann man mit X[0] ansprechen, den zweiten mit x[1], den dritten mit x[2], ... bis x[9]. Man darf bei der Definition natürlich auch andere Indexgrößen wählen. Die Limitierung ist nur der RAM Speicherplatz des C-Control Pro.
78 C-Control Pro Mega Series Funktionen erzeugen lokale Variablen. Lokale Variablen sind nur innerhalb der Funktion erreichbar.
Compiler 5.2.5 79 Operatoren Prioritäten von Operatoren Operatoren teilen arithmetische Ausdrücke in Teilausdrücke. Die Operatoren werden dann in der Reihenfolge ihrer Priorität (Präzedenz) ausgewertet. Ausdrücke mit Operatoren von gleicher Präzedenz werden von links nach rechts berechnet. Beispiel: i= 2+3*4-5; // Ergebnis 9 => erst 3*4, dann +2 danach -5 Mann kann die Reihenfolge der Abarbeitung beinflußen, in dem man Klammern setzt. Klammern haben die größte Priorität.
80 5.2.5.3 C-Control Pro Mega Series ^ exclusives Oder ~ Bitinvertierung 0xff ^ 0x0f 0xf0 ^ 0x0f ~0xff ~0xf0 0xf0 0xff 0 0x0f Bitschiebe Operatoren Bitschiebe Operatoren sind nur für Integer Datentypen erlaubt. Bei einer Bit-Shift Operation wird immer eine 0 an einem Ende hineingeschoben. Operator 5.2.5.
Compiler 5.2.5.6 <= kleiner gleich >= größer gleich == gleich != ungleich 2 <= 2 3 <= 2 2 >= 3 3 >= 2 5 == 5 1 == 2 2 != 2 2 != 5 81 1 0 0 1 1 0 0 1 Logische Operatoren Logische Operatoren sind nur für Integer Datentypen erlaubt. Jeder Wert ungleich null gilt als logisch 1. Die null gilt als logisch 0. Operator 5.2.
82 C-Control Pro Mega Series 5.2.6.2 do .. while Mit einem do .. while Konstrukt lassen sich abhängig von einer Bedingung Anweisungen in einer Schleife wiederholen: do Anweisung while( Ausdruck ); Die Anweisung oder der Anweisungsblock wird ausgeführt. Am Ende wird der Ausdruck ausgewertet. Ist das Ergebnis ungleich 0 kommt es zur wiederholten Ausführung der Anweisung. Der ganze Vorgang wiederholt sich solange, bis der Ausdruck den Wert 0 annimmt.
Compiler 83 for(Anweisung1; Ausdruck; Anweisung2) Anweisung3; Als erstes wird Anweisung1 ausgeführt, die normalerweise eine Initialisierung beinhaltet. Danach erfolgt die Auswertung des Ausdrucks. Ist der Ausdruck ungleich 0 wird Anweisung2 und Anweisung3 ausgeführt, und die Schleife wiederholt sich. Hat der Ausdruck einen Wert von 0 kommt es zum Schleifenabbruch. Wie bei anderen Schleifentypen kann bei Anweisung3, statt einer einzelnen Anweisung, ein Anweisungsblock benutzt werden.
84 C-Control Pro Mega Series a=0; label0: a++; if(a<10) goto label0; } 5.2.6.5 if .. else Eine if Anweisung hat folgende Syntax: if( Ausdruck ) Anweisung1; else Anweisung2; Hinter der if Anweisung folgt in Klammern ein arithmetischer Ausdruck. Wird dieser Ausdruck zu ungleich 0 ausgewertet, dann wird die Anweisung1 ausgeführt. Man kann mit Hilfe des else Befehlswortes eine alternative Anweisung2 definieren, die dann ausgeführt wird, wenn der Ausdruck zu 0 berechnet wurde.
Compiler 85 Anweisung_1; break; case konstante_2: Anweisung_2; break; . . case konstante_n: Anweisung_n; break; // default ist optional default: Anweisung_0; }; Der Wert von Ausdruck wird berechnet. Danach springt die Programmausführung zur Konstante die dem Wert des Ausdrucks entspricht, und führt das Programm dort fort. Entspricht keine Konstante dem Ausdruckswert, so wird das switch Konstrukt verlassen.
86 C-Control Pro Mega Series In diesem Beispiel werden alle drei "a++" Anweisungen ausgeführt, wenn a gleich 1 ist. 5.2.6.7 while Mit einer while Anweisung lassen sich abhängig von einer Bedingung Anweisungen in einer Schleife wiederholen: while( Ausdruck ) Anweisung; Zuerst wird der Ausdruck ausgewertet. Ist das Ergebnis ungleich 0 dann kommt es zur Ausführung der Anweisung.
Compiler 87 Funktionen aufrufen. Ein einfaches Beispiel: void func1(void) { // Anweisungen in Funktion func1 . . } void main(void) { // die Funktion func1 wird zweimal aufgerufen func1(); func1(); } Parameterübergabe Damit Funktionen flexibel nutzbar sind, kann man sie parametrisieren. Hierfür werden in der Klammer nach dem Funktionsnamen die Parameter für die Funktion durch Komma getrennt übergeben. Man gibt ähnlich wie in der Variablendeklaration erst den Datentyp und danach den Parameternamen an.
88 C-Control Pro Mega Series haben. Den Datentyp dieses Wertes gibt man bei der Funktionsdefinition vor dem Namen der Funktion an. Möchte man keinen Wert zurückgeben, benutzt man void als Datentyp. int func1(int a) { return a-10; } Der Rückgabewert wird innerhalb der Funktion mit der Anweisung "return Ausdruck" angegeben. Hat man eine Funktion vom Typ void, so kann man die return Anweisung auch ohne Parameter anwenden, um die Funktion zu verlassen.
Compiler 9 8 7 6 5 4 3 2 1 5.2.8.
90 C-Control Pro Mega Series & | ^ ~ 5.2.8.
Compiler 5.3 91 BASIC Die zweite Programmiersprache für das C-Control Pro Mega Modul ist BASIC. Der Compiler übersetzt die BASIC Befehle in einen Bytecode, der vom Interpreter des C-Control Pro abgearbeitet wird. Der Sprachumfang, des hier verwendeten BASIC Dialektes, entspricht in großen Teilen dem Industriestandard der großen Softwareanbieter.
92 C-Control Pro Mega Series Einfache Anweisung: a= 5 Eine Anweisung muß nicht notwendigerweise komplett in einer Zeile stehen. Mit dem "_" (Unterstrich) Zeichen ist es möglich, eine Anweisung auf die nächste Zeile auszudehnen. If a=5 _ ' Anweisung über 2 Zeilen a=a+10 Auch ist es möglich mehr als eine Anweisung in einer Zeile zu plazieren. Das ":" (Doppelpunkt) Zeichen trennt dann die einzelnen Anweisungen. Aus Gründen der Lesbarkeit sollte von dieser Option aber nur selten Gebrauch gemacht werden.
Compiler 93 Auch Vergleiche sind arithmetische Ausdrücke. Die Vergleichsoperatoren liefern einen Wahrheitswert von "1" oder "0" zurück, je nachdem, ob der Vergleich korrekt war. Der Ausdruck "3 < 5" liefert den Wert "1" (wahr; true). konstante Ausdrücke Ein Ausdruck oder Teile eines Ausdrucks können konstant sein. Diese Teilausdrücke können schon zu Compilerlaufzeit berechnet werden. So wird z.B. 12 + 123 - 15 vom Compiler zu 120 zusammengefaßt.
94 C-Control Pro Mega Series addiert. Der Datentyp des Ergebnisses ist auch Single. Es gelten bei der Typkonvertierung folgende Regeln: · Ist bei der Verknüpfung von zwei 8 Bit oder 16 Bit Integerwerten einer der beiden Datentypen vorzeichenbehaftet so ist auch das Ergebnis des Ausdrucks vorzeichenbehaftet. · Ist einer der beiden Operanden vom Typ Single, so ist auch das Ergebnis vom Typ Single.
Compiler 95 SizeOf Operator Mit dem Operator SizeOf() kann die Anzahl der Bytes bestimmt werden, die eine Variable im Speicher belegt. Beispiel: Dim s As Integer Dim f As Single s=SizeOf(f) ' der Wert von s ist 4 Bei Arrays wird auch nur die Bytelänge des Grunddatentyps zurückgegeben. Man muß den Wert mit der Anzahl der Elemente multiplizieren, um den Speicherverbrauch des Arrays zu berechnen.
96 C-Control Pro Mega Series str1="Hallo Welt!" Man kann keinen String einem mehrdimensionalen Char Array zuweisen. Es gibt aber Tricks für Fortgeschrittene: Dim str_array(3,40) As Char Dim Single_str(40) As Char Single_str="A String" Str_StrCopy(str_array,Single_str,40) // kopiert Single_str in den zweiten String v Dies funktioniert, da mit einem Abstand von 40 Zeichen hinter dem ersten String, in str_array der Platz für den zweiten String liegt.
Compiler 97 Sub func1() Static a As Integer End Sub Static Variablen behalten im Gegensatz zu normalen lokalen Variablen ihren Wert auch, wenn die Funktion verlassen wird. Bei einem weiteren Aufruf der Funktion hat die statische Variable den gleichen Inhalt wie beim Verlassen der Funktion. Damit der Inhalt einer Static Variable bei dem ersten Zugriff definiert ist, werden statische Variablen wie globale auch bei Programmstart mit null initialisiert. 5.3.
98 5.3.5.2 C-Control Pro Mega Series Bitoperatoren Bitoperatoren sind nur für Integer Datentypen erlaubt. Operator 5.3.5.3 Erklärung And Und Or Oder Xor exclusives Oder Not Bitinvertierung Beispiel Ergebnis &H0f And 3 &Hf0 And &H0f 1 Or 3 &Hf0 Or &H0f &Hff Xor &H0f &Hf0 Xor &H0f Not &Hff Not &Hf0 3 0 3 &Hff &Hf0 &Hff 0 &H0f Bitschiebe Operatoren Bitschiebe Operatoren sind nur für Integer Datentypen erlaubt. Bei einer Bit-Shift Operation wird immer eine 0 an einem Ende hineingeschoben.
Compiler 5.3.6 99 Kontrollstrukturen Kontrollstrukturen erlauben es den Programmablauf in Abhängigkeit von Ausdrücken, Variablen oder äußeren Einflüssen zu ändern. 5.3.6.1 Do Loop While Mit einem Do ... Loop While Konstrukt lassen sich abhängig von einer Bedingung Anweisungen in einer Schleife wiederholen: Do Anweisungen Loop While Ausdruck Die Anweisungen werden ausgeführt. Am Ende wird der Ausdruck ausgewertet. Ist das Ergebnis ungleich 0 kommt es zur wiederholten Ausführung der Anweisungen.
100 5.3.6.2 C-Control Pro Mega Series Do While Mit einer while Anweisung lassen sich abhängig von einer Bedingung Anweisungen in einer Schleife wiederholen: Do While Ausdruck Anweisungen End While Zuerst wird der Ausdruck ausgewertet. Ist das Ergebnis ungleich 0 dann kommt es zur Ausführung der Anweisung. Danach erfolgt wieder die Berechnung des Ausdrucks und der ganze Vorgang wiederholt sich solange, bis der Ausdruck den Wert 0 annimmt.
Compiler 101 Da bei der For Next Schleife besonders optimiert wird, muß die Zählervariable vom Typ Integer sein. Beispiele: For i=1 To 10 If i>a Then a=i End If a=a-1 Next For i=1 To 10 Step 3 If i>3 Then a=i End If a=a-1 Next ' Erhöhe i in 3er Schritten An dieser Stelle nochmal der Hinweis, Arrays sind immer nullbasiert. Eine For Next Schleife, sollte daher bei einem Array Zugriff, eher von 0 nach 9 laufen.
102 5.3.6.5 C-Control Pro Mega Series If .. Else Eine If Anweisung hat folgende Syntax: If Ausdruck1 Then Anweisungen1 ElseIf Ausdruck2 Then Anweisungen2 Else Anweisungen3 End If Hinter der If Anweisung folgt ein arithmetischer Ausdruck. Wird dieser Ausdruck zu ungleich 0 ausgewertet, dann werden die Anweisungen1 ausgeführt. Man kann mit Hilfe des Else Befehlswortes alternative Anweisungen2 definieren, die dann ausgeführt wird, wenn der Ausdruck zu 0 berechnet wurde.
Compiler 5.3.6.6 103 Select Case Sollen in Abhängigkeit vom Wert eines Ausdrucks verschiedene Befehle ausgeführt werden, so ist eine Select Case Anweisung sehr elegant: Select Case Ausdruck Case konstante_1 Anweisungen_1 Case konstante_2 Anweisungen_2 . . Case konstante_n Anweisungen_n Else ' Else ist optional Anweisungen End Case Der Wert von Ausdruck wird berechnet. Danach springt die Programmausführung zur Konstante, die dem Wert des Ausdrucks entspricht, und führt das Programm dort fort.
104 C-Control Pro Mega Series . End Sub Sub main() ' die Funktion func1 wird zweimal aufgerufen func1() func1() End Sub Parameterübergabe Damit Funktionen flexibel nutzbar sind, kann man sie parametrisieren. Hierfür werden in der Klammer nach dem Funktionsnamen die Parameter für die Funktion durch Komma getrennt übergeben. Man gibt ähnlich wie in der Variablendeklaration erst den Parameternamen, und danach den Datentyp an. Will man keinen Parameter übergeben, so läßt man die Klammer leer.
Compiler 105 anwenden, um die Funktion zu verlassen. Referenzen Da es nicht möglich ist, Arrays als Parameter zu übergeben, kann man auf Arrays über Referenzen zugreifen.
106 5.3.8.2 C-Control Pro Mega Series Operatoren Arithmetische Operatoren + * / Mod - Addition Subtraktion Multiplikation Division Modulo negatives Vorzeichen Vergleichsoperatoren < > <= >= = <> kleiner größer kleiner gleich größer gleich gleich ungleich Bitschiebeoperatoren << >> um ein Bit nach links schieben um ein Bit nach rechts schieben Bitoperatoren And Or Xor Not 5.3.8.
Compiler 5.4 107 Bibliotheken In diesem Teil der Dokumentation sind alle mitgelieferten Hilfsfunktionen beschrieben, die es dem Benutzer ermöglichen komfortabel auf die Hardware zuzugreifen. Am Anfang wird für jede Funktion die Syntax für CompactC und BASIC dargestellt. Dann folgt eine Beschreibung der Funktion und der beteiligten Parameter. 5.4.
108 5.4.3 C-Control Pro Mega Series Analog-Comparator Der Analog-Comparator ermöglicht, zwei analoge Signale zu vergleichen. Das Ergebnis dieses Vergleichs wird entweder als „0" oder „1" zurückgegeben. 5.4.3.1 AComp AComp Funktionen Beispiel Syntax void AComp(byte mode); Sub AComp(mode As Byte); Beschreibung Der Analog-Comparator ermöglicht, zwei analoge Signale zu vergleichen. Das Ergebnis dieses Vergleichs wird entweder als „0" oder „1" zurückgegeben (Ausgang des Komparators).
Compiler 5.4.3.2 109 AComp Beispiel Beispiel: Verwendung des Analog-Comparators // // // // // // AComp: Analog Comparator Mega32: Eingang (+) PB2 (PortB.2) bzw. band gap reference 1,22V Eingang (-) PB3 (PortB.3) Mega128: Eingang (+) PE2 (PortE.2) bzw. band gap reference 1,22V Eingang (-) PE3 (PortE.3) erforderliche Library: IntFunc_Lib.cc // // // // // // // // // // Die Funktion AComp gibt den Wert des Komparators zurück.
110 C-Control Pro Mega Series · Interne Spannungsreferenz 2,56V mit Kondensator an AREF Analogeingänge ADC0 ... ADC7, ADC_BG, ADC_GND Als Eingänge für den ADC stehen die Eingänge ADC0 ... ADC7 (Port A.0 bis A.7 bei Mega32, Port F.0 bis F.7 bei Mega128), eine interne Bandgap (1,22V) oder GND (0V) zur Verfügung. ADC_BG und ADC_GND können zur Überprüfung des ADC verwendet werden.
Compiler 111 Parameter Keine 5.4.4.2 ADC_Read ADC Funktionen Syntax word ADC_Read(void); Sub ADC_Read() As Word Beschreibung Die Funktion ADC_Read liefert den digitalisierten Meßwert von einem der 8 ADC-Ports. Die Nummer des Ports (0..7) wurde beim Aufruf von ADC_Set() als Parameter übergeben. Das Ergebnis ist im Bereich von 0 bis 1023 - entsprechend der 10bit-Auflösung des A/D-Wandlers.
112 5.4.4.4 C-Control Pro Mega Series ADC_Set ADC Funktionen Syntax word ADC_Set(byte v_ref,byte channel); Sub ADC_Set(v_ref As Byte,channel As Byte) As Word Beschreibung Die Funktion ADC_Set initialisiert den Analog-Digital_Wandler. Die Referenzspannung und der Messkanal werden ausgewählt, und der A/D Wandler für die Messungen vorbereitet. Der Meßwert wird danach mit ADC_Read() ausgelesen. Parameter channel Portnummer (0..7) des ADC (Port A.0 bis A.7 bei Mega32, Port F.0 bis F.
Compiler Name Wert ADC_VREF_BG ADC_VREF_VCC ADC_VREF_EXT 0xC0 0x40 0x00 113 Beschreibung 2,56V interne Referenzspannung Versorgungsspannung (5V) externe Referenzspannung an PAD3 Für den Standort von PAD3 siehe Jumper Application Board M32 oder M128. 5.4.4.6 ADC_StartInt ADC Funktionen Syntax void ADC_StartInt(void); Sub ADC_StartInt() Beschreibung Die Messung wird gestartet, wenn vorher der A/D Wandler mit Hilfe von ADC_SetInt() auf Interruptbetrieb initialisert wurde.
114 C-Control Pro Mega Series Bits Bedeutung 20 21 - 27 28 29 - 34 35 36 - 41 42 - 44 45 - 49 50 - 57 58 Startbit (ist immer "1") Minute Parität Minute Stunde Parität Stunde Monatstag Wochentag Monat Jahr Parität Datum Das bedeutet, daß der Empfang mindestens eine volle Minute laufen muß, bevor die Zeitinformation zur Verfügung stehen kann. Die innerhalb dieser Minute dekodierte Information ist lediglich durch drei Paritätsbits gesichert.
Compiler 115 RTC (Real Time Clock) Die RTC wird mit einem 10ms Interrupt gesteuert und läuft im Hintergrund unabhängig vom Anwenderprogramm. Jede Sekunde wird die Anzeige auf dem LCD-Display ausgegeben. Das Anzeigeformat ist 1. Zeile: Stunde : Minute : Sekunde 2. Zeile: Tag . Monat . Jahr Die LED1 blinkt einmal pro Sekunde. Nach dem Programmstart, beginnt die RTC mit der festgelegten Uhrzeit. Das Datum ist auf Null gesetzt und zeigt an, daß noch kein DCF-Zeitabgleich erfolgt ist.
116 5.4.5.3 C-Control Pro Mega Series DCF_PULS DCF Funktionen Syntax void DCF_PULS(void); Sub DCF_PULS() Beschreibung DCF_Mode auf 1 schalten ("Puls suchen"). Parameter Keine 5.4.5.4 DCF_START DCF Funktionen Syntax void DCF_START(void); Sub DCF_START() Beschreibung DCF_START initialisiert alle verwendeten Variablen und setzt DCF_Mode auf 1. Die DCF-Zeiterfassung läuft jetzt automatisch ab. Parameter Keine 5.4.5.
Compiler 5.4.6 117 Debug Die Debug Message Funktionen erlauben es, formatierten Text auf das Ausgabefenster der IDE zu senden. Diese Funktionen sind interruptgetrieben mit einem Puffer von bis zu 128 Byte. D.h., 128 Byte können über die Debug Schnittstelle abgesetzt werden, ohne daß das Mega 32 oder Mega 128 Modul auf die Vollendung der Ausgabe warten muß. Die Übertragung der einzelnen Zeichen geschieht im Hintergrund.
118 C-Control Pro Mega Series void Msg_WriteHex(word val); Sub Msg_WriteHex(val As Word) Beschreibung Der übergebene 16bit Wert wird im Ausgabenfenster dargestellt. Die Ausgabe wird als Hexzahl mit 4 Stellen formatiert. Ist die Zahl kleiner als vierstellig, werden die ersten Stellen mit Nullen aufgefüllt. Parameter val 16bit Wert 5.4.6.
Compiler 5.4.6.6 119 Msg_WriteWord Debug Message Funktionen Syntax void Msg_WriteWord(word val); Sub Msg_WriteWord(val As Word) Beschreibung Der Parameter val wird als vorzeichenlose Zahl in das Ausgabenfenster geschrieben. Parameter val 16bit unsigned integer Wert 5.4.7 EEPROM Auf dem C-Control Pro Modul sind M32:1kB M128:4kB EEPROM integriert. Diese Bibliotheksfunktionen ermöglichen den Zugriff auf das EEPROM vom Interpreter.
120 C-Control Pro Mega Series word EEPROM_ReadWord(word pos); Sub EEPROM_ReadWord(pos As Word) As Word Beschreibung Liest ein word von Position pos aus dem EEPROM. Die ersten 32 byte sind für das C-Control Pro OS reserviert. Ein Wert für pos von 0 und größer greift deshalb auf byte 32 und aufwärts im EEPROM zu. Der Wert von pos ist eine Byte Position im EEPROM. Dies sollte bei word oder Fließkommazugriffen beachtet werden.
Compiler 121 Beschreibung Schreibt ein byte an Position pos in das EEPROM. Die ersten 32 byte sind für das C-Control Pro OS reserviert. Ein Wert für pos von 0 und größer greift deshalb auf byte 32 und aufwärts im EEPROM zu. Parameter pos Position im EEPROM val der ins EEPROM zu schreibende Wert 5.4.7.5 EEPROM_WriteWord EEPROM Funktionen Syntax void EEPROM_WriteWord(word pos,word val); Sub EEPROM_WriteWord(pos As Word,val As Word) Beschreibung Schreibt ein word an Position pos in das EEPROM.
122 C-Control Pro Mega Series pos Byte Position im EEPROM val der ins EEPROM zu schreibende Wert 5.4.8 I2C Der Controller verfügt über eine I2C-Logik, die eine effektive Kommunikation ermöglicht. Der Controller arbeitet als I2C-Master (single master system). Eine Betriebsart als Slave ist möglich, aber in der jetzigen Version nicht implementiert. 5.4.8.
Compiler 5.4.8.3 123 I2C_Read_NACK I2C Funktionen Beispiel Syntax byte I2C_Read_NACK(void); Sub I2C_Read_NACK() As Byte Beschreibung Diese Funktion empfängt ein Byte und quittiert mit NACK. Danach kann mit I2C_Status, der Status der Schnittstelle abgefragt werden. Rückgabewert gelesener Wert vom I2C Bus 5.4.8.4 I2C_Start I2C Funktionen Beispiel Syntax void I2C_Start(void); Sub I2C_Start() Beschreibung Diese Funktion leitet die Kommunikation mit einer Startsequenz ein.
124 C-Control Pro Mega Series Rückgabewert aktueller I2C Status 5.4.8.6 I2C_Stop I2C Funktionen Beispiel Syntax void I2C_Stop(void); Sub I2C_Stop() Beschreibung Diese Funktion beendet die Kommunikation mit einer Stopsequenz. Danach kann mit I2C_Status, der Status der Schnittstelle abgefragt werden. Parameter Keine 5.4.8.7 I2C_Write I2C Funktionen Beispiel Syntax void I2C_Write(byte data); Sub I2C_Write(data As Byte) Beschreibung Diese Funktion sendet ein Byte.
Compiler 0x08 0x10 0x18 0x20 0x28 0x30 0x38 eine START Sequenz wurde gesendet eine "repeated" START Sequenz wurde gesendet SLA+W wurde gesendet, ACK wurde empfangen SLA+W wurde gesendet, NACK wurde empfangen Data byte wurde gesendet, ACK wurde empfangen Data byte wurde gesendet, NACK wurde empfangen Konflikt in SLA+W or data bytes Tabelle: Status Codes Master Receiver Mode Status Code 0x08 0x10 0x38 0x40 0x48 0x50 0x58 © 2005 Conrad Electronic Beschreibung eine START Sequenz wurde gesendet eine "repeat
126 C-Control Pro Mega Series 5.4.8.
Compiler INT_TIM1CMPA INT_TIM1CMPB INT_TIM1OVF INT_TIM0COMP INT_TIM0OVF INT_ANA_COMP INT_ADC INT_TIM2COMP INT_TIM2OVF INT_TIM3CAPT INT_TIM3CMPA INT_TIM3CMPB INT_TIM3CMPC INT_TIM3OVF 127 Timer1 CompareA Timer1 CompareB Timer1 Overflow Timer0 Compare Timer0 Overflow Analog Comparator ADC Timer2 Compare Timer2 Overflow Timer3 Capture (nur Mega128) Timer3 CompareA (nur Mega128) Timer3 CompareB (nur Mega128) Timer3 CompareC (nur Mega128) Timer3 Overflow (nur Mega128) Der betreffende Interrupt muß in einer Int
128 5.4.9.2 C-Control Pro Mega Series Ext_IntDisable Interrupt Funktionen Syntax void Ext_Int0Disable(byte IRQ); Sub Ext_Int0Disable(IRQ As Byte) Beschreibung Der externe Interrupt IRQ wird gesperrt. Parameter IRQ Nummer des zu sperrenden Interrupts 5.4.9.3 Irq_GetCount Interrupt Funktionen Beispiel Syntax byte Irq_GetCount(void); Sub Irq_GetCount() As Byte Beschreibung Signalisiert, daß der Interrupt abgearbeitet wurde (interrupt acknowledge).
Compiler 129 Parameter irqnr spezifiziert den Typ des Interrupts (siehe Tabelle) vect ist der Name der aufzurufenden Interrupt Funktion Anmerkung Der Fließkomma Datentyp mag unpassend erscheinen, aber er wird intern als 4 Byte Wert behandelt. Ein Funktionszeiger muß seit der Mega128 Unterstützung mehr als 16 Bit lang sein. Tabelle Interrupt Vektoren: 5.4.9.
130 C-Control Pro Mega Series 5.4.10 Keyboard Ein Teil dieser Routinen sind im Interpreter implementiert, ein anderer Teil wird durch Hinzufügen der Bibliothek "Key_Lib.cc" aufrufbar. Da die Funktionen in "LCD_Lib.cc" durch Bytecode realisiert werden, sind sie langsamer in der Abarbeitung. Bibliotheksfunktionen haben allerdings den Vorteil, daß man bei Nichtgebrauch, diese Funktionen durch Weglassen der Bibliothek aus dem Projekt nimmt.
Compiler 131 Beschreibung Diese Hilfsfunktion liefert das Zeichen zurück, das dem ersten Auftauchen einer "1" im Bitfeld des Eingabeparameters entspricht. Parameter keys Bitfeld das von Key_Scan() zurückgeliefert wird Rückgabewert ASCII Wert der erkannten Taste -1 wenn keine Taste gedrückt wird 5.4.11 LCD Ein Teil dieser Routinen sind im Interpreter implementiert, ein anderer Teil wird durch Hinzufügen der Bibliothek "LCD_Lib.cc" aufrufbar. Da die Funktionen in "LCD_Lib.
132 C-Control Pro Mega Series Parameter Keine 5.4.11.3 LCD_CursorOn LCD Funktionen (Bibliothek "LCD_Lib.cc") Syntax void LCD_CursorOn(void); Sub LCD_CursorOn() Beschreibung Schaltet den Cursor des Display ein. Parameter Keine 5.4.11.4 LCD_CursorPos LCD Funktionen (Bibliothek "LCD_Lib.cc") Syntax void LCD_CursorPos(byte pos); Sub LCD_CursorPos(pos As Byte) Beschreibung Setzt den Cursor auf Position pos.
Compiler 0x40-0x5f 0x20-0x3f 0x60-0x6f 5.4.11.5 133 0-31in der 2. Zeile 0-31in der 3. Zeile 0-31in der 4. Zeile LCD_Init LCD Funktionen (Bibliothek "LCD_Lib.cc") Syntax void LCD_Init(void); Sub LCD_Init() Beschreibung "Highlevel" Initialisierung des LCD Display. Ruft als erstes LCD_InitDisplay() auf. Parameter Keine 5.4.11.6 LCD_SubInit LCD Funktionen Syntax void LCD_SubInit(void); Sub LCD_SubInit() Beschreibung Initialisiert die Ports für die Displaysteuerung auf Assemblerebene.
134 C-Control Pro Mega Series Beschreibung Die Funktion wartet, bis der Display Controller nicht mehr "Busy" ist. Wird vorher auf den Controller zugegriffen, wird der Datenaufbau im Display gestört. Parameter Keine 5.4.11.8 LCD_WriteChar LCD Funktionen (Bibliothek "LCD_Lib.cc") Syntax void LCD_WriteChar(char c); Sub LCD_WriteChar(c As Char) Beschreibung Schreibt ein Zeichen an die Cursorposition im LCD Display. Parameter c ASCII Wert des Zeichens 5.4.11.
Compiler 135 Beschreibung Schickt ein Datenbyte zum Display Controller. Parameter x Datenbyte 5.4.11.11 LCD_WriteRegister LCD Funktionen (Bibliothek "LCD_Lib.cc") Syntax void LCD_WriteRegister(byte y,byte x); Sub LCD_WriteRegister(y As Byte,x As Byte) Beschreibung LCD_WriteRegister zerlegt das Datenbyte y in zwei Nibble und schickt sie zum Display Controller. Parameter y Datenbyte x Kommandonibble 5.4.11.12 LCD_WriteText LCD Funktionen (Bibliothek "LCD_Lib.
136 C-Control Pro Mega Series 5.4.12 Port Der Atmel Mega 32 hat 4 Ein-/Ausgabeports zu je 8 Bit. Der Atmel Mega 128 hat 6 Ein-/Ausgabeports zu je 8 Bit und ein Ein-/Ausgabeports zu 5 Bit.Jedes Bit der einzelnen Ports kann als Eingang oder als Ausgang konfiguriert werden. Da aber die Anzahl der Pins der Mega 32 Risc CPU begrenzt ist, sind zusätzliche Funktionen einzelnen Ports zugeordnet. Eine Tabelle der Pinzuordnung von M32 und M128 ist in der Dokumentation..
Compiler 5.4.12.2 137 Port_DataDirBit Port Funktionen Syntax void Port_DataDirBit(byte portbit,byte val); Sub Port_DataDirBit(portbit As Byte,val As Byte) Beschreibung Die Funktion Port_DataDirBit konfiguriert ein Bit (Pin) eines Ports zur Ein- oder Ausgabe. Ist das Bit '1', dann wird der Pin auf Ausgang geschaltet, sonst auf Eingang. Ein Beispiel: Ist portbit = 9 und val = 0, dann wird der Pin 2 des Atmel Mega (gleich PortB.1 - siehe Pinzuordnung von M32 und M128) auf Eingang konfiguriert.
138 C-Control Pro Mega Series 5.4.12.3 Port_Read Port Funktionen Syntax byte Port_Read(byte port); Sub Port_Read(port As Byte) As Byte Beschreibung Liest ein Byte vom spezifizierten Port. Nur die Pins des Ports, die auf Eingang geschaltet sind, liefern einen gültigen Wert an der entsprechenden Bitposition in dem gelesenen Byte zurück. (Für die Abbildung zwischen Portbits und den Pins des Atmel Mega Chips siehe Pinzuordnung von M32 und M128).
Compiler 139 portbit Bitnummer des Ports (siehe Tabelle) Rückgabewert Bitwert des Ports (0 oder 1) Portbits Tabelle Definition Portbit PortA.0 ... PortA.7 PortB.0 0 ... 7 ... PortB.7 PortC.0 ... PortC.7 PortD.0 ... PortD.7 ab hier nur Mega128 PortE.0 ... PortE.7 PortF.0 ... PortF.7 PortG.0 ... PortG.4 5.4.12.5 8 ... 15 16 ... 23 24 ... 31 32 ... 39 40 ... 47 48 ...
140 C-Control Pro Mega Series port Portnummer (siehe Tabelle) val Ausgabe byte Portnummern Tabelle 5.4.12.6 Definition Wert PortA PortB PortC PortD PortE (Mega128) PortF (Mega128) PortG (Mega128) 0 1 2 3 4 5 6 Port_WriteBit Port Funktionen Syntax void Port_WriteBit(byte portbit,byte val); Sub Port_WriteBit(portbit As Byte,val As Byte) Beschreibung Die Funktion Port_WriteBit setzt den Wert eines Pins, der auf Ausgang geschaltet ist.
Compiler PortD.0 ... PortD.7 ab hier nur Mega128 PortE.0 ... PortE.7 PortF.0 ... PortF.7 PortG.0 ... PortG.4 5.4.12.7 141 24 ... 31 32 ... 39 40 ... 47 48 ...
142 C-Control Pro Mega Series Beschreibung Der Arcus Cosinus wird berechnet. Der Winkel wird in Radiant angegeben. Ein- und Ausgabewerte liegen zwischen -pi und +pi. Parameter val Wert von dem die Funktion berechnet wird Rückgabewert Arcus Cosinus des Eingabewertes. 5.4.13.2 asin Mathematische Funktionen Syntax float asin(float val); Sub asin(val As Single) As Single Beschreibung Der Arcus Sinus wird berechnet. Der Winkel wird in Radiant angegeben. Ein- und Ausgabewerte liegen zwischen -pi und +pi.
Compiler Arcus Tangens des Eingabewertes. 5.4.13.4 ceil Mathematische Funktionen Syntax float ceil(float val); Sub ceil(val As Single) As Single Beschreibung Die nächst größere Integerzahl zu der Fließkommazahl val wird berechnet. Parameter val Wert von dem der Integer berechnet wird Rückgabewert Ergebnis der Funktion 5.4.13.5 cos Mathematische Funktionen Syntax float cos(float val); Sub cos(val As Single) As Single Beschreibung Der Cosinus wird berechnet. Der Winkel wird in Radiant angegeben.
144 C-Control Pro Mega Series Beschreibung Die Funktion e ^ val wird berechnet Parameter val Exponent Rückgabewert Ergebnis der Funktion 5.4.13.7 fabs Mathematische Funktionen Syntax float fabs(float val); Sub fabs(val As Single) As Single Beschreibung Der Absolutwert der Fließkommazahl wird berechnet. Parameter val Eingabewert Rückgabewert Ergebnis der Funktion 5.4.13.
Compiler 5.4.13.9 ldexp Mathematische Funktionen Syntax float ldexp(float val,int expn); Sub ldexp(val As Single,expn As Integer) As Single Beschreibung Die Funktion val * 2 ^ expn wird berechnet Parameter val Multiplikator expn Exponent Rückgabewert Ergebnis der Funktion 5.4.13.10 ln Mathematische Funktionen Syntax float ln(float val); Sub ln(val As Single) As Single Beschreibung Der natürliche Logarithmus wird berechnet. Parameter val Eingabewert Rückgabewert Ergebnis der Funktion 5.4.13.
146 C-Control Pro Mega Series Der Logarithmus zur Basis 10 wird berechnet. Parameter val Eingabewert Rückgabewert Ergebnis der Funktion 5.4.13.12 pow Mathematische Funktionen Syntax float pow(float x,float y); Sub pow(x As Single,y As Single) As Single Beschreibung Potenzfunktion. Die Funktion x ^ y wird berechnet Parameter x Basis y Exponent Rückgabewert Ergebnis der Funktion 5.4.13.
Compiler 147 5.4.13.14 sqrt Mathematische Funktionen Syntax float sqrt(float val); Sub sqrt(val As Single) As Single Beschreibung Die Quadratwurzel wird berechnet. Parameter val Wert von dem die Quadratwurzel berechnet wird 5.4.13.15 tan Mathematische Funktionen Syntax float tan(float val); Sub tan(val As Single) As Single Beschreibung Der Tangens wird berechnet. Der Winkel wird in Radiant angegeben. Ein- und Ausgabewerte liegen zwischen -pi und +pi.
148 C-Control Pro Mega Series void Serial_Disable(byte serport); Sub Serial_Disable(serport As Byte) Beschreibung Die serielle Schnittstelle wird abgeschaltet und die dazugehörigen Ports können anders verwendet werden. Parameter serport Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..) 5.4.14.
Compiler 149 Tabelle divider Definitionen: 5.4.14.
150 C-Control Pro Mega Series SR_7BIT SR_8BIT 7 Bit Zeichenlänge 8 Bit Zeichenlänge SR_1STOP SR_2STOP 1 Stop Bit 2 Stop Bit SR_NO_PAR SR_EVEN_PAR SR_ODD_PAR no Parity even Parity odd Parity Tabelle divider Definitionen: 5.4.14.
Compiler 5.4.14.5 151 Serial_Read Serielle Funktionen Syntax byte Serial_Read(byte serport); Sub Serial_Read(serport As Byte) As Byte Beschreibung Ein byte wird von der seriellen Schnittstelle gelesen. Ist kein byte im seriellen Puffer, kehrt die Funktion erst dann zurück, wenn ein Zeichen empfangen wurde. Parameter serport Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..) Rückgabewert empfangenes byte aus der seriellen Schnittstelle 5.4.14.
152 C-Control Pro Mega Series Beschreibung Ein byte wird zur seriellen Schnittstelle geschickt. Parameter serport Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..) val der auszugebende byte Wert 5.4.14.8 Serial_WriteText Serielle Funktionen Syntax void Serial_WriteText(byte serport,char text[]); Sub Serial_WriteText(serport As Byte,ByRef Text As Char) Beschreibung Es werden alle Zeichen des char array bis zur terminierenden Null auf der seriellen Schnittstelle ausgegeben.
Compiler 153 5.4.14.
154 C-Control Pro Mega Series Es existiert kein expliziter "String" Datentyp. Ein String basiert auf einem character array. Man muß die Größe des arrays so wählen, daß alle Zeichen des Strings in das character array passen. Zusätzlich wird Platz für ein Terminierungszeichen (dezimal Null) benötigt, um das Ende der Zeichenkette anzuzeigen. 5.4.16.
Compiler 5.4.16.3 Str_Fill String Funktionen (Bibliothek "String_Lib.cc") Syntax void Str_Fill(char dest[],char c,word len); Sub Str_Fill(ByRef dest As Char,c As Char,len As Word) Beschreibung Der String dest wird mit dem Zeichen c aufgefüllt. Parameter dest Zeiger auf den Zielstring c das Zeichen, das wiederholt in den String kopiert wird len Anzahl, wie oft c in den Zielstring geschrieben wird 5.4.16.4 Str_Isalnum String Funktionen (Bibliothek "String_Lib.
156 C-Control Pro Mega Series Parameter c das zu überprüfende Zeichen Rückgabewert 1 wenn das Zeichen alphabetisch ist (in Groß- oder Kleinschreibung) 0 sonst 5.4.16.6 Str_Len String Funktionen Syntax word Str_Len(char str[]); Sub Str_Len(ByRef str As Char) As Word Beschreibung Die Länge der Zeichenkette (des character arrays) wird zurückgegeben. Parameter str Zeiger auf String Rückgabewert Anzahl der Zeichen im String (ohne die terminierende Null). 5.4.16.
Compiler 157 -1 sonst 5.4.16.8 Str_WriteFloat String Funktionen Syntax void Str_WriteFloat(float n, byte decimal, char text[], word offset); Sub Str_WriteFloat(n As Single,decimal As Byte,ByRef text As Char,offset As Word) Beschreibung Die float Zahl n wird in einen ASCII String mit decimal Dezimalstellen konvertiert. Das Ergebnis wird im String text mit einem Versatz von offset abgespeichert.
158 C-Control Pro Mega Series 5.4.16.10 Str_WriteWord String Funktionen Syntax void Str_WriteWord(word n,byte base,char text[],word offset,byte minwidth); Sub Str_WriteWord(n As Word,base As Byte,ByRef text As Char,offset As Word, minwidth As Byte) Beschreibung Das Wort n wird in einen ASCII String konvertiert. Das Ergebnis wird im String text mit einem Versatz von offset abgespeichert. Man kann für die Ausgabe eine beliebige Basis angeben.
Compiler 159 Auch interne Interpreterfunktionen gelten als ein Zyklus. Da z.B. Serial_Read wartet, bis ein Zeichen von der seriellen Schnittstelle ankommt, kann in Ausnahmefällen ein Zyklus sehr lange dauern. Ein Thread bekommt für seine lokalen Variablen soviel Platz wie ihm in den Threadoptionen des Projekts zugewiesen wird. Eine Ausnahme ist Thread "0" (das Hauptprogramm). Dieser Thread erhält den restlichen Speicherplatz, den die anderen Threads übrig lassen.
160 C-Control Pro Mega Series 5.4.17.1 Thread_Cycles Thread Funktionen Syntax void Thread_Cycles(byte thread,word cycles); Sub Thread_Cycles(thread As Byte,cycles As Word) Beschreibung Setzt die Anzahl der Bytecode Instruktionen bis zum nächsten Threadwechsel auf cycles . Wird ein Thread neu gestartet, erhält er immer die Anzahl der Zyklen zugewiesen, die in den Projektoptionen definiert wurden. Es macht also nur Sinn Thread_Cyles() aufzurufen, nachdem ein Thread gestartet wurde.
Compiler 161 word Thread_Info(byte info); Sub Thread_Info(info As Byte) As Word Beschreibung Liefert Informationen über den Thread, der die Funktion Thread_Info aufruft. Der info Parameter bestimmt, welche Information zurückgegeben wird. Parameter info Werte: TI_THREADNUM TI_STACKSIZE TI_CYCLES Nummer des aufrufenden Threads Definierte Stackgröße Anzahl der auszuführenden Cycles vor einem Threadwechsel Rückgabewert angeforderter Parameter 5.4.17.
162 C-Control Pro Mega Series Wird vergessen das, "Lock" wieder auszuschalten, findet kein Multithreading mehr statt. Parameter lock bei 1 wird der Threadwechsel unterbunden, bei 0 wieder zugelassen 5.4.17.6 Thread_MemFree Thread Funktionen Syntax word Thread_MemFree(void); Sub Thread_MemFree() As Word Beschreibung Gibt den freien Speicher zurück, die dem Thread noch zur Verfügung steht. Parameter Keine Rückgabewert freier Speicher in bytes 5.4.17.
Compiler 5.4.17.8 163 Thread_Signal Thread Funktionen Syntax void Thread_Signal(byte signal); Sub Thread_Signal(signal As Byte) Beschreibung Wurde ein Thread mittels Thread_Wait() auf "wartend" gesetzt, kann der Zustand mit Hilfe von Thread_Signal() wieder auf "inaktiv" geändert werden. Der Parameter signal muß den gleichen Wert haben, der bei Thread_Wait() benutzt wurde. Parameter signal Wert des Signals 5.4.17.
164 C-Control Pro Mega Series Sub Thread_Wait(signal As Byte) Beschreibung Der Thread bekommt den Status "wartend". Mittels Thread_Resume() oder Thread_Signal() kann der Thread wieder in einen inaktiven Zustand kommen. Parameter signal Wert des Signals 5.4.17.
Compiler 165 5.4.17.12 Thread Beispiel 2 // multithread2: Multithreading mit Thread_Delay // erforderliche Library: IntFunc_Lib.cc void thread1(void) { while(true) { Msg_WriteText(str2); Thread_Delay(200); // "Thread2" wird ausgegeben. } // Danach ist der Thread } // für 200ms "schlafend".
166 C-Control Pro Mega Series // pulse(n); count=Timer_T0GetCNT(); n Pulse generieren Beim Mega128 ist aus Hardwaregründen die Benutzung von Timer_0 als Zähler nicht möglich! Timer1 (16 Bit) // Beispiel: Pulszählung mit CNT1 Timer_T1CNT(); // n Pulse generieren pulse(n); count=Timer_T1GetCNT(); 5.4.18.2 Frequenzerzeugung Zur Frequenzerzeugung können Timer_0 und Timer_1 folgendermaßen eingesetzt werden: Timer0 (8 Bit) 1.
Compiler 5.4.18.3 167 Frequenzmessung Zur direkten Messung einer Frequenz, kann der Timer1(16Bit) verwendet werden. Es werden die Pulse innerhalb einer Sekunde gezählt, und das Ergebnis ist dann in Herz. Die maximale Meßfrequenz ist 64kHz und ergibt sich durch den 16Bit Zähler. Ein Beispiel für diese Art der Frequenzmessung findet man unter "Demo Programme/FreqMessung". Durch Verkürzen der Meßzeit lassen sich auch höhere Frequenzen messen. Das Ergebnis muß dann entsprechend umgerechnet werden. 5.4.18.
168 C-Control Pro Mega Series int irqcnt; // Pulsweite messen PM_Wert=Timer_T1GetPM(0); irqcnt=Irq_GetCount(INT_TIM1CAPT); } void main(void) { byte n; Irq_SetVect(INT_TIM1CAPT,Timer1_ISR); // Interrupt Service Routine definieren Timer_T0PWM(100,PS0_64); // Pulsgenerator Timer 0 starten // die Messung beginnt hier // Output Timer0 OC0(PortB.3) verbinden mit ICP (input capture pin) (PortD.
Compiler 5.4.18.7 169 Timer_Disable Timer Funktionen Syntax void Timer_Disable(byte timer); Sub Timer_Disable(timer As Byte) Beschreibung Die Funktion schaltet den selektierten Timer ab. Timerfunktionen belegen I/O Ports. Wird ein Timer nicht mehr benötigt, und die Ports sollen als normale digitale I/Os verwendet werden, muß die Timerfunktion abgeschaltet werden. Parameter 0 = Timer_0 1 = Timer_1 3 = Timer_3 (nur Mega128) 5.4.18.
170 C-Control Pro Mega Series Beschreibung Diese Funktion initialisiert den Timer0, mit dem angegebenen Vorteiler und Periodendauer, siehe Tabelle . Das Ausgangssignal erscheint an Mega32: PortB.3 (PIN4), Mega128: PortB.4 (X1_4). Die Frequenzerzeugung wird automatisch gestartet. Der Mega128 verfügt über erweiterte Vorteilerdefinitionen siehe Tabelle.
Compiler 171 der gemessene Zählerwert 5.4.18.11 Timer_T0PW Timer Funktionen Syntax void Timer_T0PW(byte PW); Sub Timer_T0PW(PW As Byte) Beschreibung Diese Funktion stellt eine neue Pulsweite für den Timer0 ein, ohne den Vorteiler zu verändern. Parameter PW Pulsweite 5.4.18.12 Timer_T0PWM Timer Funktionen Syntax void Timer_T0PWM(byte PW,byte PS); Sub Timer_T0PWM(PW As Byte,PS As Byte) Beschreibung Diese Funktion initialisiert den Timer0, mit dem angegebenen Vorteiler und Pulsweite, siehe Tabelle .
172 C-Control Pro Mega Series Vorteiler (prescaler) Zeitbasis (Dauer eines Ticks) PS0_1 (1) PS0_8 (2) PS0_32 (3) PS0_64 (4) PS0_128 (5) PS0_256 (6) PS0_1024 (7) 67,8 ns 542,5 ns 2,17 µs 4,34 µs 8,68 µs 17,36 µs 69,44 µs 5.4.18.13 Timer_T0Start Timer Funktionen Syntax void Timer_T0Start(byte prescaler); Sub Timer_T0Start(prescaler As Byte) Beschreibung Die Frequenzerzeugung wird mit der vorherigen Einstellung gestartet. Der Vorteiler muß neu angegeben werden.
Compiler 173 void Timer_T0Time(byte Time,byte PS); Sub Timer_T0Time(Time As Byte,PS As Byte) Beschreibung Diese Funktion initialisiert den Timer0, mit dem angegebenen Vorteiler, und dem Wert (8 Bit) für die Zeit, siehe Tabelle . Ist der Wert erreicht, dann wird der Timer0 Interrupt (INT_TIM0COMP) ausgelöst. Der Mega128 verfügt über erweiterte Vorteilerdefinitionen siehe Tabelle.
174 C-Control Pro Mega Series Keine 5.4.18.17 Timer_T1CNT_Int Timer Funktionen Syntax void Timer_T1CNT_Int(word limit); Sub Timer_T1CNT_Int(limit As Word) Beschreibung Diese Funktion initialisiert den Counter1. Der Counter1 wird bei einer positiven Signalflanke an Eingang Mega32: PortB.1 (PIN2) Mega128: PortD.6 (X2_15). inkrementiert. Wenn das Limit erreicht ist, wird ein Interrupt ausgelöst. Die entsprechende Interrupt_Service_Routine muß vorher definiert sein. Parameter limit 5.4.18.
Compiler 175 5.4.18.19 Timer_T1FRQX Timer Funktionen Syntax void Timer_T1FRQX(word period,word skew,byte PS); Sub Timer_T1FRQX(period As Word,skew As Word,PS As Byte) Beschreibung Diese Funktion initialisiert den Timer1, mit dem angegebenen Vorteiler, Periodendauer und Phasenverschiebung der beiden Ausgangssignale, siehe Tabelle . Die Ausgangssignale erscheinen an Mega32: PortD.4 (PIN18) und PortD.5 (PIN19). Mega128: PortB.5 (X1_3) und PortB.6 (X1_2). Die Frequenzerzeugung wird automatisch gestartet.
176 C-Control Pro Mega Series das Messergebnis zurück. Parameter Mode 0 Pulsweitenmessung 1 Periodenmessung Rückgabewert Ergebnis der Messung Um das Meßergebnis zu errechnen, wird der zurückgegebene 16bit Wert mit dem Eintrag aus der prescaler Tabelle multipliziert, der beim Aufruf von Timer_T1PM angegeben wurde (siehe auch Beispiel). 5.4.18.
Compiler Vorteiler (prescaler) 177 Zeitbasis (Dauer eines Ticks) PS_1 (1) PS_8 (2) PS_64 (3) PS_256 (4) PS_1024 (5) 67,8 ns 542,5 ns 4,34 µs 17,36 µs 69,44 µs 5.4.18.24 Timer_T1PWB Timer Funktionen Syntax void Timer_T1PWB(word PW1); Sub Timer_T1PWB(PW1 As Word) Beschreibung Diese Funktion stellt eine neue Pulsweite (Kanal_B) für den Timer1 ein, ohne den Vorteiler zu verändern. Parameter PW1 Pulsweite 5.4.18.
178 C-Control Pro Mega Series PS_1 (1) PS_8 (2) PS_64 (3) PS_256 (4) PS_1024 (5) 67,8 ns 542,5 ns 4,34 µs 17,36 µs 69,44 µs 5.4.18.26 Timer_T1PWMX Timer Funktionen Syntax void Timer_T1PWMX(word period,word PW0,word PW1,byte PS); Sub Timer_T1PWMX(period As Word,PW0 As Word,PW1 As Word,PS As Byte) Beschreibung Diese Funktion initialisiert den Timer1 mit dem angegebenen Vorteiler, Pulsweite für Kanal A und B und Periodendauer, siehe Tabelle. Die Ausgangssignale erscheinen an Mega32: PortD.
Compiler 179 5.4.18.28 Timer_T1Start Timer Funktionen Syntax void Timer_T1Start(byte prescaler); Sub Timer_T1Start(prescaler As Byte) Beschreibung Die Frequenzerzeugung wird mit der vorherigen Einstellung gestartet. Der Vorteiler muß neu angegeben werden. Parameter prescaler Vorteiler (Tabelle prescaler) 5.4.18.29 Timer_T1Stop Timer Funktionen Syntax void Timer_T1Stop(void); Sub Timer_T1Stop() Beschreibung Die Frequenzerzeugung wird angehalten.
180 C-Control Pro Mega Series Time Zeitwert, bei dem Interrupt ausgelöst wird PS Vorteiler Tabelle prescaler: Vorteiler (prescaler) Zeitbasis (Dauer eines Ticks) PS_1 (1) PS_8 (2) PS_64 (3) PS_256 (4) PS_1024 (5) 67,8 ns 542,5 ns 4,34 µs 17,36 µs 69,44 µs 5.4.18.31 Timer_T3CNT Timer Funktionen Syntax void Timer_T3CNT(void); Sub Timer_T3CNT() Beschreibung Diese Funktion initialisiert den Counter3. Der Counter3 wird bei einer positiven Signalflanke an Eingang PortE.6 (X1_10) inkrementiert.
Compiler 181 5.4.18.33 Timer_T3FRQ Timer Funktionen Syntax void Timer_T3FRQ(word period,byte PS); Sub Timer_T3FRQ(period As Word,PS As Byte) Beschreibung Diese Funktion initialisiert den Timer3, mit dem angegebenen Vorteiler und Periodendauer, siehe Tabelle . Das Ausgangssignal erscheint an PortE.3 (X1_13). Die Frequenzerzeugung wird automatisch gestartet.
182 C-Control Pro Mega Series 5.4.18.35 Timer_T3GetCNT Timer Funktionen Syntax word Timer_T3GetCNT(void); Sub Timer_T3GetCNT() As Word Beschreibung Der Wert des Counter3 wird gelesen. Erfolgte ein Überlauf, dann wird der Wert 0xFFFF übergeben. Rückgabewert der gemessene Zählerwert 5.4.18.
Compiler 183 Beschreibung Diese Funktion stellt eine neue Pulsweite (Kanal_A) für den Timer3 ein, ohne den Vorteiler zu verändern. Parameter PW0 Pulsweite 5.4.18.38 Timer_T3PM Timer Funktionen Syntax void Timer_T3PM(byte PS); void Timer_T3PM(PS As Byte) Beschreibung Diese Funktion initialisiert den Timer_3 für die Messung und setzt den Vorteiler.
184 C-Control Pro Mega Series Parameter PW1 Pulsweite 5.4.18.40 Timer_T3PWM Timer Funktionen Syntax void Timer_T3PWM(word period,word PW0,byte PS); Sub Timer_T3PWM(period As Word,PW0 As Word,PS As Byte) Beschreibung Diese Funktion initialisiert den Timer3 mit dem angegebenen Vorteiler, Pulsweite und Periodendauer, siehe Tabelle . Das Ausgangssignal erscheint an PortE.3 (X1_13).
Compiler 185 5.4.18.42 Timer_T3PWMY Timer Funktionen Syntax void Timer_T3PWMY(word period,word PW0,word PW1,word PW2,byte PS); Sub Timer_T3PWMY(period As Word,PW0 As Word,PW1 As Word,PW2 As Word,PS As Byte) Beschreibung Diese Funktion initialisiert den Timer3 mit dem angegebenen Vorteiler, Pulsweite für Kanal A ,B und C und Periodendauer, siehe Tabelle . Die Ausgangssignale erscheinen an PortE.3 (X1_13), PortE.4 (X1_12) und PortE.5 (X1_11) .
186 C-Control Pro Mega Series Sub Timer_T3Stop() Beschreibung Die Frequenzerzeugung wird angehalten. Das Ausgangssignal kann 0 oder 1 sein, entsprechend dem letzten Zustand. Es wird nur der Takt für den Timer angehalten. Sonstige Einstellungen bleiben erhalten. Parameter Keine 5.4.18.
Compiler 187 beim zweiten Aufruf von Timer_TickCount() zurück. Der Rückgabewert beim ersten Aufruf kann ignoriert werden.
Kapitel 6
FAQ 6 189 FAQ Probleme 1. Es existiert keine USB Verbindung zum Application Board. · Ist der FTDI USB Treiber auf dem PC geladen? Oder erscheint vielleicht beim Einstecken des USB Steckers ein "unbekanntes Gerät" im Hardware Manager? · Ist in Optionen->IDE->Schnittstellen der richtige Kommunikationsport eingestellt? · Wird eine Windowsversion vor Windows 98 SE ("Second Edition") benutzt? Die USB Treiber von Microsoft funktionieren erst ab Win98SE zuverlässig mit USB Geräten. · Werden die Ports M32:B.4-B.
190 C-Control Pro Mega Series 7. Wo bestimmt man, ob das neue Projekt ein BASIC oder C Projekt ist? Es gibt keine Unterschiede im Projekttyp. Die Quelltext Dateien in einem Projekt bestimmen welche Programmiersprache zum Einsatz kommt. Dateien mit der Endung *.cc laufen in einem CompactC Kontext, Dateien mit der Endung *.cbas werden mit BASIC übersetzt. Man kann in einem Project auch C und BASIC mischen. 8. Ich benutze ein andere LCD-Anzeige als die mitgelieferte mit aber demselben Controller.
Sachverzeichnis Sachverzeichnis - B ---- 80 -##define 69 #endif 69 #ifdef 69 #include 69 -+++ 80 -AAbsDelay 107 AComp 108 acos 141 ADC_Disable 110 ADC_Read 111 ADC_ReadInt 111 ADC_Set 112 ADC_SetInt 112 ADC_StartInt 113 Addition 79, 97 Analog-Comparator 108, 109 Anweisungen 73, 91 Anweisungsblock 73 ApplicationBoard 17, 25, 33, 42 Arithmetische Operatoren 79, 97 Array 75, 94 Array Fenster 60 asin 142 atan 142 Ausdrücke 73, 91 Ausgaben 56 Auto Aktualisieren 59 Autostart 13, 55 © 2005 Conrad Electronic
192 C-Control Pro Mega Series -EEditoreinstellungen 62 EEPROM 119, 120, 121 EEPROM_Read 119 EEPROM_ReadFloat 120 EEPROM_ReadWord 119 EEPROM_Write 120 EEPROM_WriteFLoat 121 EEPROM_WriteWord 121 Einleitung 2 else 84, 102 email 4 Ereigniszähler 165 Ersetzen 53 exclusives Oder 79, 98 Exirt 99 Exit 100 exp 143 Ext 126 Ext_IntDisable 128 Ext_IntEnable 127 externes RAM 35, 69 -Ffabs 144 FAQ 189 Fax 4 Fehlerkorrekturen 4 Fenster 66 Firewall 65 Firmware 13 float 75, 93 floor 144 For 82, 100 Frequenzerzeugung 166
Sachverzeichnis Kontexthilfe 67 Nebeneinander 66 neue Features 4 Next 100 -LLCD_ClearLCD 131 LCD_CursorOff 131 LCD_CursorOn 132 LCD_CursorPos( 132 LCD_Init 133 LCD_SubInit 133 LCD_TestBusy 133 LCD_WriteChar 134 LCD_WriteCTRRegister 134 LCD_WriteDataRegister 134 LCD_WriteRegister 135 LCD_WriteText 135 ldexp 145 links schieben 80, 98 ln 145 log 145 Logische Operatoren 81 logisches Nicht 81 logisches Oder 81 logisches Und 81 Loop While 99 -MMap Datei 71 Meldungen 48 Modul 24, 41 Modul Mega128 30 Modul Mega
194 C-Control Pro Mega Series Reguläre Ausdrücke 54 reserviert 90, 106 reservierte Worte 90, 106 -SSchaltplan 24, 25, 41, 42 Schnittstelle 65 Schnittstellensuche 65 Select 103 Serial Beispiel 152 Serial Beispiel (IRQ) 153 Serial_Disable 147 Serial_Init 148 Serial_Init_IRQ 149 Serial_IRQ_Info 150 Serial_Read 151 Serial_ReadExt 151 Serial_Write 151 Serial_WriteText 152 serieller Bootloader 13 Service 4 Sichtbarkeit von Variablen 75, 94 sin 146 SInus 146 sizeof 75, 94 Smart Tabulator 62 SPI Abschaltung 13 S
Sachverzeichnis Timer_T3CNT 180 Timer_T3CNT_Int 180 Timer_T3FRQ 181 Timer_T3FRQX 181 Timer_T3GetCNT 182 Timer_T3GetPM 182 Timer_T3PM 183 Timer_T3PWA 182 Timer_T3PWB 183 Timer_T3PWM 184 Timer_T3PWMX 184 Timer_T3PWMY 185 Timer_T3Start 185 Timer_T3Stop 185 Timer_T3Time 186 Timer_TickCount 186 Timerfunktionen 168 Typkonvertierung 75, 93 -UÜberlappend 66 Übertragen 55 Umbenennen 49 Und 79, 98 ungleich 80, 98 unsigned char 75, 93 unsigned int 75, 93 Untereinander 66 USB 8, 65 -VVariable Ändern 59 Variable Einfü