C-Control Pro Mega 32 © 2005 Conrad Electronic
I C-Control Pro Mega 32 Inhalt 1 Kapitel 1 Wichtige Hinweise 1 Einleitung ................................................................................................................................... 1 2 Lesen ................................................................................................................................... dieser Anleitung 1 3 Handhabung ................................................................................................................................
Inhalt II 4 Compiler ................................................................................................................................... 32 4.1 Compilervoreinstellung ................................................................................................................................... 32 4.2 Kompilieren ................................................................................................................................... 32 5 C-Control .............................
III C-Control Pro Mega 32 3.12 ................................................................................................................................... Port 90 3.13 ................................................................................................................................... RS232 95 3.14 ................................................................................................................................... Strings 98 3.15 .........................................
Kapitel 1
1 C-Control Pro Mega 32 1 Wichtige Hinweise 1.1 Einleitung Das C-Control Pro System basiert auf dem Atmel Mega 32 RISC Mikrocontroller. Dieser Mikrocontroller wird in sehr vielen Geräten in großen Stückzahlen eingesetzt. Von der Unterhaltungselektronik, über Haushaltsmaschinen bis hin zu verschiedenen Einsatzmöglichkeiten in der Industrie. Dort übernimmt der Controller wichtige Steuerungsaufgaben. C-Control Pro bietet Ihnen diese hochmoderne Technologie zur Lösung Ihrer Steuerungsprobleme.
Wichtige Hinweise 1.4 2 Bestimmungsgemäße Verwendung Die C-Control Pro Unit ist ein elektronisches Bauelement im Sinne eines integrierten Schaltkreises. Die C-Control Pro Unit dient zur programmierbaren Ansteuerung elektrischer und elektronischer Geräte. Der Aufbau und Betrieb dieser Geräte muß konform zu geltenden europäischen Zulassungsrichtlinien (CE) erfolgen. Die C-Control Pro Unit darf nicht in galvanischer Verbindung zu Spannungen über Schutzkleinspannung stehen.
3 1.6 C-Control Pro Mega 32 Service Conrad Electronic stellt Ihnen ein Team von erfahrenen Servicemitarbeitern zur Seite. Sollten Sie Fragen zur C-Control Pro Unit haben, erreichen Sie unsere Technische Kundenbetreuung per Brief, Fax oder E-Mail. per Brief Conrad Electronic Technische Anfrage Klaus-Conrad-Straße 2 92530 Wernberg-Köblitz Fax-Nr.: Mail: 09604 / 40-8848 webmaster@c-control.de Bitte nutzen Sie vorzugsweise die Kommunikation per E-Mail.
Kapitel 2
5 C-Control Pro Mega 32 2 Installation 2.1 Software Wird die mitgelieferte CD in den Computer eingelegt, sollte automatisch der Installer gestartet werden, um die C-Control Pro Software zu installieren. Geschieht dies nicht, weil z.B. die Autostart Funktion für CD oder DVD in Windows abgeschaltet ist, so starten Sie bitte den Installer 'C-ControlSetup.exe' im Hauptverzeichnis der CD-ROM per Hand.
Installation 2.2 6 Applicationboard 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. Schalten Sie das Application Board ein.
7 C-Control Pro Mega 32 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".
Installation 8 Die Nachricht "C-Control Pro USB Device hat den Windows-Logo-Test nicht bestanden...." ist 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.
Kapitel 3
Hardware 3 Hardware 3.1 Firmware 10 Das Betriebssystem des C-Control Pro besteht aus folgenden Komponenten: · Bootloader · Interpreter Bootloader Der Bootloader ist immer verfügbar. Er sorgt für die USB oder serielle Kommunikation mit der IDE. Über Kommandozeilenbefehle kann der Interpreter und das Anwenderprogramm vom PC in den Atmel Risc Chip übertragen werden. Wird ein Programm kompiliert und in den Mega Chip übertragen wird gleichzeitig auch der aktuelle Interpreter mit übertragen.
11 C-Control Pro Mega 32 einen low-power Microcontroller mit Advanced RISC Architecture.
Hardware 12 Ist x ein digitaler Meßwert, dann errechnet sich der entsprechende Spannungswert u wie folgt: u = x * Referenzspannung / 1024 Takterzeugung Die Takterzeugung erfolgt durch einen 14,7456MHz-Quarzoszillator. Alle zeitlichen Abläufe des Controllers sind von dieser Taktfrequenz abgeleitet. Reset Ein Reset bewirkt die Rückkehr des Microcontrollersystems in einen definierten Anfangszustand.
13 C-Control Pro Mega 32 PLM-Ports Es stehen zwei Timer für PLM zur Verfügung. Timer_0 mit 8 bit und Timer_1 mit 16 bit. 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 "Ticks". Die Dauer eines Ticks ist die Zeitbasis.
Hardware 14 Takt Taktfrequenz (Quarzoszillator) 14,7456MHz Mechanik äußere Abmessungen ohne Pins ca. 53 mm x 21mm x 8 mm Masse ca. 90g Pinraster 2,54mm Pinanzahl (zweireihig) Abstand der Reihen 40 15,24mm Ports 3.2.3 Max. zulässiger Strom aus digitalen Ports ± 20 mA Zulässige Summe der Ströme an digitalen Ports 200mA Zulässige Eingangsspannung an Portpins (digital und A/D) –0,5V ...
15 C-Control Pro Mega 32 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 PortD.6 und LD2 an PortD.
Hardware 16 I2C-Schnittstelle Über diese Schnittstelle können mit hoher Geschwindigkeit serielle Daten übertragen werden. Es werden dazu nur zwei Signalleitungen benötigt. Die Datenübertragung geschieht gemäß dem I2CProtokoll. Zur effektiven Nutzung dieser Schnittstelle werden spezielle Funktionen zur Verfügung gestellt. (siehe Softwarebeschreibung I2C) I2C SCL I2C-Bus Taktleitung PortC.0 I2C SDA I2C-Bus Datenleitung PortC.
17 C-Control Pro Mega 32 RS232Standard (positive Spannung für Lowbits, negative Spannung für Highbits). Das Pegelwandler-IC verfügt über einen erhöhten Schutz vor Spannungsspitzen. Spannungsspitzen können in elektromagnetisch belastetem Umfeld, z.B. in industriellen Anwendungen, in die Schnittstellenkabel induziert werden und angeschlossene Schaltkreise zerstören. Über Jumper können die Datenleitungen RxD und TxD mit dem Controller PortD.0 und PortD.1 verbunden werden.
Hardware 3.2.4 18 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 (Pins 1-20) PIN Port Port PortBit Name 1 PB0 PortB.0 8 T0 2 PB1 PortB.1 9 T1 3 PB2 PortB.2 10 INT2/AIN0 4 PB3 PortB.3 11 OT0/AIN1 5 PB4 PortB.
19 C-Control Pro Mega 32 Pinbelegung für Application Board Mega32 (Pins 21-40) 21 PD7 PortD.7 31 22 PC0 PortC.0 16 23 PC1 PortC.1 17 24 PC2 PortC.2 18 25 PC3 PortC.3 19 26 PC4 PortC.4 20 27 PC5 PortC.5 21 28 PC6 PortC.6 22 PortC.7 23 29 3.2.5 LED2 Leuchtdiode SCL EXT-SCL I2C-Interface SDA EXT-SDA I2C-Interface 30 AVCC 31 GND 32 AREF 33 PA7 PortA.7 7 ADC7 RX_BUSY 34 PA6 PortA.6 6 ADC6 TX_REQ 35 PA5 PortA.5 5 ADC5 KEY_EN 36 PA4 PortA.
Hardware 20 Jumperpositionen im Auslieferzustand 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). Das Application Board sollte mit Netzteil und Spannungsregler betrieben werden (Auslieferzustand). JP6 Bei Verwendung des Displays kann mit JP6 die Beleuchtung (back light) abgeschaltet werden.
21 3.2.6 C-Control Pro Mega 32 Schaltpläne 3.2.6.1 PDF Schaltpläne Aus Konvertierungsgründen sind die Schaltpläne nicht im PDF Handbuch. Sie sind unter "Manual\Mega32 Schaltpläne" zu finden.
Kapitel 4
23 C-Control Pro Mega 32 4 IDE 4.1 Übersicht Die C-Control Pro Benutzeroberfläche (IDE) besteht aus folgenden Hauptelementen: Sidebar für Projekt Dateien Mehrere Dateien können hier zu einem Projekt abgelegt werden. Editor Fenster C-Control Ausgaben 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.
IDE 4.2 Projekte 4.2.1 Projekterstellung 24 Unter dem Menü Projekt kann man mit dem Aufruf von Neu die Projekt erstellen Dialogbox aufrufen. Es wird dort für das Projekt ein Projektname angegeben und das Projekt wird in der Sidebar erstellt. Man muß sich vorher nicht entscheiden ob man ein CompactC oder ein Basic Projekt erstellt. In einem Projekt kann man als Projektdateien CompactC und Basic Dateien gemischt anlegen und daraus ein Programm erzeugen. 4.2.
25 C-Control Pro Mega 32 Projektdateien Hat man zum Projekt Dateien hinzugefügt, dann kann man die Dateien mit einem Doppelklick auf den Dateinamen öffnen. Mit einem Rechtsklick erscheinen weitere Optionen: · Umbenennen - Der Name der Projektdatei wird geändert · Entfernen - Die Datei wird aus dem Projekt entfernt · Optionen - Die Projektoptionen können geändert werden. 4.2.3 Projektoptionen Für jedes Projekt können die Compilereinstellungen einzeln geändert werden.
IDE 26 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. Bei den "Optionen" konfiguriert man das Multithreading und ob Debug Code erzeugt werden soll.
27 C-Control Pro Mega 32 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.2.5 Bibliotheksverwaltung In der Bibliotheksverwaltung können die Quelltext Bibliotheken abgewählt werden, die zusätzlich zu den Projektdateien kompiliert werden.
IDE 4.3 Editor 4.3.1 Editorfenster 28 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). Dazu muß vorher der Quelltext fehlerfrei mit "Debug Info" kompiliert worden sein, und in der entsprechenden Zeile tatsächlich ausführbarer Programmtext stehen (z.B.
29 C-Control Pro Mega 32 · · · · 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 Ersetzen mit - der Text der den gefunden Text ersetzt Groß/Kleinschreibung - unterscheidet Groß- und Kleinschreibung Nur ganze Wörter - findet nur ganze Wörter und keine Teilz
IDE 30 · 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 vorherige Zeile beginnen · Optimales Füllen - "Automatisches Einrücken" füllt zuerst mit Tabulatoren und den Rest mit Leerzeichen · Backspace rückt aus - mit Backspace springt man an die Stelle an der die Zeichen der vorherige Zeile begin
31 4.3.4 C-Control Pro Mega 32 reguläre Ausdrücke Die Suchfunktion im Editor unterstützt reguläre Ausdrücke. Damit können Zeichenketten sehr flexibel gesucht oder ersetzt werden. ^ Ein Circumflex am Anfang eines Wortes findet das Wort am Anfang einer Zeile $ Ein Dollarzeichen repräsentiert das Ende einer Zeile . Ein Punkt symbolisiert ein beliebiges Zeichen * + Ein Stern steht für ein mehrfaches Auftreten eines Musters.
IDE 4.4 Compiler 4.4.1 Compilervoreinstellung 32 In der Compilervoreinstellung können die Standardwerte konfiguriert werden die beim erzeugen eines neues Projekts gespeichert werden. Die Auswahlboxen "Threads Konfigurieren" und "Bibliothek Konfigurieren" sind identisch zu den Einstellungs Parametern bei Projektoptionen. 4.4.2 Kompilieren Unter dem Menüpunkt Projekt kann mit Kompilieren (F9) das aktuelle Projekt vom Compiler übersetzt werden.
33 C-Control Pro Mega 32 Bei erfolgreicher Kompilierung wird der Bytecode als Datei mit der Endung "*.bc" im Projektverzeichnis abgelegt. Mit einem Rechtsklick im Bereich der Compiler Meldungen lassen sich folgende Vorgänge auslösen: · löschen - löscht die Liste der Compiler Meldungen · in Ablage kopieren - kopiert alle Textnachrichten in die Zwischenablage 4.5 C-Control Hardware 4.5.
IDE 4.5.2 34 Ausgaben Um Debug Nachrichten anzuzeigen gibt es einen "Ausgaben" Fensterbereich. Es wird hier angezeigt wann der Bytecode Interpreter gestartet und beendet worden ist, und wie lange (in Millisekunden) der Interpreter ausgeführt wurde. Die Ausführungszeit ist natürlich nicht aussagekräftig wenn der Interpreter im Debug Modus angehalten wurde. Im Ausgaben Fenster kann aber auch der Benutzer seine eigenen Debugnachrichten anzeigen lassen. Zu diesem Zweck existieren mehrere Debug Funktionen.
35 C-Control Pro Mega 32 Um eine neue PIN einzutragen oder eine gesetzte PIN zu löschen existieren die Befehle PIN Setzen und PIN Löschen im C-Control Menü. War schon eine PIN gesetzt, so muß das Modul natürlich erst durch Eingabe der alten PIN entsperrt werden. Eine PIN darf bis zu 6 alphanumerische Zeichen lang sein. Hat man das Passwort vergessen, gibt es eine Notfallfunktion um das Modul in den Ausgangszustand zurückzusetzen.
IDE 36 Im Debugger Menü sind alle Debugger Befehle zu finden. Mit Debug Modus (Shift-F10) startet man den Debugger. Ist zu diesem Zeitpunkt kein Breakpoint gesetzt so hält der Debugger auf der ersten ausführbaren Anweisung. 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.
37 C-Control Pro Mega 32 Die andere Variante geht über das Kontextmenü in der Variablenliste, das man auch über Rechtsklick aktivieren kann: Wählt man dort Variable Einfügen an, so kann man die zu überwachende Variable in der Liste als Text eintragen. Ist es eine lokale Variable, so wird dort der Funktionsname mit einem Doppelpunkt vorangestellt (Funktionsname : Variablenname).
IDE 38 Sind viele Variablen in die Überwachungsliste eingetragen, so kann es bei einem Einzelschritt lange dauern bis alle Variableninhalte aus dem Modul abgefragt worden sind. Zu diesem Zweck kann die Option Auto Aktualisieren für einzelne Variablen ausschalten. Dann werden die Inhalte dieser Variablen erst dann angezeigt wenn der Befehl Variablen Aktualisieren durchgeführt wird. So läßt sich schnell im Debugger mit Einzelschritt fortfahren und die Inhalte werden erst bei Bedarf aktualisiert.
39 C-Control Pro Mega 32 · Mehrere Instanzen von C-Control Pro zulassen - Wird die C-Control Pro Oberfläche mehrfach gestartet kann es zu Konflikten bezüglich der USB Schnittstelle kommen. Zusätzlich lassen sich hier auch die Listen der "zuletzt geöffneten Projekte", sowie der "zuletzt geöffneten Dateien" löschen. 4.7.1 Kommunikation Über eine Auswahlbox läßt sich die Verbindung zum Application Board einstellen. USB Verbindungen beginnen mit dem Kürzel "USB" und werden dann durchnummeriert: USB0, USB1 ..
IDE 4.7.2 40 Internet Update Um zu überprüfen ob Verbesserungen oder Fehlerkorrekturen von Conrad veröffentlicht wurden, kann man das Internet Update aktivieren. Wird die Auswahlbox "Alle n Tage auf Update prüfen" angewählt, so wird im Intervall von n Tagen beim Start der IDE im Internet nach einem Update gesucht. Der Parameter n läßt sich im Eingabefeld rechts daneben einstellen. Der Knopf "Jetzt auf Update prüfen" aktiviert die Suche nach Updates sofort.
41 C-Control Pro Mega 32 · Überlappend - die Fenster werden übereinander angeordnet, jedes Fenster ist dabei etwas weiter nach unten rechts verschoben als das vorhergehende · Untereinander - die Fenster werden vertikal untereinander positioniert · Nebeneinander - ordnet die Fenster von links nach rechts nebeneinander · Alle Minimieren - verkleinert alle Fenster auf Symbolgröße · Schließen - schließt das aktive Fenster 4.
IDE Der Befehl Kontexthilfe steht auch bei einem Rechtsklick im Editorfenster zur Verfügung.
Kapitel 5
Compiler 5 Compiler 5.1 Compact C 5.1.1 Programm 44 Ein Programm besteht aus einer Menge von Anweisungen (wie z.B. "a=5;") die auf verschiedene Funktionen verteilt sind. Die Startfunktion die in jedem Programm vorhanden sein muß, ist die Funktion "main()".
45 C-Control Pro Mega 32 if(a>5) { a=a+1; b=a+2; } // Anweisungsblock Kommentare Es existieren zwei Arten von Kommentaren, einzeilige und mehrzeilige Kommentare. Dabei wird der Text in den Kommentaren vom Compiler ignoriert. · Einzeilige Kommentare beginnen mit "//" und hören mit dem Zeilenende auf. · Mehrzeilige Kommentare beginnen mit "/*" und hören mit "*/" auf. /* Ein mehrzeiliger Kommentar */ // Ein einzeiliger Kommentar Bezeichner Bezeichner sind die Namen von Funktionen oder Variablen.
Compiler 46 Wahrheitswert von "1" oder "0" zurück, je nach dem 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. Manchmal müssen Ausdrücke konstant sein damit sie gültig sind. Siehe z.B. Deklarierung von Array Variablen. 5.1.
47 C-Control Pro Mega 32 Bei arithmetischen Ausdrücken passiert es sehr oft daß einzelne Werte nicht vom gleichen Typ sind. So sind die Datentypen im folgenden Ausdruck gemischt (a ist integer variable). a + 5.5 In diesem Fall wird a zuerst in den Datentyp float konvertiert und danach 5.5 addiert. Der Datentyp des Ergebnis ist auch float.
Compiler 48 y=2.3e+2; x=-5.33e-1; sizeof Operator Mit dem Operator sizeof() kann die Anzahl der Bytes bestimmt werden die eine Variable im Speicher belegt. Beispiel: int s; float f: 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.
49 C-Control Pro Mega 32 char str1[21]; Als Ausnahme darf man char Arrays Zeichenketten zuweisen. Dabei wird die Zeichenkette zwischen Anführungszeichen gesetzt. str1="Hallo Welt!"; Sichtbarkeit von Variablen Werden Variablen außerhalb von Funktionen deklariert so haben sie eine globale Sichtbarkeit. Das heißt, man kann sie aus jeder Funktion ansprechen. Variablendeklarationen innerhalb von Funktionen erzeugen lokale Variablen. Lokale Variablen sind nur innerhalb der Funktion erreichbar.
Compiler 50 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.1.5 Operatoren Prioritäten von Operatoren Operatoren teilen arithmetische Ausdrücke in Teilausdrücke.
51 C-Control Pro Mega 32 5.1.5.2 Vergleichsoperatoren Vergleichsoperatoren sind für float und Integer Datentypen erlaubt. Operator Erklärung < kleiner > größer <= kleiner gleich >= größer gleich == gleich != ungleich Beispiel Ergebnis 1<2 2<1 2<2 -3 > 2 3>2 2 <= 2 3 <= 2 2 >= 3 3 >= 2 5 == 5 1 == 2 2 != 2 2 != 5 1 0 0 0 1 1 0 0 1 1 0 0 1 5.1.5.3 Logische Operatoren Logische Operatoren sind nur für Integer Datentypen erlaubt. Jeder Wert ungleich null gilt als logisch 1.
Compiler 52 5.1.5.5 In- Dekrement Operatoren Inkrement und Dekrement Operatoren sind nur für Variablen mit Integer Datentypen erlaubt. Operator Erklärung variable++ variable-++variable variable-- Beispiel Ergebnis Wert der Variablen, danach Variable um eins erhöht (Postinkrement) Wert der Variablen, danach Variable um eins erniedrigt (Postdekrement) Wert der Variablen um eins erhöht (Preinkrement) a++ a a-- a a++ a+1 Wert der Variablen um eins erniedrigt (Predekrement) a-- a-1 5.1.5.
53 C-Control Pro Mega 32 if(a==2) b++; if(x==y) a=a+2; else a=a-2; Statt einer einzelnen Anweisung kann auch ein Anweisungsblock definiert werden. Beispiele: if(xy) { a=b*5; b--; } else { a=b*4; y++; } 5.1.6.2 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 54 continue Anweisung Bei der Ausführung von continue innerhalb einer Schleife kommt es sofort zur erneuten Berechnung des Ausdrucks. In Abhängigkeit vom Ergebnis wird bei ungleich 0 die Schleife wiederholt. Ein Ergebnis von 0 bricht die Schleife ab. Beispiel: while(1) // Endlosschleife { a++; if(a>10) break; // brich Schleife ab } 5.1.6.3 do .. while Mit einem do ..
55 C-Control Pro Mega 32 continue Anweisung Bei Ausführung von continue innerhalb einre Schleife, kommt es sofort zur erneuten Berechnung des Ausdrucks. In Abhängigkeit vom Ergebnis wird bei ungleich 0 die Schleife wiederholt. Ein Ergebnis von 0 bricht die Schleife ab. Beispiel: do { a++; if(a>10) break; // bricht Schleife ab } while(1); // Endlosschleife 5.1.6.4 for Eine for Schleife wird normalerweise benutzt um eine bestimmte Anzahl von Schleifendurchläufen zu programmieren.
Compiler 56 continue Anweisung continue veranlaßt die sofortige Neuberechnung des Ausdrucks. In Abhängigkeit vom Ergebnis wird bei ungleich 0 Anweisung2 ausgeführt und die Schleife wiederholt sich. Ein Ergebnis von 0 bricht die Schleife ab. Beispiel: for(i=0;i<10;i++) { if(i==5) continue; } 5.1.6.
57 C-Control Pro Mega 32 default: b=b+2; } break Anweisung Ein break verläßt die switch Anweisung. Läßt man vor case das break weg, so werden die Anweisungen auch ausgeführt wenn zum vorherigen case gesprungen wird: switch(a) { case 1: a++; case 2: a++; // wird auch bei einem Wert von a==1 ausgeführt case 3: a++; // wird auch bei einem Wert von a==1 oder a==2 ausgeführt } In diesem Beispiel werden alle drei "a++" Anweisungen ausgeführt wenn a gleich 1 ist. 5.1.6.
Compiler 58 } 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. Will man keinen Parameter übergeben schreibt man void in die runden Klammern.
59 C-Control Pro Mega 32 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. Referenzen Da es nicht möglich ist Arrays als Parameter zu übergeben, kann man auf Arrays über Referenzen zugreifen.
Compiler 5.1.8.2 Operator Präzedenz Rang Operator 13 () 12 ++ -- ! 11 * / 10 + - 9 << 8 < 7 == 6 & 5 ^ 4 | 3 && 2 || 1 ? : ~ - (negatives Vorzeichen) % >> <= > >= != 5.1.8.
61 C-Control Pro Mega 32 Bitschiebeoperatoren << um ein Bit nach links schieben >> um ein Bit nach rechts schieben Inkrement/Dekrement Operatoren ++ Post/Pre Inkrement -- Post/Pre Dekrement Logische Operatoren && logisches Und || logisches Oder ! logisches Nicht Bitoperatoren 5.2 & Und | Oder ^ exclusives Oder ~ Bitinvertierung Preprozessor Der Gnu Generic Preprocessor der hier zum Einsatz kommt hat noch weitere Funktionen die unter http://nothingisreal.com/gpp/gpp.
Compiler 62 Da der Preprozessor vor dem Compiler läuft, wird bei jedem Auftauchen von symbol im Quelltext symbol durch textkonstante ersetzt. Ein Beispiel #define PI 3.141 Bedingte Kompilierung #ifdef symbol ... #else // optional ... #endif Man kann kontrollieren welche Teil 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.
63 5.3.2 C-Control Pro Mega 32 AbsDelay Allgemeine Funktionen Syntax void AbsDelay(word ms); Beschreibung Die Funktion Absdelay() wartet eine bestimmte Anzahl von Millisekunden. Die Funktion arbeitet zwar sehr genau, aber unterbricht nicht nur die Abarbeitung des aktuellen Threads sondern läßt den Bytecode Interpreter insgesamt warten. Interrupts werden zwar registriert, aber die Interruptroutinen in dieser Zeit nicht abgearbeitet, da auch dafür der Bytecode Interpreter nötig ist.
Compiler 64 5.3.3.2 AComp Beispiel Beispiel: Verwendung des Analog-Comparators // // // // // // AComp: Analog Comparator Eingang (+) PB2 bzw. band gap reference 1,22V Eingang (-) PB3 Die Funktion AComp gibt den Wert des Komparators zurück. Der Aufruf kann mit dem Parameter 0 (beide Eingänge werden verwendet) oder oder 0x40 (interne Referenzspannung am (+) Eingang, externer Eingang PB3.
65 C-Control Pro Mega 32 Differenzeingänge ADC22x10 ADC23x10 ADC22x200 ADC23x200 ADC20x1 ADC21x1 ADC22x1 ADC23x1 ADC24x1 ADC25x1 Differenzeingänge ADC2, ADC2, Verstärkung 10 Differenzeingänge ADC2, ADC3, Verstärkung 10 Differenzeingänge ADC2, ADC2, Verstärkung 200 Differenzeingänge ADC2, ADC3, Verstärkung 200 Differenzeingänge ADC2, ADC0, Verstärkung 1 Differenzeingänge ADC2, ADC1, Verstärkung 1 Differenzeingänge ADC2, ADC2, Verstärkung 1 Differenzeingänge ADC2, ADC3, Verstärkung 1 Differenzeingänge ADC2
Compiler 66 0 bis 1023 - entsprechend der 10bit-Auflösung des A/D-Wandlers. Es können die Analogeingänge ADC0 bis ADC7 gegen GND gemessen werden oder Differenzmessungen mit den Verstärkungsfaktoren 1/10/200 durchgeführt werden. Rückgabewert gemessener Wert des ADC-Ports 5.3.4.3 ADC_ReadInt ADC Funktionen Syntax word ADC_ReadInt(void); Beschreibung Diese Funktion wird verwendet um nach einem ADC-Interrupt den Meßwert zu lesen.
67 C-Control Pro Mega 32 Name Wert Beschreibung ADC_VREF_BG 0xC0 2,56V interne Referenzspannung ADC_VREF_VCC 0x40 Versorgungsspannung (5V) ADC_VREF_EXT 0x00 externe Referenzspannung an PAD3 5.3.4.5 ADC_SetInt ADC Funktionen Syntax word ADC_SetInt(byte v_ref,byte channel); Beschreibung Die Funktion ADC_SetInt initialisiert den Analog-Digital_Wandler für den Interruptbetrieb. Die Referenzspannung und der Messkanal werden ausgewählt und der A/D Wandler für die Messungen vorbereitet.
Compiler 68 initialisert wurde. Liegt das Messergebnis bereit, wird ein ADC_Interrupt ausgelöst. Parameter Keine 5.3.5 DCF 77 Alle DCF-Routinen sind in der Bibliothek "LCD_Lib.cc" realisiert. Für den Gebrauch dieser Funktionen ist die Bibliothek "DCF_Lib.cc" in das Projekt miteinzubinden. RTC mit DCF77 Zeitsynchronisation Das DCF77 Zeitsignal Die logischen Informationen (die Zeitinformationen) werden zusätzlich zur Normalfrequenz (der Trägerfrequenz des Senders, also 77,5 kHz) übertragen.
69 C-Control Pro Mega 32 können zusätzliche Prüfmechanismen verwendet werden, z.B. Plausibilitätsprüfung (ist die empfangene Zeit innerhalb der zulässigen Grenzen) oder mehrmaliges lesen der DCF77Zeitinformation und Vergleich der Daten. Eine andere Möglichkeit wäre die DCF-Zeit mit der aktuellen Zeit der RTC vergleichen und nur eine bestimmte Abweichung zulassen. Dieses Verfahren geht nicht nach dem Programmstart, da die RTC erst gesetzt werden muß. Beschreibung des Beispielprogramm "DCF_RTC.
Compiler 70 5.3.5.1 DCF_FRAME DCF Funktionen Syntax void DCF_FRAME(void); Beschreibung DCF_Mode auf 3 schalten ("Daten dekodieren und speichern, Paritätsprüfung"). Parameter Keine 5.3.5.2 DCF_INIT DCF Funktionen Syntax void DCF_INIT(void); Beschreibung DCF_INIT bereitet den DCF-Betrieb vor. Es wird der Eingang für das DCF-Signal eingestellt. DCF_Mode =0. Parameter Keine 5.3.5.3 DCF_PULS DCF Funktionen Syntax void DCF_PULS(void); Beschreibung DCF_Mode auf 1 schalten ("Puls suchen").
71 C-Control Pro Mega 32 5.3.5.4 DCF_START DCF Funktionen Syntax void DCF_START(void); Beschreibung DCF_START initialisiert alle verwendeten Variablen und setzt DCF_Mode auf 1. Die DCFZeiterfassung läuft jetzt automatisch ab. Parameter Keine 5.3.5.5 DCF_SYNC DCF Funktionen Syntax void DCF_SYNC(void); Beschreibung DCF_Mode auf 2 schalten ("Synchronisation auf Frameanfang"). Parameter Keine 5.3.
Compiler 72 Beschreibung Ein Zeichen wird zum Ausgabenfenster geschickt. Ein C/R (Carriage Return - Wert:13 ) löst einen Sprung zum Anfang der nächsten Zeile aus. Parameter c das auszugebende Zeichen 5.3.6.2 Msg_WriteFloat Debug Message Funktionen Syntax void Msg_WriteFloat(float val); Beschreibung Die übergebene floating point Zahl wird im Ausgabenfenster mit Vorzeichen dargestellt. Parameter val float Wert 5.3.6.
73 C-Control Pro Mega 32 void Msg_WriteInt(int val); Beschreibung Der übergebene Integer wird im Ausgabenfenster dargestellt. Negativen Werten wird ein Minuszeichen vorangestellt. Parameter val 16bit integer Wert 5.3.6.5 Msg_WriteText Debug Message Funktionen Syntax void Msg_WriteText(char text[]); Beschreibung Es werden alle Zeichen des char array bis zur terminierenden Null ausgegeben. Parameter text Zeiger auf char array 5.3.6.
Compiler 5.3.7 74 EEPROM 5.3.7.1 EEPROM_Read EEPROM Funktionen Syntax byte EEPROM_Read(word pos); Beschreibung Liest ein byte 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. Parameter pos Position im EEPROM Rückgabewert der Wert des byte an Position pos im EEPROM 5.3.7.
75 C-Control Pro Mega 32 5.3.8.1 I2C_Init I2C Funktionen Beispiel Syntax void I2C_Init(byte I2C_BR); Beschreibung Diese Funktion initialisiert die I2C-Schnittstelle. Parameter I2C_BR gibt die Bitrate an. Folgende Werte sind schon vordefiniert: I2C_100kHz I2C_400kHz 5.3.8.2 I2C_Read_ACK I2C Funktionen Syntax byte I2C_Read_ACK(void); Beschreibung Diese Funktion empfängt ein Byte und quittiert mit ACK. Danach kann mit I2C_Status der Status der Schnittstelle abgefragt werden.
Compiler 76 gelesener Wert vom I2C Bus 5.3.8.4 I2C_Start I2C Funktionen Beispiel Syntax void I2C_Start(void); Beschreibung Diese Funktion leitet die Kommunikation mit einer Startsequenz ein. Danach kann mit I2C_Status der Status der Schnittstelle abgefragt werden. Parameter Keine 5.3.8.5 I2C_Status I2C Funktionen Syntax byte I2C_Status(void); Beschreibung Mit I2C_Status kann der Status der Schnittstelle abgefragt werden. Die Bedeutung der Statusinformation ist in der Tabelle dargestellt.
77 C-Control Pro Mega 32 Parameter Keine 5.3.8.7 I2C_Write I2C Funktionen Beispiel Syntax void I2C_Write(byte data); Beschreibung Diese Funktion sendet ein Byte. Danach kann mit I2C_Status der Status der Schnittstelle abgefragt werden. Parameter data Datenbyte 5.3.8.
Compiler 78 Tabelle: Status Codes Master Receiver Mode Status Code 0x08 Beschreibung eine START Sequenz wurde gesendet 0x10 eine "repeated" START Sequenz wurde gesendet 0x38 Konflikt in SLA+R or data bytes 0x40 SLA+R wurde gesendet, ACK wurde empfangen 0x48 SLA+R wurde gesendet, NACK wurde empfangen 0x50 Data byte wurde empfangen, ACK wurde gesendet 0x58 Data byte wurde empfangen, NACK wurde gesendet 5.3.8.
79 5.3.9 C-Control Pro Mega 32 Interrupt Der Controller stellt eine Vielzahl an Interrupts zur Verfügung. Einige davon werden für Systemfunktionen verwendet und stehen dem Anwender nicht zur Verfügung. Folgende Interrupts können vom Anwender genutzt werden: Tabelle Interrupts Interrupt Name Beschreibung INT_0 externer Interrupt0, Eingang PortD.2 INT_1 externer Interrupt1, Eingang PortD.3 INT_2 externer Interrupt2, Eingang PortB.2 INT_TIM1CAPT Timer1 Capture, Eingang PortD.
Compiler Parameter Mode Parameter: 1: 2: 3: 4: ein low Pegel löst einen Interrupt aus jede Flankenwechsel löst einen Interrupt aus eine fallende Flanke löst einen Interrupt aus eine steigende Flanke löst einen Interrupt aus 5.3.9.2 Ext_Int0Disable Interrupt Funktionen Syntax void Ext_Int0Disable(void); Beschreibung Der externe Interrupt 0 wird gesperrt. Parameter Keine 5.3.9.
81 C-Control Pro Mega 32 5.3.9.4 Ext_Int1Disable Interrupt Funktionen Syntax void Ext_Int1Disable(void); Beschreibung Der externe Interrupt 1 wird gesperrt. Parameter Keine 5.3.9.5 Ext_Int2 Interrupt Funktionen Syntax void Ext_Int2(byte Mode); Beschreibung Diese Funktion schaltet den externen Interrupt 0 frei. Der Parameter Mode legt fest, wann ein Interrupt erzeugt werden soll.
Compiler Keine 5.3.9.7 Irq_GetCount Interrupt Funktionen Beispiel Syntax byte Irq_GetCount(void); Beschreibung Signalisiert das der Interrupt abgearbeitet wurde (interrupt acknowledge). Wird die Funktion nicht am Ende einer Interruptroutine aufgerufen, wird ununterbrochen in den Interrupt gesprungen. Rückgabewert gibt an wie oft der Interrupt von der Hardware bis zum Aufruf von Irq_GetCount() ausgelöst wurde.
83 C-Control Pro Mega 32 Tabelle Interrupt Vektoren: Nr Interrupt Name Beschreibung 0 INT_0 externer Interrupt0 1 INT_1 externer Interrupt1 2 INT_2 externer Interrupt2 3 INT_TIM1CAPT Timer1 Capture 4 INT_TIM1CMPA Timer1 CompareA 5 INT_TIM1CMPB Timer1 CompareB 6 INT_TIM1OVF Timer1 Overflow 7 INT_TIM0COMP Timer0 Compare 8 INT_TIM0OVF Timer0 Overflow 9 INT_ANA_COMP 10 INT_ADC 11 INT_TIM2COMP Timer2 Compare 12 INT_TIM2OVF Timer2 Overflow Analog Comparator ADC 5.3.9.
Compiler 84 5.3.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, das man bei Nichtgebrauch diese Funktionen durch Weglassen der Bibliothek aus dem Projekt nimmt. Direkte Interpreterfunktionen sind immer präsent aber kosten Flashspeicher. 5.3.10.
85 C-Control Pro Mega 32 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.3.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.
Compiler Keine 5.3.11.3 LCD_CursorOn LLCD Funktionen (Bibliothek "LCD_Lib.cc") Syntax void LCD_CursorOn(void); Beschreibung Schaltet den Cursor des Display ein. Parameter Keine 5.3.11.4 LCD_CursorPos LCD Funktionen (Bibliothek "LCD_Lib.cc") Syntax void LCD_CursorPos(byte pos); Beschreibung Setzt den Cursor auf Position pos. Parameter pos Cursorposition Wert von pos Position im Display 0x00-0x07 0-7 in der 1. Zeile 0x40-0x47 0-7 in der 2. Zeile 5.3.11.
87 C-Control Pro Mega 32 void LCD_Init(void); Beschreibung "Highlevel" Initialisierung des LCD Display. Ruft als erstes LCD_InitDisplay() auf. Parameter Keine 5.3.11.6 LCD_SubInit LCD Funktionen Syntax void LCD_SubInit(void); Beschreibung Initialisiert die Ports für die Displaysteuerung auf Assemblerebene. Muß als erste Routine vor allen anderen LCD Ausgabefunktionen aufgerufen werden. Wird als erstes Kommando von LCD_Init() benutzt. Parameter Keine 5.3.11.
Compiler void LCD_TestBusy(void); 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.3.11.9 LCD_WriteCTRRegister LCD Funktionen (Bibliothek "LCD_Lib.cc") Syntax void LCD_WriteCTRRegister(byte cmd); Beschreibung Schickt ein Kommando zum Display Controller. Parameter cmd Kommando in Byteform 5.3.11.10LCD_WriteDataRegister LCD Funktionen (Bibliothek "LCD_Lib.
89 C-Control Pro Mega 32 void LCD_WriteNibble(byte x,byte cmd); Beschreibung Sendet ein 4-Bit Kommando zum Display Controller. x enthält dabei eine "1" für das höherwertige Nibble und eine "2" für das niederwertige Nibble. Das Kommando Nibble steht in Bit 4 bis 7 von Byte cmd. Für weitere Details ist das Datenblatt des Display Controllers zu studieren. Parameter x Datennibble cmd Kommandonibble 5.3.11.12LCD_WriteRegister LCD Funktionen (Bibliothek "LCD_Lib.
Compiler 90 5.3.12 Port Der Atmel Mega 32 hat 4 Ein-/Ausgabeports zu je 8 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 findet sich hier. Es ist wichtig vor der Programmierung die Pinzuordnung zu studieren, da wichtige Funktionen der Programmentwicklung (z.B.
91 C-Control Pro Mega 32 5.3.12.2 Port_DataDirBit Port Funktionen Syntax void Port_DataDirBit(byte portbit,byte val); 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) auf Eingang konfiguriert.
Compiler 92 5.3.12.3 Port_Read Port Funktionen Syntax byte Port_Read(byte port); 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.
93 C-Control Pro Mega 32 Rückgabewert Bitwert des Ports (0 oder 1) Portbits Tabelle Definition Portbit PortA.0 0 ... ... PortA.7 7 PortB.0 8 ... ... PortB.7 15 Definition Portbit PortC.0 16 ... ... PortC.7 23 PortD.0 24 ... ... PortD.7 31 5.3.12.5 Port_Write Port Funktionen Beispiel Syntax void Port_Write(byte port,byte val); Beschreibung Schreibt ein Byte auf den spezifizierten Port.
Compiler 94 port Portnummer (siehe Tabelle) val Ausgabe byte Portnummern Tabelle Definition Wert PortA 0 PortB 1 PortC 2 PortD 3 5.3.12.6 Port_WriteBit Port Funktionen Syntax void Port_WriteBit(byte portbit,byte val); Beschreibung Die Funktion Port_WriteBit setzt den Wert eines Pins der auf Ausgang geschaltet ist. Ist ein Pin auf Eingang geschaltet, so kann der interne Pullup Widerstand eingeschaltet (1) oder abgeschaltet (0) werden.
95 C-Control Pro Mega 32 Definition Portbit PortC.0 16 ... ... PortC.7 23 PortD.0 24 ... ... PortD.7 31 5.3.12.7 Port Beispiel // Programm läßt abwechselnd die beiden LEDs auf dem // Application Board im 1 Sekunden Rhythmus blinken void main(void) { Port_DataDir(PortD,0xc0); auf Ausgang geschaltet // die obersten beiden Bits von Port D werden while(true) // Endlosschleife { Port_Write(PortD,0x40); AbsDelay(1000); Port_Write(PortD,0x80); AbsDelay(1000); } } 5.3.
Compiler Parameter par Schnittstellenparameter (siehe Tabelle) divider Baudrateninitialisierung mittels Teiler (siehe Tabelle) Tabelle par Definitionen: Definition Funktion SR_5BIT 5 Bit Zeichenlänge SR_6BIT 6 Bit Zeichenlänge SR_7BIT 7 Bit Zeichenlänge SR_8BIT 8 Bit Zeichenlänge SR_1STOP 1 Stop Bit SR_2STOP 2 Stop Bit SR_NO_PAR no Parity SR_EVEN_PAR even Parity SR_ODD_PAR odd Parity Tabelle divider Definitionen: divider Definition Baudrate 383 SR_BD2400 2400bps 191 SR_BD4800 48
97 C-Control Pro Mega 32 5.3.13.2 Serial_Read Serielle Funktionen Syntax byte Serial_Read(void); 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. Rückgabewert empfangenes byte aus der seriellen Schnittstelle 5.3.13.3 Serial_ReadExt Serielle Funktionen Syntax word Serial_ReadExt(void); Beschreibung Ein byte wird von der seriellen Schnittstelle gelesen.
Compiler 98 5.3.13.5 Serial_WriteText Serielle Funktionen Syntax void Serial_WriteText(char text[]); Beschreibung Es werden alle Zeichen des char array bis zur terminierenden Null auf der seriellen ausgegeben. Parameter text char array 5.3.13.
99 C-Control Pro Mega 32 char Str_Comp(char str1[],char str2[]); Beschreibung Zwei Strings werden miteinander verglichen. Parameter str1 Zeiger auf char array 1 str2 Zeiger auf char array 2 Rückgabewert 0 wenn beide Strings gleich sind <0 wenn an der Unterscheidungsstelle der 1. String kleiner ist >0 wenn an der Unterscheidungsstelle der 1. String größer ist 5.3.14.
Compiler 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.3.14.4 Str_Isalnum String Funktionen (Bibliothek "String_Lib.cc") Syntax byte Str_Isalnum(char c); Beschreibung Ein Zeichen c wird darauf überprüft, ob es aus dem Alphabet stammt oder eine Ziffer ist. Parameter c das zu überprüfende Zeichen Rückgabewert 1 wenn das Zeichen numerisch oder alphabetisch ist (in Groß- oder Kleinschreibung) 0 sonst 5.3.
101 C-Control Pro Mega 32 word Str_Len(char str[]); 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.3.14.7 Str_Substr String Funktionen (Bibliothek "String_Lib.cc") Syntax int Str_Substr(char source[],char search[]); Beschreibung Ein String search wird im String source gesucht. Wird die gesuchte Zeichenkette gefunden, so wird ihre Position zurückgegeben.
Compiler 102 Parameter n float Zahl decimal Anzahl der Dezimalstellen auf die n konvertiert wird text Zeiger auf den Zielstring offset Anzahl der Zeichen mit der die ASCII Darstellung der float Zahl verschoben in den Text String kopiert wird Hat offset den Wert STR_APPEND (0xffff), so wird als offset die Länge des Zielstrings angenommen. In diesem Fall wird die float Zahl an den Text String angehängt. 5.3.14.
103 C-Control Pro Mega 32 Parameter n 16 Bit Wort base Basis des Zahlensystems text Zeiger auf den Zielstring offset Anzahl der Zeichen mit der die ASCII Darstellung der Zahl verschoben in den Text String kopiert wird minwidth minimale Breite des Strings Hat offset den Wert STR_APPEND (0xffff), so wird als offset die Länge des Zielstrings angenommen. In diesem Fall wird die Integer Zahl an den Text String angehängt. 5.3.
Compiler 104 Hardwareresource sein, die nur ein Thread bearbeiten kann. Oder manchmal definiert man kritische Programmbereiche die nur ein Thread betreten darf. Diese Funktionen werden durch die Anweisungen Thread_Wait und Thread_Signal realisiert. Ein Thread der warten soll führt die Anweisung Thread_Wait mit einer Signal Nummer aus. Der Zustand des Threads wird auf wartend gesetzt. Dies bedeutet das dieser Thread bei einem möglichen Threadwechsel übergangen wird.
105 C-Control Pro Mega 32 5.3.15.2 Thread_Delay Thread Funktionen Beispiel Syntax void Thread_Delay(word delay); Beschreibung Hiermit wird ein Thread für eine bestimmte Zeit auf "schlafend" geschaltet. Nach dem angegebenen Zeitraum ist er wieder für die Abarbeitung bereit. Der Zeitraum wird in Ticks angegeben, die von Timer 2 erzeugt werden. Wird Timer 2 abgeschaltet oder für einen anderen Zweck gebraucht ist die Funktionsweise von Thread_Delay() undefiniert.
Compiler 106 Mit dieser Funktion kann ein Thread seinen Threadwechsel unterbinden. Dies ist sinnvoll wenn bei einer Serie von Portausgaben oder anderen Hardware Befehlen die zeitliche Trennung durch einen Threadwechsel vermieden werden soll. Wird vergessen das "Lock" wieder auszuschalten so findet kein Multithreading mehr statt. Parameter lock bei 1 wird der Threadwechsel unterbunden, bei 0 wieder zugelassen 5.3.15.
107 C-Control Pro Mega 32 5.3.15.7 Thread_Start Thread Funktionen Beispiel Syntax void Thread_Start(byte thread, word func); Beschreibung Ein neuer Thread wird gestartet. Als Startfunktion für den Thread kann eine beliebige Funktion genutzt werden.
Compiler 108 char str1[12],str2[12]; void main(void) { str1="Taster 1"; str2="Taster 2"; Port_DataDir(PortD,0); // Port D auf Eingang Port_Write(PortD,0xff); // Pullup für alle Eingänge setzen Thread_Start(1,thread1); // Thread 1 starten while(true) // Endlosschleife { if(!Port_ReadBit(26)) Msg_WriteText(str1); // SW1 wurde gedrückt } } 5.3.15.
109 C-Control Pro Mega 32 · Puls & Periodenmessung · Frequenzmessung 5.3.16.1 Ereigniszähler Hier zwei Beispiele wie die Timer als Ereigniszähler genutzt werden: Timer0 (8 Bit) // Beispiel: Pulszählung mit CNT0 Timer_T0CNT(); pulse(n); // n Pulse generieren count=Timer_T0GetCNT(); Timer1 (16 Bit) // Beispiel: Pulszählung mit CNT1 Timer_T1CNT(); pulse(n); // n Pulse generieren count=Timer_T1GetCNT(); 5.3.16.
Compiler 110 1. Beispiel: Frequenzerzeugung mit 125 * 4,34 µs = 1085µs Periode Timer_T1FRQ(125,ps_64); 2. Beispiel: Frequenzerzeugung mit 10*1,085 µs =10,85 µs Periode und 2*1,085µs =2,17 µs Phasenverschiebung Timer_T1FRQX(10,2,ps_8); 5.3.16.3 Pulsweitenmodulation Es stehen zwei unabhängige Timer für die Pulsweitenmodulation zur Verfügung. Timer_0 mit 8 Bit und Timer_1 mit 16 Bit. Mit einer Pulsweitenmodulation lässt sich sehr einfach ein Digital-Analog-Wandler realisieren.
111 C-Control Pro Mega 32 void main(void) { Port_DataDirBit(0,0); Port_WriteBit(0,0); Irq_SetVect(INT_TIM0COMP,Timer0_ISR); definieren Timer_T0Time(100,ps_1024); starten // weiterer Programmablauf... } // PortA.0 Ausgang // PortA.0 Ausgang=0 // Interrupt Service Routine // Zeit festlegen und Timer0 5.3.16.5 Puls & Periodenmessung Mit dem Timer_1 können Pulsweiten oder Signalperioden gemessen werden.
Compiler 112 5.3.16.6 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 Messfrequenz 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 Messzeit lassen sich auch höhere Frequenzen messen. Das Ergebnis muß dann entsprechend umgerechnet werden. 5.3.16.
113 C-Control Pro Mega 32 void Timer_T0FRQ(byte period,byte PS); Beschreibung Diese Funktion initialisiert den Timer0 mit dem angegebenen Vorteiler und Periodendauer, siehe Tabelle . Das Ausgangssignal erscheint an PortB.3 (PIN4). Die Frequenzerzeugung wird automatisch gestartet. Parameter period Periodendauer PS Vorteiler Tabelle prescaler: Vorteiler (prescaler) Zeitbasis (Dauer eines Ticks) PS_1 (1) 135,6 ns PS_8 (2) 1,085 µs PS_64 (3) 8,681 µs PS_256 (4) 34,72 µs PS_1024 (5) 138,9 µs 5.3.
Compiler 114 Diese Funktion stellt eine neue Pulsweite für den Timer0 ein, ohne den Vorteiler zu verändern. Parameter PW Pulsweite 5.3.16.12Timer_T0PWM Timer Funktionen Syntax void Timer_T0PWM(byte PW,byte PS); Beschreibung Diese Funktion initialisiert den Timer0 mit dem angegebenen Vorteiler und Pulsweite, siehe Tabelle . Das Ausgangssignal erscheint an PortB.3 (PIN4).
115 C-Control Pro Mega 32 prescaler Vorteiler (Tabelle prescaler) 5.3.16.14Timer_T0Stop Timer Funktionen Syntax void Timer_T0Stop(void); 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.3.16.
Compiler 116 5.3.16.16Timer_T1CNT Timer Funktionen Syntax void Timer_T1CNT(void); Beschreibung Diese Funktion initialisiert den Counter1. Der Counter1 wird bei einer positiven Signalflanke an dem Eingang T1 (PIN2) inkrementiert. Parameter Keine 5.3.16.17Timer_T1CNT_Int Timer Funktionen Syntax void Timer_T1CNT_Int(word limit); Beschreibung Diese Funktion initialisiert den Counter1. Der Counter1 wird bei einer positiven Signalflanke an dem Eingang T1 (PIN2) inkrementiert.
117 C-Control Pro Mega 32 Keine 5.3.16.19Timer_T1FRQ Timer Funktionen Syntax void Timer_T1FRQ(word period,byte PS); Beschreibung Diese Funktion initialisiert den Timer1 mit dem angegebenen Vorteiler und Periodendauer, siehe Tabelle . Das Ausgangssignal erscheint an PortD.5 (PIN19). Die Frequenzerzeugung wird automatisch gestartet.
Compiler 118 PS Vorteiler (Tabelle prescaler) 5.3.16.21Timer_T1GetCNT Timer Funktionen Syntax word Timer_T1GetCNT(void); Beschreibung Der Wert des Counter1 wird gelesen. Erfolgte ein Überlauf, dann wird der Wert 0xFFFF übergeben. Rückgabewert der gemessene Zählerwert 5.3.16.22Timer_T1GetPM Timer Funktionen Syntax word Timer_T1GetPM(byte Mode); Beschreibung Diese Funktion legt fest ob eine Pulsbreiten- oder Periodenmessung durchgeführt werden soll, und liefert das Messergebnis zurück.
119 C-Control Pro Mega 32 Beschreibung Diese Funktion initialisiert den Timer_1 für die Messung und setzt den Vorteiler. Parameter PS Vorteiler Tabelle prescaler: Vorteiler (prescaler) Zeitbasis (Dauer eines Ticks) PS_1 (1) 67,8 ns PS_8 (2) 542,5 ns PS_64 (3) 4,34 µs PS_256 (4) 17,36 µs PS_1024 (5) 69,44 µs 5.3.16.
Compiler 120 Parameter PW1 Pulsweite 5.3.16.26Timer_T1PWM Timer Funktionen Syntax void Timer_T1PWM(word period,word PW0,byte PS); Beschreibung Diese Funktion initialisiert den Timer1 mit dem angegebenen Vorteiler, Pulsweite und Periodendauer, siehe Tabelle . Das Ausgangssignal erscheint an PortD.5 (PIN19). Parameter period Periodendauer PW0 Pulsweite PS Vorteiler (Tabelle prescaler) 5.3.16.
121 C-Control Pro Mega 32 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.3.16.29Timer_T1Time Timer Funktionen Syntax void Timer_T1Time(word Time,byte PS); Beschreibung Diese Funktion initialisiert den Timer1 mit dem angegebenen Vorteiler und dem Wert (16 Bit) für die Zeit, siehe Tabelle .
Compiler Parameter prescaler Vorteiler (Tabelle prescaler) © 2005 Conrad Electronic 122
Kapitel 6
Anhang 6 Anhang 6.1 FAQ 124 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.
125 C-Control Pro Mega 32 Sachverzeichnis ---- 52 -#- case 56 char 46 Compilervoreinstellung Conrad 3 continue 53, 54, 55 CPU Auswahl 25 -+- 51 32 -D- 52 -AAbsDelay 63 AComp 63 ADC_Disable 65 ADC_Read 65 ADC_ReadInt 66 ADC_Set 66 ADC_SetInt 67 ADC_StartInt 67 Addition 50 Analog-Comparator 63, 64 Anweisungen 44 Anweisungsblock 44 ApplicationBoard 14 Arithmetische Operatoren 50 Array 47 Ausdrücke 44 Ausgaben 34 Auto Aktualisieren 36 Autostart 33 -Bbedingte Bewertung Bezeichner 44 27 -C- #define
Sachverzeichnis Ext_Int0 79 Ext_Int0Disable Ext_Int1 80 Ext_Int1Disable Ext_Int2 81 Ext_Int2Disable 80 81 81 -FFax 3 Fenster 40 Firewall 40 Firmware 10 float 46 for 55 Frequenzerzeugung 109 Frequenzmessung 112 Funktionen 57 -Ggleich 51 GPP 3 größer 51 größer gleich 51 35 -II2C Status Codes 77 I2C_Init 75 I2C_Read_ACK 75 I2C_Read_NACK 75 I2C_Start 76 I2C_Status 76 I2C_Stop 76 I2C_Write 77 IDE 23 IDE Einstellungen 38 if 52 Installation 5, 6 © 2005 Conrad Electronic -JJumper 19 -KKey_Init 84 Key_Scan
127 C-Control Pro Mega 32 Projektname 24 Projektoptionen 25 Proxy 40 Pulsmessung 111 Pulsweitenmodulation -MMega32 10 Meldungen 32 Modul Mega32 11 Modulo 50 Msg_WriteChar 71 Msg_WriteFloat 72 Msg_WriteHex 72 Msg_WriteInt 72 Msg_WriteText 73 Msg_WriteWord 73 Multiplikation 50 Muster 31 -Rrechts schieben 51 Rechtschreibprüfung 29 Referenzspannung 66, 67 reguläre Ausdrücke 31 reserviert 59 reservierte Worte 59 -S- -NNächster Fehler Nebeneinander 32 40 -OOder 52 Open Source 3 Operatoren 50 Operatoren Tab
Sachverzeichnis Syntax Einfärbung 29 -TTastaturbelegung 29 Thread_Cycles 104 Thread_Delay 105 Thread_Kill 105 Thread_Lock 105 Thread_Resume 106 Thread_Signal 106 Thread_Start 107 Thread_Wait 107 Threadoptionen 26 Threads 103 Timer 108 Timer_T0CNT 112 Timer_T0Disable 112 Timer_T0FRQ 112 Timer_T0GetCNT 113 Timer_T0PW 113 Timer_T0PWM 114 Timer_T0Start 114 Timer_T0Stop 115 Timer_T0Time 115 Timer_T1CNT 116 Timer_T1CNT_Int 116 Timer_T1Disable 116 Timer_T1FRQ 117 Timer_T1FRQX 117 Timer_T1GetCNT 118 Timer_T1GetPM