C-Control Pro IDE © 2013 Conrad Electronic
I C-Control Pro IDE Inhalt 2 Kapitel 1 Wichtige Hinweise 1 Einleitung ................................................................................................................................... 2 2 Lesen ................................................................................................................................... dieser Anleitung 2 3 Handhabung ...................................................................................................................................
Inhalt II 3................................................................................................................................... LCD Matrix 131 Kapitel 3 IDE 133 1................................................................................................................................... Projekte 134 1.1 ................................................................................................................................... Projekterstellung 134 1.2 .......................
III C-Control Pro IDE 2................................................................................................................................... CompactC 175 2.1 ................................................................................................................................... Programm 175 2.2 ................................................................................................................................... Anweisungen 176 2.3 ......................................
Inhalt IV 5.4 ................................................................................................................................... CAN_Init 248 5.5 ................................................................................................................................... CAN_Receive 249 5.6 ................................................................................................................................... CAN_MObSend 249 5.7 ...........................................
V C-Control Pro IDE 11.7 ................................................................................................................................... ETH_CloseListenUDP 270 11.8 ................................................................................................................................... ETH_DisconnectTCP 270 11.9 ................................................................................................................................... ETH_GetIPInfo 271 11.10 ...........
Inhalt VI 16.2 ................................................................................................................................... Integer 303 17 ................................................................................................................................... OneWire 304 17.1 ................................................................................................................................... Onewire_Read 304 17.2 .............................................
VII C-Control Pro IDE 21.2 ................................................................................................................................... SDC Rückgabe Werte 334 21.3 ................................................................................................................................... SDC_FClose 334 21.4 ................................................................................................................................... SDC_FOpen 335 21.5 .....................
Inhalt VIII 25 ................................................................................................................................... Threads 360 25.1 ................................................................................................................................... Thread_Cycles 362 25.2 ................................................................................................................................... Thread_Delay 362 25.3 .....................................
Kapitel 1
Wichtige Hinweise 1 2 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 AVR32 und der Atmel Mega Serie (Mega 32, Mega 128, AT90CAN). Diese Mikrocontroller werden in sehr vielen Geräten in großen Stückzahlen eingesetzt.
3 1.3 C-Control Pro IDE 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.
Wichtige Hinweise 4 C-Control Pro Unit in Systemen, die direkt oder indirekt medizinischen, gesundheits- oder lebenssichernden Zwecken dienen, ist nicht zulässig. 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.
5 1.8 C-Control Pro IDE Demo Programme Die aktuellen Demoprogramme sind im Verzeichnis "C:\Dokumente und Einstellungen\Alle Benutzer \Gemeinsame Dokumente\C-Control Pro Demos" (XP und früher) bzw. "C:\Benutzer\Öffentlich\Öffentliche Dokumente\C-Control Pro Demos" (Vista und später) zu finden. Die aktuellen Demos sind im Ordner "Demos Ver 2.31" gespeichert. Die alten Demoprogramme werden damit nicht überschrieben.
Wichtige Hinweise SD card Unterstützung Support des C-Control Pro Mega128 CAN Modul CAN-BUS Bibliothek Direkter Zugriff auf Flash-Arrays Array Tooltips im Debugger IDE Style änderbar Vista und Win7 Theme Support Übertragung bei Programmstart einschaltbar erhöhte serielle Geschwindigkeit bei Modul Kommunikation VT100 Emulation für Terminal rand(), srand() Random Funktionen Fehlerkorrekturen Dokumentations Korrekturen funktionierende floats in Tabellen negative Zahlen in Tabellen korrigiert Klammerfehler in k
7 C-Control Pro IDE Neue konfigurierbare Oberfläche in der IDE Todo Liste Compiler Warnungen abschaltbar Programm Transfer nur mit Bytecode ohne Projekt erweiterte Programminfo Schneller Transfer, wenn Interpreter schon übertragen Verbesserte Vervollständigung von Befehlswörtern und Namen der Bibliotheksfunktionen Funktions Parameter Hilfe Optimizer um nicht benutzten Code zu entfernen Peephole Optimizer Unterstützung von vordefinierten Arrays im Flash Speicher Array Grenzen Check zur Laufzeit Optimierte A
Wichtige Hinweise 8 Version 1.71 vom 25.06.2008 neue Features neuer Editor in der IDE Editor hat Funktionsnamen Übersicht Code folding Internes Terminalprogramm Werkzeugmenü mit Optional erweiterbarer Toolliste Syntaxhervorhebung aller Standard Bibliotheksaufrufe Konfiguration der Syntaxhervorhebung Erweiterung von Select ..
9 C-Control Pro IDE Man konnte nur 16mal das Array Fenster öffnen, auch wenn eines vorher geschlossen wurde Aus dem Text "Compiler" unter Optionen wurde "Compiler Voreinstellungen" Version 1.60 vom 03.04.
Wichtige Hinweise 10 SPI kann ausgeschaltet werden um die Pins als I/O zu nutzen Die serielle Schnittstelle kann ausgeschaltet werden um die Pins als I/O zu nutzen Der Hexwert wird nun zusätzlich als Tooltip im Debugger angezeigt neue Funktion Thread_MemFree() Zusätzliche EEPROM Routinen für Wort- und Fließkommazugriff Zeitmessung mit Timer_TickCount() #pragma Kommandos um Fehler oder Warnungen zu erzeugen vordefinierte Symbol im Preprozessor: __DATE__, __TIME__ __FILE__, __FUNCTION__, __LINE__ Versionsnu
Kapitel 2
Hardware 2 Hardware 2.1 Mega Serie 12 Es wird die Hardware vorgestellt, die bei der C-Control Pro Mega Serie zur Anwendung kommt. Beschrieben werden die Module von C-Control Pro Mega32, C-Control Pro Mega128 und Control Pro Mega128 CAN. Weitere Abschnitte erklären Aufbau und Funktion der zugehörigen Application Boards, und die mitgelieferten LCD Module, sowie Tastatur. 2.1.
13 C-Control Pro IDE Mega128 Modul Das Modul Mega128 (CAN) hat die Steckverbinder so angeordnet, daß ein falscher Einbau des Moduls nicht möglich ist. Der Ausbau erfolgt durch vorsichtiges Heraushebeln des Moduls mit einem geeigneten Werkzeug aus der Fassung. Um ein Verbiegen der Anschlüsse zu vermeiden sollte das Hebeln von mehreren Seiten erfolgen. Einbaurichtung Mega32 Modul Das Modul Mega32 in der richtigen Orientierung montieren. Dazu die Pin 1 Markierung beachten.
Hardware 14 Treiber und Software der C-Control Pro unterstützen kein Windows Betriebssystem vor Windows 2000. Ist das Application Board zum ersten Mal angeschlossen worden, so ist kein Treiber für den FTDI Chip vorhanden. Unter Windows XP wird dann folgendes Fenster angezeigt: Es ist hier dann "Software von einer Liste oder bestimmten Quelle installieren" anzuwählen und auf "Weiter" zu klicken.
15 C-Control Pro IDE 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".
Hardware 16 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. Nun kann man in der PC-Software die Schnittstelle selektieren.
17 C-Control Pro IDE SPI Abschaltung (nur Mega128) Ein Signal auf der SPI Schnittstelle beim Einschalten des Moduls kann die USB Kommunikation aktivieren. Um dies zu unterbinden kann man PortG.4 (LED 2) beim Einschalten auf low setzen. Dann wird die SPI Schnittstelle nicht konfiguriert. Die SPI Schnittstelle kann auch später vom Interpreter manuell mit SPI_Disable() abgeschaltet werden.
Hardware 18 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.
19 C-Control Pro IDE achten. Eine Überschreitung der Maximalwerte kann zur Zerstörung des C-Control Pro Moduls 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 Bereich der zulässigen relativen Umgebungsluftfeuchte Versorgungsspannung 20% … 60% Bereich der zulässigen Versorgungsspannung Stromaufnahme des Moduls ohne externe Lasten 4,5V … 5,5V ca. 20mA 20 Takt Taktfrequenz (Quarzoszillator) Mechanik äußere Abmessungen ohne Pins ca. Masse Pinraster Pinanzahl (zweireihig) Abstand der Reihen 14,7456MHz 53 mm x 21mm x 8 mm ca. 90g 2,54mm 40 15,24mm Ports Max.
21 C-Control Pro IDE 2K Byte Internal SRAM Peripheral Features: Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode Four PWM Channels 8-channel, 10-bit ADC 8 Single-ended Channels 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x Byte-oriented Two-wire Serial Interface (I2C) Programmable Serial USART On-chip Analog Comparator External and Internal Interrupt Sources 32 Programmable I/O Lines 40-
Hardware 23 24 25 26 27 28 29 30 31 32 33 PC1 PC2 PC3 PC4 PC5 PC6 PC7 SDA EXT-SDA I2C-Interface 7 AVCC GND AREF ADC7 PA7 PortA.7 RX_BUSY PortA.6 6 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.
D C B 1 SCHUTZHAUBE-DIL40 * X1 R1 20K * VCC GND VCC C3 10NF/16V * D1 BAS70 * 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 (INT0) P
Hardware 24 Applikation müssen die entsprechenden Buchsenleisten im folgenden Rasterformat angeordnet werden: In der Grafik sieht man die Buchsenleisten X1-X4 und dann die ersten beiden Pins der Buchsenleiste. Pin 1 von Leiste X1 entspricht dem Anschluß X1_1 (siehe Mega128 Pinzuordnung). Modulspeicher In dem C-Control Pro 128 Modul sind 128kB FLASH, 4kB EEPROM und 4kB SRAM integriert.
25 C-Control Pro IDE trollers sind von dieser Taktfrequenz abgeleitet. Reset Ein Reset bewirkt die Rückkehr des Microcontrollersystems in einen definierten Anfangszustand. Das C-Control Pro Modul kennt grundsätzlich 2 Reset-Quellen: Power-On-Reset: wird automatisch nach dem Einschalten der Betriebsspannung ausgeführt Hardware-Reset: wird ausgeführt, wenn der RESET (X2_3) des Moduls "low" gezogen und wieder losgelassen wird, z.B.
Hardware 26 PLM-Ports Es stehen drei Timer für PLM zur Verfügung. Timer_0 mit 8 bit und Timer_1 und Timer_3 mit jeweils 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.
27 C-Control Pro IDE äußere Abmessungen ohne Pins ca. Masse Pinraster Pinanzahl (zweireihig) 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) 2.1.4.1 ± 20 mA 200mA –0,5V ... 5,5V 20 - 50 kOhm CPU Mega128 Übersicht Der Mikrocontroller ATmega128 stammt aus der AVR-Familie von ATMEL.
Hardware 28 Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes Two Expanded 16-bit Timer/Counters with Separate Prescaler, Compare Mode and Capture Mode Real Time Counter with Separate Oscillator Two 8-bit PWM Channels 6 PWM Channels with Programmable Resolution from 2 to 16 Bits Output Compare Modulator 8-channel, 10-bit ADC 8 Single-ended Channels 7 Differential Channels 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x Byte-oriented Two-wire Serial Interface Dual Progr
29 C-Control Pro IDE X1_9 X1_8 X1_7 X1_6 X1_5 X1_4 X1_3 X1_2 X1_1 X2_5 X2_6 X2_3 X4_10 X4_12 PE7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PG3 PG4 X2_9 X2_10 X2_11 X2_12 X2_13 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 4 1 1 1 1 1 1 1 1 6 6 39 8 9 10 11 12 13 14 15 51 52 PD0 PD1 PD2 PD3 PD4 3 3 3 3 3 24 25 26 27 28 INT7 SS SCK MOSI MISO OC0 OC1A OC1B OC1C TOSC2 TOSC1 RESET VCC GND XTAL2 XTAL1 INT0 INT1 INT2 INT3 IC1 X2_14 X2_15 X2_16 30 31 32 PD5 PD6 PD7 3 3 3 29 30 31 XCK1 T1 T2
Hardware 2.1.4.3 30 JTAG TCKJTAG X3_5 57 PF4 5 44 ADC4 X3_4 X3_3 X3_2 X3_1 X4_11 X4_12 X4_9 58 59 60 61 62 63 64 PF3 PF2 PF1 PF0 5 5 5 5 43 42 41 40 ADC3 ADC2 ADC1 ADC0 AREF GND AVCC Schaltplan 14 16 15 14 13 12 9 8 7 6 5 4 3 2 1 15 11 16 10 X3 Der hier abgebildete Schaltplan zeigt das geplante C-Control Pro Modul mit CAN Bus, was aber bisher nicht gebaut wurde. Im C-Control Pro 128 Modul ist eine Mega 128 CPU eingebaut, und kein AT90CAN128 wie hier abgebildet.
31 C-Control Pro IDE In der Grafik sieht man die Buchsenleisten X1-X4 und dann die ersten beiden Pins der Buchsenleiste. Pin 1 von Leiste X1 entspricht dem Anschluß X1_1 (siehe Mega128 Pinzuordnung).
Hardware 32 Takterzeugung Die Takterzeugung erfolgt durch einen 16MHz-Quarzoszillator. Alle zeitlichen Abläufe des Controllers sind von dieser Taktfrequenz abgeleitet. Das normale C-Control Pro Mega128 Modul läuft mit 14,7456 Mhz. Für die Einhaltung eines genauen CAN-Bus Taktes, wird hier ein 16Mhz Quarz eingesetzt. Reset Ein Reset bewirkt die Rückkehr des Microcontrollersystems in einen definierten Anfangszustand.
33 C-Control Pro IDE bung keine Programme mehr zum C-Control Pro übertragen kann. Auch Ein- und Ausgänge der Timer, A/D Wandler, I2C und die serielle Schnittstelle sind mit einigen Port Pins verbunden. PLM-Ports Es stehen drei Timer für PLM zur Verfügung. Timer_0 mit 8 bit und Timer_1 und Timer_3 mit jeweils 16 bit. Diese können zur D/A-Wandlung, zur Ansteuerung von Servomotoren im Modellbau, oder zur Ausgabe von Tonfrequenzen benutzt werden.
Hardware 34 Takt Taktfrequenz (Quarzoszillator) Mechanik äußere Abmessungen ohne Pins ca. Masse Pinraster Pinanzahl (zweireihig) 16MHz 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) 2.1.5.1 ± 20 mA 200mA –0,5V ...
35 C-Control Pro IDE Programming Lock for Software Security JTAG (IEEE std. 1149.1 Compliant) Interface Boundary-scan Capabilities According to the JTAG Standard Programming Flash (Hardware ISP), EEPROM, Lock & Fuse Bits Extensive On-chip Debug Support CAN Controller 2.0A & 2.
Hardware 36 Operating temperature: Industrial (-40°C to +85°C) Maximum Frequency: 8 MHz at 2.7V, 16 MHz at 4.5V 2.1.5.2 Pinzuordnung PortA bis PortG werden für direkte Pin-Funktionen (z.B. Port_WriteBit) von 0 bis 52 gezählt, siehe "PortBit".
37 2.1.5.
Hardware © 2013 Conrad Electronic 38
39 2.1.6 C-Control Pro IDE Mega32 Application Board USB Das "C-Control Pro Application Board MEGA 32" (Conrad Artikel-Nr. 198245) verfügt über eine USB Schnittstelle zum Laden und Debuggen des Programms. Durch die hohe Datenrate dieser Schnittstelle sind die Datenübertragungszeiten gegenüber der seriellen Schnittstelle erheblich kürzer. Die Kommunikation erfolgt über einen USB-Controller von FTDI und einen AVR Mega8 Controller. Der Mega8 hat einen eigenen Reset-Taster (SW5).
Hardware 40 ne einfache Softwareschnittstelle für Ausgaben auf das Display. Das Display wird an den Stecker X14 (16-polig, zweireihig) angeschlossen. Durch einen mechanischen Verpolungsschutz ist ein falsches Einstecken nicht möglich. Das verwendete LCD Modul ist vom Typ Hantronix HDM08216L-3. Weitere Informationen findet man auf der Hantronix Webseite http://www.hantronix.com und im Datasheets Verzeichnis auf der CDROM. Das Display wird im 4-Bit Modus betrieben.
41 C-Control Pro IDE 5V. Alle Schaltungsteile auf dem Application Board werden mit dieser Spannung versorgt. Durch die Leistungsreserven des Netzteils stehen diese 5V auch zur Versorgung externer ICs zur Verfügung. Bitte den maximal entnehmbaren Strom beachten. Eine Überschreitung kann zur Zerstörung führen! Wegen der relativ hohen Stromaufnahme des Application Boards im Bereich von 125 mA ist sie für den Einsatz in dauerhaft batteriebetriebenen Geräten nicht zu empfehlen.
Hardware 42 dungskabel verbinden, deren Anschlußbelegung bekannt ist. Niemals die seriellen Sendeausgänge zweier Geräte miteinander verbinden! Man erkennt die Sendeausgänge in der Regel an der negativen Ausgangsspannung im Ruhezustand. Testschnittstellen Die 4-polige Stiftleiste X16 wird nur für interne Testzwecke verwendet und wird auch nicht auf allen Application Boards bestückt werden. Für den Anwender ist diese Stiftleiste ohne Bedeutung.
43 C-Control Pro IDE dere Funktionen zur Verfügung. Neben den Jumpern für die Ports gibt es noch zusätzliche Jumper, welche nachfolgend beschrieben werden. Ports A bis D Die dem Mega32 Modul zur Verfügung stehenden Ports sind in dieser Grafik eingezeichnet. Dabei ist die rechte Seite dem Modul verbunden, die linke Seite verbindet zu Bauteilen des Application Boards. Wird ein Jumper gezogen, so wird die Verbindung zum Application Board unterbrochen. Dies kann zur Störung von USB, RS232 etc.
Hardware 44 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. PAD3 PAD3 (rechts neben dem Modul, unter der blauen Beschriftung) wird als ADC_VREF_EXT für die Funktionen ADC_Set und ADC_SetInt benötigt.
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 Q7 Q7 CE PL CP DS IC9 Q7 Q7 CE PL CP DS IC8 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 KEY02 KEY09 KEY06 KEY03 KEY12 KEY05 KEY01 VCC KEY11 KEY04 KEY10 KEY08 KEY07 11 12 13 14 3 4 5 6 KEY08 KEY10 KEY04 KEY11 KEY07 KEY01 KEY05 KEY12 GND 74HC165 D0 D1 D2 D3 D4 D5 D6 D7 1
4X1 1 2 3 4 X16 0E R11 27E GND XF1 2K2 R19 XF2 33PF/16V C27 28 Q2 6.
Hardware 2.1.6.
49 2.1.7 C-Control Pro IDE Mega128 Application Board USB Das "C-Control Pro Application Board MEGA 128" (Conrad Artikel-Nr. 198258) verfügt über eine USB Schnittstelle zum Laden und Debuggen des Programms. Durch die hohe Datenrate dieser Schnittstelle sind die Datenübertragungszeiten gegenüber der seriellen Schnittstelle erheblich kürzer. Die Kommunikation erfolgt über einen USB-Controller von FTDI und einen AVR Mega8 Controller. Der Mega8 hat einen eigenen Reset-Taster (SW5).
Hardware 50 unter einem der Zeichen kann die aktuelle Ausgabeposition anzeigen. Das Betriebssystem bietet eine einfache Softwareschnittstelle für Ausgaben auf das Display. Das Display wird an den Stecker X14 (16-polig, zweireihig) angeschlossen. Durch einen mechanischen Verpolungsschutz ist ein falsches Einstecken nicht möglich. Das verwendete LCD Modul ist vom Typ Hantronix HDM08216L-3. Weitere Informationen findet man auf der Hantronix Webseite http://www.hantronix.
51 C-Control Pro IDE aktiviert werden und diese Ports stehen dann dem Anwender zur Verfügung. Um das SRAM zu deaktivieren muss der Jumper nach links umgelegt werden (Orientierung: serielle Schnittstelle zeigt nach links), so das die linken beiden Stifte von JP7 verbunden sind. Obwohl der eingesetzte RAM Chip 128kb Kapazität hat, sind aus Gründen des Speichermodells nur 64kb davon nutzbar. I2C-Schnittstelle Über diese Schnittstelle können mit hoher Geschwindigkeit serielle Daten übertragen werden.
Hardware 52 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.
53 C-Control Pro IDE JP4. Auch diese Stiftleiste ist nur für den internen Gebrauch und wird in späteren Board Serien vermutlich nicht mehr bestückt. 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 äußere Abmessungen ca.
Hardware 54 benutzt, so können die entsprechenden Jumper entfernt werden, und diese Pins stehen dann für andere Funktionen zur Verfügung. Neben den Jumpern für die Ports gibt es noch zusätzliche Jumper, welche nachfolgend beschrieben werden. Jum perpositionen im Auslieferzustand Ports A bis G Die dem Mega128 Modul zur Verfügung stehenden Ports sind in dieser Grafik eingezeichnet. Dabei ist die gelbe Seite dem Modul verbunden, die hellblaue Seite verbindet zu Bauteilen des Application Boards.
55 C-Control Pro IDE JP6 Bei Verwendung des Displays kann mit JP6 die Beleuchtung (back light) abgeschaltet werden. JP7 Wird das SRAM auf dem Application Board nicht benötigt, dann kann es mit JP7 deaktiviert werden und diese Ports stehen dann dem Anwender zur Verfügung. Um das SRAM zu deaktivieren muss der Jumper nach links umgelegt werden (Orientierung: serielle Schnittstelle zeigt nach links), so das die linken beiden Stifte von JP7 verbunden sind.
Hardware Schaltplan MOD3 X6 X6A 13 4 14 3 15 2 16 1 MOD4 4 12 5 13 6 14 7 15 8 16 11 7 9 8 PG0 PG1 PG2 PG3 PG4 4 5 6 7 8 3 b0805j GND 4 1 5 2 47k EXT-A2 b0805j 3 3 4 4 BLM21A GND C6 VCC VUSB 100nF C32 b0805j 10nF b0805j 3 GND 4 X5A 1 1 2 2 3 3 4 4 5 5 6 6 7 7 EXT-RXD0 EXT-TXD0 EXT-T1 TX-REQ EXT-T2 EXT-DATA 8 X2 1 1 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 2 3 4 5 6 7 8 2 3 4 5 6 7 8 Project: MEGA128app_V2 PCB-Design: MEGA Appl.
57 C-Control Pro IDE VCC b0805j 390R R9 b0805j 390R R8 b0805j 390R 0R b0805j SIWU LD6 $splname LD4 R27 0R 0R b0805j b0805j 2 GND $splname $splname LD5 4 3 R7 X16 2 1 LL4148 RES_FT R13 sod80 D5 R42 VCC VCC b0805j 22k R18 VCC 7 5 R17 27R b0805j 27 XTIN b0805j Q2 33pF 12 2 EEDATA GND R19 2 17 D6 D7 PB3 PB4 PB5 VCC AREF AGND 21 GND PC0 23 PD1 PC1 24 32 PD2 PC2 25 PD0 1 PD3 2 PC3 26 PD4 9 PD5 PC4 27 PD6 PC5 28 10 11 PD7 D0
Hardware 2.1.7.
59 2.1.8 C-Control Pro IDE Mega32 Projectboard Das "C-Control Projectboard PRO32" (Conrad Artikel-Nr. 197287) stellt eine günstige Alternative zum Applikationsboard MEGA32 (Conrad-Best.-Nr. 198245) dar. Es ist vom Funktionsumfang her zum C-Control PRO Applikation-Board deutlich eingeschränkt und dient hauptsächlich für eigene Hardwareentwicklungen in Verbindung mit der der MEGA32 UNIT. Das Projectboard enthält die wichtigsten Komponenten, die zum Betrieb der MEGA32 UNIT benötigt werden.
Hardware 60 Achtung! Eine maximale Stromaufnahme von 100mA über USB darf nicht überschritten werden! Der Schalter S3 sowie die Stromversorgungsstiftleisten JP7/JP5 und die Stifte für Vcc/GND auf den Lochrasterfeld sind bei USB-Betrieb nicht mehr unter Spannung. Diese Versorgung dient lediglich für Testanwendungen, sollte keine externe Stromversorgung zur Verfügung stehen. In der IDE der C-Control PRO muss der entsprechende COM-Port (serielle Schnittstelle) ausgewählt werden.
61 C-Control Pro IDE Max. zulässiger Dauerstrom aus der stabilisierten 5V-Spannung: 100mA (ohne Kühlung) Lochrasterfeld: 2,54mm Bereich der zulässigen Umgebungstemperatur: 0°C bis 70°C Bereich der zulässigen relativen Umgebungsluftfeuchte: .. 20-60% nicht kondensierend Abmessungen: 60*100*21mm (inkl. MEGA32 UNIT) 2.1.9 Mega128 Projectboard Das „C-Control PRO 128 Projectboard“ (Conrad Artikel-Nr. 197313) stellt eine günstige Alternative zum Applikationsboard „MEGA128“ (Conrad-Best.-Nr. 198258) dar.
Hardware 62 Im Basiszustand ohne RS232-USB-Converter sind die Jumper JP4/JP5 so zu stecken, wie auf der Abbildung auf der nächsten Seite zu sehen ist. Wird der RS232-USB-Converter verwendet (nicht im Lieferumfang), so müssen diese Jumper auf USB umgesteckt werden. Der Jumper JP3 dient zur Auswahl der Versorgungsspannung. Bei Jumperstellung „Netz“ werden die Klemmen J11 zur Versorgung benutzt (Labornetzteil oder stabilisiertes Steckernetzgerät, min. 100mA, je nach Applikation).
63 C-Control Pro IDE werden, um die „MEGA128 UNIT“ in den Programmiermodus zu schalten. Beim Anlegen der Versorgungsspannung läuft das im Programmspeicher der „MEGA128 UNIT“ abgelegte User-Programm automatisch ab. Dieses kann mit dem Taster (BOOT/STOP) angehalten werden, dadurch befindet sich die „MEGA128 UNIT“ im BOOT-Modus, der zur Programmübertragung benötigt wird. Der Programmstart kann über die IDE oder über den Taster (RESET/START) ausgelöst werden.
Hardware 2.2 64 AVR32Bit Es wird die Hardware vorgestellt, die bei der C-Control Pro AVR32Bit Serie zur Anwendung kommt. Weitere Abschnitte erklären Aufbau und Funktion des zugehörigen Application Boards. 2.2.1 Installation Dieses Kapitel beschreibt die Installation der C-Control Pro AVR32Bit Unit auf dem Applicationboard, und die Installation der Software und USB Treiber. Im Auslieferungszustand ist der Autostart Jumper gesetzt. Bitte abziehen, da sonst keine Übertragung möglich ist. 2.2.1.
65 2.2.1.2 C-Control Pro IDE USB Treiberinstallation Verbinden Sie nun die UNIT mit den mitgelieferten Mini-USB Kabel mit dem PC (Dieses Kabel liegt dem Applicationboard oder Mainboard bei). Der PC versucht nun einen Treiber für ein "C-Control Pro AVR32" Device zu installieren. Den passenden Treiber finden Sie unter USB Driver\AVR32 USB Driver im Installationsverzeichnis der C-Control Pro IDE. Sind alle Verbindungen getätigt, so starten Sie nun die Entwicklungsumgebung.
Hardware 66 C-Control PRO IDE Ausgabe nach erfolgreicher Installation der UNIT Nun können Sie bereits ein Programm, z. B. eines der Beispiele, auf die UNIT übertragen. Die Beispielprogramme finden Sie, wenn Sie in der IDE unter „Hilfe“ auf „Demo Programme“ klicken. 2.2.2 Firmware Das Betriebssystem des C-Control Pro besteht aus folgenden Komponenten: Bootloader Interpreter Bootloader Der Bootloader ist immer verfügbar.
67 2.2.2.1 C-Control Pro IDE Autostart Autostart Ist der Autostart-Jumper (J1 auf AVR32Bit UNIT) gesteckt, so startet das Userprogramm nach einem Reset oder Power On direkt. Da der Autostart-Jumper die Verbindung zum Start/Stop Taster dauerhaft brückt, hat der Start/Stop Taster keine Wirkung mehr, wenn der Jumper gesetzt ist.
Hardware 68 Wird das Benutzerprogramm durch einen Autostart direkt gestartet, so wird keine Meldung "Interpreter gestartet" ausgegeben. Das liegt daran, dass das USB-Subsystem bis zu 2 Sekunden benötigt um den virtuellen COM Port zu aktivieren. Da das Benutzerprogramm aber sofort los läuft, gehen alle Ausgaben der ersten 2 Sekunden verloren. Auch Debugausgaben sind in dieser Zeit bei aktivem Autostart nicht sichtbar. Ein Start des Programms durch den Start-Taster, wenn die Unit im Bootloader ist (z.B.
69 C-Control Pro IDE 1x 16 Kanal 12 Bit ADC 1x USB-Interface (Mini-USB) zum Programmieren und Debuggen 3x USART-Interface (serielle-Schnittstelle) 1x Externes I2C EEPROM 512 KBit 1x Real Time Clock (RTC) mit 32.
Hardware Bild UNIT (Sicht von unten) Jumper: J1: Autostart der Userapplikation J2: CAN 120Ohm Abschlusswiderstand aktiviert © 2013 Conrad Electronic 70
71 C-Control Pro IDE Pinlayout des Moduls Bild UNIT Pinout Eine Portübersicht finden Sie im Kapitel Pinzuordnung Stromversorgung An den UNIT Pins CON X1 3.3V und GND muss eine stabilisierte Versorgungsspannung angeschlossen werden. Die jeweils vier 3.3V und GND Pins sind untereinander verbunden! Die LED „POWER“ signalisiert, dass die UNIT mit Strom versorgt wird.
Hardware 72 Bild UNIT Stromversorgung USB Über die Mini-USB Buchse wird das C-Control Pro AVR32Bit Modul mit dem PC verbunden. Der USB-Anschluss dient zur Programmierung und zum Debuggen der Usersoftware. Die C-Control Pro UNITs besitzen alle einen Debugger. Über diesen können Breakpoints gesetzt werden und Variablen zur Laufzeit überwacht und analysiert werden.
73 C-Control Pro IDE Takterzeugung Die Takterzeugung des Mikrocontrollers erfolgt durch einen 12 MHz-Quarz. Im Controller werden die 12 MHz über den PLL-Oszillator auf 66 MHz hochgetaktet. Alle zeitlichen Abläufe des Controllers, wie auch die 48Mhz des USB-Subsystems sind von dieser Taktfrequenz abgeleitet. Real-Time Clock Die C-Control Pro AVR32Bit UNIT besitzt einen separaten Oszillator mit einen 32.768 kHz Uhrenquarz. Diese genaue Quarzuhr kann per Software gestellt und ausgelesen werden.
Hardware 74 Da die Ausgänge der AVR32Bit UNIT nicht sonderlich belastet werden können, sollte immer eine kleine Treiberstufe (siehe Bild) nachgeschaltet werden. Im Beispiel wird eine LED angesteuert, je nach Verbraucher muss ein entsprechender FET oder Transistor verwendet werden. Diese Schaltung wird für Verbraucher bis 100mA eingesetzt. Bei induktiven Lasten muss parallel zum Verbraucher eine Freilaufdiode zugeschaltet werden.
75 C-Control Pro IDE ADC-Referenzspannung Der Mikrocontroller verfügt über einen Analog-Digital-Wandler mit einer umschaltbaren Auflösung von 8/10/12 Bit. Das heißt, gemessene Spannungen können maximal als ganze Zahlen von -2048 bis 2048 dargestellt werden, da der A/D-Wandler immer differentiell arbeitet. Zudem kann die Verstärkung des ADC-Vorverstärkers von 1, 2, 4, 8, 16, 32, 64 per Software eingestellt werden. Folgende Referenzspannungsquellen stehen zur Verfügung: 0,6 * VDDANA intern (0,6 * 3.
Hardware 76 Technische Daten Stromversorgung VCC 3 bis 3.6V Nominal 3.3V / >200mA (stabilisiert) Maximale Spannung an den Pins -0.3V bis 3.6V Maximaler Strom an allen Pins (Summe) 120mA RPULLUP I/O 5 bis 26 kOhm RPULLDOWN I/O 2 bis 16 kOhm Input Low-level voltage I/O 0.3 * VCC Input high-level voltage I/O 0.7 * VCC Output low-level voltage I/O -3.5 bis -14mA je nach Konfiguration(1) Output high-level voltage I/O 3.
77 C-Control Pro IDE Die verbleibenden Pins von PAxx, PBxx, PCxx, PDxx arbeiten mit Strömen von -3.5/ 3.5 mA bzw. -7/ 7mA. Die Stromstärke der Pins wird über die Anweisung „Port_Attribute“ programmiert. 2.2.3.1 Pinzuordnung PortA bis PortD werden für direkte Pin-Funktionen (z.B. Port_WriteBit) von 0 bis 127 gezählt, siehe "PortBit". Pinbelegung für C-Control Pro AVR32Bit Unit und Application Board C-Control C-Control AVR32 TQFP Unit Name Modul Pin Portname 100 GPIO Function1 Function2 P1 X1.
Hardware P27 X1.35 PA15 21 15 P28 X1.36 PB20 43 52 TIMER0-B P29 X1.37 PB21 44 53 COUNTA-1 P30 X1.38 PB22 45 54 TIMER2-A P31 P32 P33 P34 P35 P36 P37 P38 P39 P40 P41 P42 P43 P44 P45 P46 P47 P48 P49 P50 P51 X1.39 X2.42 X2.41 X2.18 X2.17 X2.40 X2.39 X2.38 X2.37 X2.36 X2.35 X2.34 X2.33 X2.32 X2.31 X2.30 X2.29 X2.28 X2.27 X2.26 X2.
79 C-Control Pro IDE UNIT Pinout Festverdrahtete Pins C-Control Modul Pin TQFP 100 AVR32 Portname X1.05, X1.06 X1.07, X1.
Hardware 39 40 41 53 54 82 83 VDDIN_33 VDDCORE GNDCORE VDDIO2 GNDIO2 VDDIO3 GNDIO 96 97 47 48 PB00 PB01 PB30 PB31 X2.03 X2.02 X2.01 34 35 36 VBUS DM DP X2.43 100 PB03 X2.
81 C-Control Pro IDE X1.46 CAN Driver CAN0_HI X2.07 X2.08 X2.09 X2.10 X2.11 X2.12 X2.13, X2.14 X2.15 PHY PHY PHY PHY PHY PHY PHY PHY LAN_RDLAN_RD+ LAN_TDLAN_TD+ LAN_LED_LNK LAN_LED_ACT +3.
Hardware 2.2.3.
83 C-Control Pro IDE © 2013 Conrad Electronic
Hardware 2.2.4 84 Applicationboard Das C-Control PRO AVR32Bit Applicationboard (Conrad Best.-Nr.: 192587) ist das Standard Entwicklungsboard zur C-Control PRO AVR32Bit UNIT. Das Applicationboard enthält alle wichtigen Komponenten, die zum Betrieb des C-Control PRO AVR32Bit UNIT benötigt werden. Zudem verfügt das Board über eine sehr gute und große Ausstattung an Peripherie. Das Board bietet folgende Features: 1x Stromversorgung (3.3V & 5V) 1x Ein-/ Ausschalter 1x LAN-Anschluss (RJ45) 1x 2.
85 C-Control Pro IDE Montage/ Inbetriebnahme Die C-Control PRO AVR32Bit UNIT wird so aufgesteckt, dass die Mini-USB Buchse der UNIT in Richtung Ein-/ Ausschalter zeigt (Markierung Applicationboard). Im Basiszustand sind die Jumper (JP1 bis JP7) für LED1, LED2 und Tastatur nicht gesteckt. Die Stromversorgung des Applicationboards erfolgt über eine Stabilisiertes Stecker- oder Labornetzgerät mit einer Ausgangsspannung von 7.5V und einem Mindeststrom von 500mA.
Hardware 86 blatt). Schaltplanausschnitt zum I2C-LCD LC-Display Kontrastregler Die beste Sichtbarkeit der LCD-Zeichen ergibt sich bei frontaler Betrachtung. Gegebenenfalls muss der Kontrast nachgeregelt werden. Der Kontrast kann über den Trimmer R19 („Contrast“ links neben dem LC-Display) eingestellt werden. UNIT-BUS Belegung I2C und UNIT-Bus Die Pins der Buchsenleiste Y23 (4er Block) sind mit den Pins P34 (SDA) und P35 (SCL) fest verbunden.
87 C-Control Pro IDE Control I und andere 5V I2C-Bus bzw. UART Bausteine angeschlossen werden. Beispiel LED3 und LED4 an P32 und P33 LEDs Die Pins der Buchsenleisten Y10 (10er Block) sind fest mit den LEDs LED1 bis LED8 verbunden. Die LEDs werden hochohmig über FETs angesteuert (ca. 100K). Damit kann der Port auch noch für andere Zwecke benutzt werden, und die LEDs zeigen zusätzlich den Portzustand an. Die Jumper JP6 und JP7 verbinden die ersten beiden LEDs LED1, LED2 mit den Pins der UNIT P48 und P49.
Hardware 88 Beispiel Referenzspannung am ADCREF0 CAN-Bus An der Klemme J6 ist der CAN-Bus (CAN0) der UNIT herausgeführt und kann direkt verwendet werden. Es muss kein zusätzlicher Treiber nachgeschaltet werden, da dieser bereits auf der UNIT vorhanden ist. Audioverstärker An den Pins der Buchsenleiste Y22 kann direkt von der UNIT ein PWM Signal zur Tonausgabe angeschlossen werden. An der Klinkenbuchse kann ein Kopfhörer, kleiner Lautsprecher (min. 8 Ohm) bzw. ein Aktivlautsprecher angeschlossen werden.
89 C-Control Pro IDE Beispiel Trim m er am ADC0 und ADC1 m it externer Referenzspannung 2.048V Tastatur Für Benutzereingaben steht eine 5-Tasten Tastatur (Tastaturkreuz) zur Verfügung. Die Pins der Buchsenleiste Y11 (6er Block) sind mit den Tastern T1 bis T5 verbunden. Über die Jumper JP1 bis JP5 können diese direkt mit den Pins der UNIT (P41 bis PT45) verbunden werden.
Hardware 90 Beispiel Relais an P54 FET-Treiber Die Pins der Buchsenleiste Y15 sind mit dem Open-Drain FET-Treiber verbunden. Hiermit können Ohmsche Verbraucher (max. 12VDC / 2A) direkt angesteuert werden. Die OUTPUT CTRL-Pins können direkt mit einem Port der UNIT verbunden werden. Es können auch PWM Signale zur Ansteuerung verwendet werden. An der Stiftleiste Y18 stehen die Open-Drain Anschlüsse bereit. Diese werden mit dem Verbraucher – Stromversorgung (+) verbunden.
91 C-Control Pro IDE Beispiel FET-Treiber m it Last gesteuert über P53 USB zu UART Konverter Die Pins der Buchsenleiste Y5 (4er Block) sind mit dem UART zu USB Konverter (Silabs CP2104) verbunden. An der USB-Buchse (Type B) wird das Board mit dem PC verbunden. Der Konverter dient zur seriellen Ausgabe von Daten der UNIT an den PC. Installieren Sie zuerst die Treiber bevor Sie die Verbindung herstellen. Die Treiber zum Konverterbaustein finden Sie unter: http://www.silabs.
Hardware 92 UART Konverter an UART0 RS232 zu UART Konverter Die Pins der Buchsenleiste Y6 (4er Block) sind mit dem RS232 Konverter (MAX3232) verbunden. An der 9 pol. SUB-D Buchse wird das Board mit dem PC oder einem RS232 Gerät verbunden. Der Konverter dient zur Pegelwandlung der 3.3V UNIT auf den Normpegel der seriellen RS232 Schnittstelle (+/-12V). Über diese Schnittstelle können Daten zwischen einem PC oder einem Gerät mit RS232 (z.B. Messgerät) ausgetauscht werden.
93 C-Control Pro IDE RS232 an UART0 Dieses Produkt erfüllt die gesetzlichen, nationalen und europäischen Anforderungen. Der „I2C-Bus“ ist ein eingetragenes Markenzeichen von Philips Semiconductors. Alle anderen enthaltenen Firmennamen und Produktbezeichnungen sind Warenzeichen der jeweiligen Inhaber. Alle Rechte vorbehalten.
Hardware Kurzanleitung © 2013 Conrad Electronic 94
95 2.2.4.
Hardware © 2013 Conrad Electronic 96
97 2.2.5 C-Control Pro IDE Mainboard Das C-Control PRO AVR32Bit Mainboard (Conrad Best.-Nr.: 192702) ist das kompakte Experimentier- und Entwicklungsboard zur C-Control PRO AVR32Bit „UNIT“. Das C-Control PRO AVR32Bit Mainboard enthält alle wichtigen Komponenten die zum Betrieb des C-Control PRO AVR32Bit UNIT benötigt werden. Zudem verfügt das Board über eine gute Grundausstattung an Peripherie.
Hardware 1x 1x 1x 1x 2x 1x 1x 1x 2x 1x 98 Stromversorgung (3.3V & 5V) LAN-Anschluss (RJ45) 2.048V externe Spannungsreferenz Signalgeber (Buzzer) CAN-Anschluss LCD-PORT zum Anschluss des I2C-LCD´s (Conrad BestNr.: 192602) I2C-BUS Anschluss 1-Wire Anschluss I/O-PORT mit je 26 Pins UNIT-Bus (3.
99 C-Control Pro IDE UNIT-BUS Belegung Referenzspannung Der Jumper JP3 legt die externe 2.048V Referenzspannung auf den ADCREF0 (P8) Pin der UNIT. CAN-Bus An der Schraubklemme mit der Bezeichnung „CAN“ ist der CAN-Bus (CAN0) der UNIT herausgeführt und kann direkt verwendet werden. Es muss kein zusätzlicher Treiber nachgeschaltet werden, da dieser bereits auf der UNIT vorhanden ist. Auf der Buchsenleiste J10 ist der CAN-BUS (CAN1) herausgeführt.
Hardware 100 Pfostensteckverbinder 2x3 RM:2.54mm: Best.-Nr. 742063 Passendes Anschlusskabel bereits konfektioniert (Länge: 35cm) Best.-Nr. 19 88 76. 1-WIRE An der Schraubklemme mit der Bezeichnung „1WIRE“ ist der Digitalpin P3 der UNIT herausgeführt. An diesen kann ein 1-WIRE Sensor wie z. B. Conrad Best.-Nr.: 198284 angeschlossen werden. Dieser Pin kann auch als normaler digitaler Ein-/ Ausgang (I/O) verwendet werden.
101 C-Control Pro IDE 3x Jumper Kurzanleitung © 2013 Conrad Electronic
Hardware 2.2.5.
103 2.2.6 C-Control Pro IDE UNIT-BUS Exp. Board Das C-Control PRO AVR32Bit UNIT-BUS Exp. Board (Conrad Best.-Nr.: 192659) ist zur Erweiterung des Funktionsumfanges der C-Control PRO AVR32Bit Produkte bestimmt. Das Produkt ist als offene Leiterplatte mit sechs einzelne 6poligen Pfosten-Steckverbinder ausgeführt, und nur für den UNITBUS der C-Control PRO AVR32 und der C-Control I Produktfamilie (Erweiterungen) und deren Anschlussbuchsen bestimmt.
Hardware Technische Daten Abmessung 72mm x 20mm x 12mm (LxBxH) Pfosten-Stecker Raster 2.
105 2.2.6.
Hardware 2.2.7 106 LCD1602 Board Das C-Control PRO AVR32Bit LCD1602 Board (Conrad Best.-Nr.: 192602) ist zur Erweiterung des Funktionsumfanges der C-Control PRO AVR32Bit Produkte bestimmt. Das Produkt ist als offene Leiterplatte ausgeführt. Das Modul ist mit einem zweizeiligen 16 Zeichen LC-Display mit Hintergrundbeleuchtung und einem 6polige Pfosten-Steckverbinder ausgestattet, und nur für das C-Control PRO AVR32Bit Mainboard (Conrad Best.-Nr.: 192702) bestimmt.
107 C-Control Pro IDE Platine Rückansicht Wird die Basisadresse des LCD verwendet (gleich mit dem Applicationboard), so müssen die Jumper auf der LCD Platinen entfernt werden. Siehe auch LCD_SetDispAddr. Anschlüsse des LCD-Port Verbunden wird das Mainboard mit dem LCD1602 Board mittels einen 6poligen Flachbandkabel mit Pfosten-Steckverbinder (female). Da je nach Anwendung die Kabellänge variieren kann, bieten wir Ihnen diese Komponenten zur Selbstmontage unter folgenden Bestellnummern an.
Hardware 108 Adressierung: Die I2C-Adressjumper JP1 bis JP3 befinden sich auf der Rückseite des LCD1602 Moduls. Bei der Verwendung von mehreren LCD-Modulen (max.
109 C-Control Pro IDE Betriebsspannung 3.
Hardware 2.2.7.
111 2.2.8 C-Control Pro IDE Port-Ext-Board Das Port-Ext-Board (Conrad Best.-Nr.: 192615) ist zur Erweiterung des Funktionsumfanges des CControl PRO AVR32Bit Mainboards (Conrad Best.-Nr.: 192702) bestimmt. Das Produkt ist als offene Lochraster Experimentierleiterplatte mit einen Raster von 2.54mm ausgeführt. Sie ist mit zwei einzelnen 26-poligen Pfosten-Steckverbindern ausgestattet und nur für die Portausgänge (PORT-1/ PORT-2) geeignet.
Hardware Port-Extension-Board Übersicht © 2013 Conrad Electronic 112
113 C-Control Pro IDE CAD Technische Daten: Abmessung 110mm x 90mm x 13mm (LxBxH) Pfosten-Stecker Raster 2.54 mm Lochraster der Platine 2.
Hardware 2.2.9 114 REL4-Board Das C-Control PRO AVR32Bit REL4-Board (Conrad Best.-Nr.: 192631) ist zur Erweiterung des Funktionsumfanges der C-Control PRO AVR32Bit Produkte bestimmt. Das Produkt ist als offene Leiterplatte ausgeführt. Die Platime ist mit 4 Relais zum Schalten von Verbrauchern ausgestattet, und nur für die C-Control Produkte bestimmt. Anschluss und Inbetriebnahme Vergewissern Sie sich, dass vor dem Anschluss der Module an Ihr C-Control PRO z.B. AVR32Bit Applicationboard bzw.
115 C-Control Pro IDE dazwischen zu schalten. Das REL4-Board wird über die Schraubklemme „VREL“ mit Strom versorgt. Der UNIT-BUS dient bei diesem Modul nur als Kommunikationsschnittstelle und zur Versorgung des Digitalen Elektronikteils der Schaltung. Die Relais werden extern über die „VREL“ versorgt! Hinweis: Passendes Anschlusskabel bereits konfektioniert (Länge: 35cm) Best.-Nr. 198876. Tipp: Die Pfostensteckverbinder, lassen sich leicht mit einen kleinen Schraubstock zusammenpressen.
Hardware 116 werden: J3 J2 x x x x x x x x x=Jumper gesteckt / - = nicht gesteckt Bild: Tabelle der möglichen Adressen J1 x x x x Adresse Hex 27 Hex 26 Hex 25 Hex 24 Hex 23 Hex 22 Hex 21 Hex 20 Achtung: Andere I2C-Bus Module der C-Control PRO, verwenden den gleichen I2C-Expander Bausteine (PCA8574), die Anzahl der maximalen Module mit diesem IC ist auf 8 Stück beschränkt! CAD © 2013 Conrad Electronic
117 C-Control Pro IDE Info: Das REL4-Board kann mittels Phönix Contact Hutschienenträger der Serie „UMK“ auf einer Normschiene montiert werden. Technische Daten: Abmessung 76mm x 72mm x 18mm (LxBxH) Pfosten-Stecker Raster 2.54 mm Relais NC/NO, max.
Hardware 2.2.9.
119 C-Control Pro IDE 2.2.10 RELBUS-Board Das C-Control PRO AVR32Bit RELBUS-Board (Conrad Best.-Nr.: 192645) ist zur Erweiterung des Funktionsumfanges der C-Control PRO AVR32Bit Produkte bestimmt. Das Produkt ist als offene Leiterplatte ausgeführt. Sie ist mit 8 Open-Source Schaltstufen (High-Side Switch) zum Schalten von 8 Kleinverbrauchern wie z.B. Relais ausgestattet und nur für den C-Control PRO UNIT-BUS bestimmt.
Hardware 120 RELBUS-Board Übersicht Das RELBUS-Board besitzt zwei UNIT-BUS Anschlüsse die untereinander 1:1 verbunden sind. Somit kann einer der Anschlüsse z.B. mit dem Applicationboard bzw. Mainboard verbunden werden, und der zweite Anschluss kann als Verteiler dienen, an den man ein weiteres UNIT-BUS Modul ansteckt. Die Leitungslänge darf 2m nicht überschreiten, da es sonst zu Kommunikationsfehlern kommt. Werden dennoch längere Leitungen benötigt, so ist es hilfreiche den I2C-Leistungstreiber Best.-Nr.
121 C-Control Pro IDE Beispiel Verbraucheranschluss an Ausgang Q1 Hinweis: Passendes Anschlusskabel bereits konfektioniert (Länge: 35cm) Best.-Nr. 198876. Tipp: Die Pfostensteckverbinder, lassen sich leicht mit einen kleinen Schraubstock zusammenpressen. Das Kabel auf die passende Länge kürzen und im Stecker gerade ausrichten (Führungsrillen im Stecker), und dann zwischen den beiden Schraubstock-Backen einspannen, und diesen vorsichtig zudrehen bis die Stecker Verriegelung einrastet.
Hardware J3 x x x x x=Jumper gesteckt / - = J2 x x x x nicht gesteckt J1 x x x x 122 Adresse Hex 27 Hex 26 Hex 25 Hex 24 Hex 23 Hex 22 Hex 21 Hex 20 CAD Info: Das REL4-Board kann mittels Phönix Contact Hutschienenträger der Serie „UMK“ auf einer Normschiene montiert werden. Achtung: Die Ausgänge sind nicht kurzschlussfest und werden bei einem Kurzschluss gegen Masse zerstört! Technische Daten: Abmessung 42mm x 72mm x 22mm (LxBxH) Pfosten-Stecker Raster 2.
123 C-Control Pro IDE Ausgang Last max je Ausgang.
Hardware 2.2.10.
125 C-Control Pro IDE 2.2.11 UNIT-BUS Ext-Board Das C-Control PRO AVR32Bit UNIT-BUS Ext-Board (Conrad Best.-Nr.: 192673) ist zur Erweiterung des Funktionsumfanges der C-Control PRO AVR32Bit Produkte bestimmt. Das Produkt ist als offene Lochraster Experimentierleiterplatte mit einen Raster von 2.54mm ausgeführt. Sie ist mit zwei 6poligen Pfosten-Steckverbinder bestückt und nur für den C-Control UNIT-BUS bestimmt. Die Platine dient zum Aufbau eigener Schaltungen.
Hardware 126 Passendes Anschlusskabel bereits konfektioniert (Länge: 35cm): Best.-Nr. 198876 Verwenden Sie um ein sauberes Signal zu erhalten, bei langen Leitungslängen und hohen Leitungskapazitäten den I2C-Leitungstreiber Best.-Nr. 198280 Tipp: Die Pfostensteckverbinder, lassen sich leicht mit einen kleinen Schraubstock zusammenpressen.
127 C-Control Pro IDE CAD Technische Daten: Abmessung 110mm x 90mm x 13mm (LxBxH) Pfosten-Stecker Raster 2.54 mm Lochraster der Platine 2.
Hardware 128 2.2.12 USB-Board Das C-Control PRO AVR32Bit USB-Board (Conrad Best.-Nr.: 192688) ist zur Erweiterung des Funktionsumfanges der C-Control PRO AVR32Bit Produkte bestimmt. Das Produkt ist als offene Leiterplatte ausgeführt. Sie ist mit einem USB-Steckverbinder Type B und einer 3 polige Stiftleiste (Rastermaß: 2.54mm) zum Anschluss an einer 3.3V UART-Schnittstellen der C-Control PRO AVR32Bit ausgestattet.
129 C-Control Pro IDE CAD Technische Daten: Abmessung 23mm x 25mm x 12mm (LxBxH) UART PIN Raster 2.54 mm USB Type-B Betriebsspannung Versorgung über USB-Anschluss UART Pegel 3.
Hardware 2.2.12.
131 2.3 C-Control Pro IDE LCD Matrix CHARACTER MODULE FONT TABLE (Standard font) Character modules with built in controllers and Character Generator (CG) ROM & RAM will display 96 ASCII and special characters in a dot matrix format. Then first 16 locations are occupied by the character generator RAM. These locations can be loaded with the user designed symbols and then displayed along with the characters stored in the CG ROM.
Kapitel 3
133 3 C-Control Pro IDE IDE Die C-Control Pro Benutzeroberfläche (IDE) besteht aus folgenden Hauptelementen: Sidebar für Projekt Datei-Mehrere Dateien können hier zu einem Projekt abgelegt werden. en Editor Fenster Es können beliebig viele Editor Fenster geöffnet werden, um Dateien zu editieren. Compiler Meldungen Fehlermeldungen und allgemeine Compilerinformationen werden hier angezeigt. C-Control Ausgaben Ausgabe von Debug Nachrichten der CompactC Programme.
IDE 3.1 134 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. 3.1.1 Projekterstellung Unter dem Menü Projekt kann man mit dem Aufruf von Neu die Projek t erstellen Dialogbox aufrufen.
135 3.1.2 C-Control Pro IDE Projekte Kompilieren Unter dem Menüpunkt Projekt kann mit Kompilieren (F9) das aktuelle Projekt vom Compiler ü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.
IDE 136 Neu Hinzufügen - Es wird eine neue Datei angelegt und gleichzeitig ein Editorfenster geöffnet. Hinzufügen - Eine bestehende Datei wird dem Projekt hinzugefügt. Umbenennen - Der Name des Projektes wird geändert (Dies ist nicht unbedingt der Name der Projektdatei). Kompilieren - Der Compiler wird für das Projekt gestartet. Optionen - Die Projektoptionen können geändert werden.
137 3.1.4 C-Control Pro IDE Projektoptionen 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 Projektes erinnern zu können. In "CPU" legt man die Zielplattform des Projekts fest. Bibliothek Konfigurieren ruft die Bibliotheksverwaltung auf.
IDE 138 Debug Code erzeugen Erzeugt Debugcode. Wird mit Debug Code kompiliert, wird der Bytecode geringfügig länger. Pro Zeile im Quelltext die ausführbare Anweisungen enthält, wird der Bytecode um ein Byte größer. Map Datei erzeugen Erzeugt eine Map Datei, in der Adressen und Länge von Variablen geschrieben werden. Array Index Grenzen prüfen Es wird Code eingefügt, der bei Array Zugriff den Index prüft. Nur bei Tests verwenden, da die Laufzeit erhöht wird.
139 C-Control Pro IDE Es werden nur die Dateien zur Kompilierung hinzugezogen, deren CheckBox auch selektiert wurde. Die Liste kann mit Hilfe des Pfad Texteingabefeldes "Bibliotheksname" und den Buttons im Dialog geändert werden: Einfügen - Der Pfad wird zur Liste hinzugefügt. Ersetzen - Der selektierte Eintrag in der Liste wird durch den Pfadnamen ersetzt. Löschen - Der selektierte Listeneintrag wird gelöscht.
IDE 3.1.7 140 Todo Liste Im Projekt Menü kann eine einfache Todo Liste aufgerufen werden. Der Inhalt wird zusammen mit dem Projekt gespeichert. 3.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.
141 C-Control Pro IDE Ein Klick auf den Bereich links neben den Textanfang setzt dort einen Haltepunkt (Breakpoint). Dazu muss vorher der Quelltext fehlerfrei mit "Debug Info" kompiliert worden sein, und in der entsprechenden Zeile tatsächlich ausführbarer Programmtext stehen (z.B. keine Kommentarzeile o. ä.). Funktionsübersicht Auf der linken Seite findet man eine Übersicht aller definierten syntaktisch korrekten Funktionen. Die Funktionsnamen samt Parameter werden dort dargestellt.
IDE 142 Code-Falten Um im Editor eine bessere Übersicht zu behalten, kann der Quelltext gefaltet werden. Sobald der im Editor enthaltene syntaktische Analyzer eine definierte Funktion erkennt, werden auf der linken Seite der Bereich der Funktion durch Balken signalisiert. Ein Klick auf das Minuszeichen im quadratischen Kästchen, und von der Funktion ist nur noch die erste Zeile zu sehen. Ein weiterer Klick auf das Pluszeichen, und der Quelltext entfaltet sich wieder.
143 C-Control Pro IDE Parameter Eingabehilfe Nach einer erfolgreichen Kompilierung werden auch die Parameter einer Funktion analysiert. Tippt man einen bekannten Funktionsnamen und Klammer auf "(", so wird in gelb die erwarteten Typen der Funktionsparameter angezeigt. 3.2.1 Editorfunktionen Unter dem Menüpunkt Bearbeiten sind die wichtigsten Editorfunktionen zu finden: Rückgängig (Ctrl-Z) - führt eine Undo Operation aus.
IDE 144 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 Teilzeichenketten. reguläre Ausdrücke - aktiviert die Eingabe von regulären Ausdrücken in der Suchmaske. Nachfrage bei Ersetzen - vor dem Ersetzen wird beim Benutzer nachgefragt.
145 C-Control Pro IDE Drucken: Druckvorschau: Druckereinstellung: Seiteneinstellung: 3.2.
IDE End Shift + Left Shift + Right Shift + Up Shift + Down Shift + Ctrl + Left Shift + Ctrl + Right Shift + PgUp Shift + PgDn Shift + Ctrl + PgUp Shift + Ctrl + PgDn Shift + Ctrl + Home Shift + Ctrl + End Shift + Home Shift + End Alt + Shift + Left Alt + Shift + Right Alt + Shift + Up Alt + Shift + Down Alt + Shift + Ctrl + Left Alt + Shift + Ctrl + Right Alt + Shift + PgUp Alt + Shift + PgDn Alt + Shift + Ctrl + PgUp Alt + Shift + Ctrl + Alt + PgDn Alt + Shift + Ctrl + Home Alt + Shift + Ctrl + End Alt + S
147 C-Control Pro IDE Ctrl + O + C Ctrl + K + B Ctrl + K + K Esc Ctrl + digit (0-9) Shift + Ctrl + (0-9) Ctrl + Space 3.2.4 Column selection mode Marks the beginning of a block Marks the end of a block Reset selection Go to Bookmark digit (0-9) Set Bookmark digit (0-9) Auto completion popup Reguläre Ausdrücke Die Suchfunktion im Editor unterstützt reguläre Ausdrücke. Damit können Zeichenketten sehr flexibel gesucht oder ersetzt werden. ^ $ .
IDE 3.3 148 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. 3.3.1 Interface selektieren In der Toolbar lässt sich in einem Drop-down Menü direkt das Interface auswählen, mit der das CControl Pro Modul angesprochen werden kann.
149 3.3.2 C-Control Pro IDE Programm starten Programmübertragung Ist ein Projekt fehlerfrei übersetzt worden, so muss der Bytecode erst auf das C-Control Pro Modul übertragen werden, bevor er ausgeführt werden kann. Dies geschieht mit dem Befehl Übertragen (Shift-F9) aus dem Menü C-Control. Nach einem Update der IDE, wird bei Bedarf, nicht nur der Bytecode zum Modul übertragen, sondern gleichzeitig wird die neueste Version des Interpreters mit zum C-Control Modul geschickt.
IDE 150 Es können die gängigen Netzwerkeinstellungen eingegeben werden, der UDP-Port des Bootloaders und die MAC Adresse. Um Verbindungsprobleme zu vermeiden sollte vor dem Einschalten der Ethernet Unterstützung die MAC-Adresse auf einen neuen Wert eingestellt werden. Zu diesem Zweck wird für jede C-Control Pro AVR32Bit eine eigene MAC-Adresse erzeugt und auf einem Aufkleber mitgeliefert. Siehe Software Installation. Optionen Ethernet Unterstützung - Schaltet Ethernet Support ein.
151 3.3.4 C-Control Pro IDE Ethernet durchsuchen Wenn Ethernet Unterstützung aktiviert ist, dann ist das C-Control Pro AVR32Bit Modul auf dem lokalen Ethernet LAN sichtbar. Da die Suche per UDP-Broadcast durchgeführt wird, ist sie auf das lokale Subnetz beschränkt, da Router meist keine Broadcasts weiterleiten. Der Default UDP Port für den Ethernet Zugriff ist 50234. Dies darf durch eine lokale Firewall auf dem PC nicht eingeschränkt werden.
IDE 3.3.5 152 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.
153 3.3.7 C-Control Pro IDE 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. 3.4 Debugger Um den Debugger zu aktivieren, muss das Projekt erst fehlerfrei mit Debug Code kompiliert und zum Modul übertragen worden sein. Die Datei mit dem Debug Code (*.
IDE 154 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 blaue Balken ist sichtbar), so kann man das Programm im Einzelschritt (Singlestep) ausführen lassen.
155 C-Control Pro IDE Die Anzahl der Breakpoints ist auf 16 begrenzt, weil diese Information beim Lauf des Bytecode Interpreters im RAM mitgeführt wird. Andere Debugger setzen Haltepunkte direkt in den Programmcode. Dies ist hier nicht erwünscht, da es die Lebenszeit des Flashspeichers (ca. 10000 Schreibzugriffe) drastisch reduzieren würde. 3.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.
IDE 156 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). Mit Variable Ändern kann man den Texteintrag in der Liste ändern, und mit Variable entfernen, die Variable aus der Liste entfernen.
157 3.4.3 C-Control Pro IDE Array Fenster Um die Inhalte von Array Variablen zu betrachten ist es möglich ein Fenster mit dem Inhalt des Arrays aufzurufen. Dafür wird der Cursor auf der Variablen positioniert, und mit Rechtsklick Array anzeigen angewählt. 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.
IDE 158 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 aktualisiert, so können Verzögerungen auftreten, da die Daten immer vom Modul geladen werden müssen. Es gibt daher drei Arbeitsmodi: Auto Aktualisieren bei Haltepunkt Aktualisieren manuell Aktualisieren 3.
159 C-Control Pro IDE Empfangene Zeichen werden direkt im Terminalfenster dargestellt. Man kann Zeichen auf zwei verschiedene Arten senden. Zum einen kann man in das Fenster klicken und die Zeichen direkt über die Tastatur eingeben, oder man schreibt die Zeichen in die ASCII Eingabezeile und drückt den Senden Knopf. Die ASCII Zeichen können auch als Integerzahlen in die Integer Eingabezeile. Selektiert man Zeilenende, wird immer ein Carriage Return (13) mitgeschickt.
IDE 160 In dem Dialog können die Fontattribute der Schrift, die Vordergrund und Hintergrundfarbe geändert werden. Mit Multiline border kann ein Rahmen um die entsprechenden Zeichen oder Wörter gesetzt werden. Auch ist es mit Capitalization Effect möglich auf die Groß-Kleinschreibung Einfluß zu nehmen.
161 C-Control Pro IDE Default, Line separator and Sub background werden nicht benutzt. Aufgrund technischer Einschränkungen, wird dieser Dialog immer auf englisch angezeigt! 3.5.2 Editoreinstellungen Auto indent mode - drückt man Enter wird der Cursor auf der nächsten Zeile bis zum Anfang der vorherigen Zeile eingerückt. Overwrite mode - ist diese Option an, ist Überschreiben als Standard eingestellt. Optimal fill - "Automatisches Einrücken" füllt zuerst mit Tabulatoren und den Rest mit Leerzeichen.
IDE 162 führt. Group Redo - eine Redo Operation wird nicht in kleinen Schritten, sondern in Blöcken durchgeführt. Keep caret in text - man kann den Cursor hinter das Dateiende positionieren. Keep trailing blanks - ist dies aktiviert, werden Leerzeichen am Ende der Zeile nicht gelöscht. Overwrite blocks - ist ein Block selektiert, so ersetzt die nächste Eingabe den Block. Disable Selection - Text kann nicht selektiert werden.
163 C-Control Pro IDE Bei Block indent wird die Anzahl der Leerzeichen eingetragen, mit der ein selektierter Block mit der Tabulator Taste eingerückt bzw. ausgerückt wird. Das Eingabefeld Tab stops bestimmt wie viele Zeichen ein Tabulator breit ist. Aufgrund technischer Einschränkungen, wird dieser Dialog immer auf englisch angezeigt! 3.5.3 IDE Einstellungen Man kann einzelne Aspekte der IDE konfigurieren.
IDE 164 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. Bei Programmstart übertragen - Übertragt das Programm automatisch wenn Programmstart in der IDE gedrückt wird. RP6 USB Interface AutoConnect - Unterstützt Hardware Interface des RP6 Roboters Zusätzlich lassen sich hier auch die Listen der "zuletzt geöffneten Projekte", sowie der "zuletzt geöffneten Dateien" löschen. 3.5.3.
165 C-Control Pro IDE und bekannten Bibliotheksfunktionen die Groß-Kleinschreibung korrigiert automatische Korrektur vor Kompilierung - Bei dem Starten des Compilerlaufes werden bei allen Befehlswörtern und bekannten Bibliotheksfunktionen die Groß-Kleinschreibung korrigiert Der Knopf Rechtschreibung zeigt den Dialog zur Einstellung der Rechtschreibprüfung. 3.5.3.
IDE 166 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. 3.5.3.3 Compilervoreinstellung In der Compilervoreinstellung können die Standardwerte konfiguriert werden, die beim Erzeugen eines neues Projektes gespeichert werden. Die Voreinstellung ist unter Compiler im Menü Optionen zu erreichen.
167 3.5.3.4 C-Control Pro IDE Terminal Hier lassen sich die seriellen Parameter des eingebauten Terminalprogramms einstellen. Bei Port kann man den entsprechenden seriellen COM Port aussuchen. Weiter lassen sich die gängigen Baudraten, die Anzahl der Daten- und Stop Bits und die Flußkontrolle einstellen. 3.5.3.5 Werkzeuge In den Werkzeug Einstellungen lassen sich die Einträge einfügen, löschen und verändern, mit denen man beliebige Programm aus der IDE schnell und einfach starten kann.
IDE 168 Für jedes Programm das hinzugefügt wird, kann man einen eigenen Namen, den Ausführungspfad zur Datei, sowie die zu übergebenden Parameter einstellen. 3.6 Fenster Sind im Editorbereich mehrere Fenster geöffnet, so kann man über Kommandos im Fenster Menü, die Editorfenster automatisch anordnen lassen. Überlappend - die Fenster werden übereinander angeordnet, jedes Fenster ist dabei etwas weiter nach unten rechts verschoben als das vorhergehende.
169 3.7 C-Control Pro IDE Hilfe Unter dem Menüpunkt Hilfe kann man sich mit Inhalt (Taste F1) die Hilfedatei aufrufen. Der Menüpunkt Programmversion öffnet folgendes "Versionsinformations" 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.
IDE Der Befehl Kontexthilfe steht auch bei einem Rechtsklick im Editorfenster zur Verfügung.
Kapitel 4
Compiler 4 Compiler 4.1 Allgemeine Features 172 Dieser Bereich gibt Auskunft über Compiler Eigenschaften und Features die unabhängig von der benutzten Programmiersprache sind. 4.1.1 Preprozessor Der Gnu Generic Preprocessor, der hier zum Einsatz, kommt hat noch weitere Funktionen, die unter http://nothingisreal.com/gpp/gpp.html dokumentiert sind. Allerdings sind nur die hier beschriebenen Funktionen, auch im Zusammenspiel mit dem C-Control Pro Compiler, ausführlich getestet.
173 C-Control Pro IDE das symbol nicht definiert ist. Einfügen von Text #include pfad\dateiname Mit dieser Anweisung läßt sich eine Textdatei in den Quellcode einfügen. Aufgrund einer Limitierung des Preprozessors darf der Pfad in einer #include Anweisung keine Leerzeichen enthalten! 4.1.1.
Compiler 174 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); 4.1.2 // 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. Folgende Kommandos sind zulässig: #pragma Error "xyz..." #pragma Warning "xyz..." #pragma Message "xyz...
175 C-Control Pro IDE count i Gesamtlaenge: 4 bytes Funktion main() count n Gesamtlaenge: 4 bytes 2 2 4 0 2 2 2 0 Aus dieser Liste ist ersichtlich, daß keine globalen Variablen benutzt werden. Weiter existieren zwei Funktionen, "Pulse()" und "main()". Jede dieser Funktionen hat einen Speicherverbrauch von 4 Byte an lokalen Variablen. 4.2 CompactC Eine Möglichkeit den C-Control Pro Mega 32 oder Mega 128 zu programmieren ist in der Programmiersprache CompactC.
Compiler 176 Projekte Man kann ein Programm auf mehrere Dateien aufteilen, die in einem Projekt (siehe Projektverwaltung) zusammengefasst sind. Zusätzlich zu diesen Projektdateien kann man zu einem Projekt Bibliotheken hinzufügen, die Funktionen bereitstellen, die vom Programm genutzt werden. 4.2.2 Anweisungen Anweisung Eine Anweisung besteht aus mehreren reservierten Befehlswörtern, Bezeichnern und Operatoren, die mit einem Semikolon (';') am Ende abgeschlossen wird.
177 C-Control Pro IDE /* Ein mehrzeiliger Kommentar */ // Ein einzeiliger Kommentar Bezeichner Bezeichner sind die Namen von Funktionen oder Variablen.
Compiler 178 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. 4.2.3 Datentypen Werte haben immer einen bestimmten Datentyp. Die Integerwerte (ganzzahlige Werte) haben in CompactC einen 8, 16 oder 32 Bit breiten Datentyp, floating point Zahlen sind immer 4 byte lang.
179 C-Control Pro IDE a + 5.5 In diesem Fall wird a zuerst in den Datentyp float konvertiert und danach 5.5 addiert. Der Datentyp des Ergebnisses ist auch float. 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 ("signed") so ist auch das Ergebnis des Ausdrucks vorzeichenbehaftet. D.h., die Operation wird "signed" ausgeführt.
Compiler c=5; c='a'; a=0x3ff; x=0b1001; a=50000u; a=100ul; i=15; j=-22; // // // // // // // 180 Bei einfachen Anführungszeichen wird der ASCII Wert übernommen hexadezimalzahlen sind immer unsigned Binärzahl unsigned unsigned 32 Bit (dword) default ist immer signed signed Fließkommazahlen (Datentyp float) dürfen ein Dezimalpunkt und einen Exponenten beinhalten: float x,y; x=5.70; y=2.3e+2; x=-5.
181 C-Control Pro IDE Arrays dürfen in CompactC bis zu 16 Indizes (Dimensionen) haben. Der Maximalwert für einen Index ist 65535. Die Indizes der Arrays sind immer nullbasiert, d.h., jeder Index beginnt mit 0. Nur wenn die Compiler Option "Array Index Grenzen prüfen" gesetzt ist, findet während des Programmlaufs eine Überprüfung statt, ob die definierte Indexgrenze eines Arrays überschritten wurde.
Compiler 182 Es existiert kein expliziter "String" Datentyp. Ein String basiert auf einem Array vom Datentyp char. Man muss 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. Beispiel für eine Zeichenkette mit maximal 20 Zeichen: char str1[21]; Als Ausnahme darf man char Arrays Zeichenketten zuweisen.
183 C-Control Pro IDE int a,b; void func1(void) { int a,x,y; // globale b ist zugreifbar // globale a ist nicht zugreifbar da durch lokale a verdeckt // lokale x,y sind zugreifbar // u ist nicht zugreifbar da lokal zu Funktion main } void main(void) { int u; // globale a,b sind zugreifbar // lokale u ist zugreifbar // x,y nicht zugreifbar da lokal zu Funktion func1 } Globale Variablen haben einen definierten Speicherbereich, der während des gesamten Programmlaufs zur Verfügung steht.
Compiler 4.2.5 184 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.
185 4.2.5.3 C-Control Pro IDE & Und | Oder ^ exclusives Oder ~ Bitinvertierung 0x0f & 3 0xf0 & 0x0f 1|3 0xf0 | 0x0f 0xff ^ 0x0f 0xf0 ^ 0x0f ~0xff ~0xf0 3 0 3 0xff 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 4.2.5.
Compiler 4.2.5.6 < kleiner > größer <= kleiner gleich >= größer gleich == gleich != ungleich 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 186 1 0 0 0 1 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 4.2.
187 C-Control Pro IDE a = (i>5) ? i : 0; a= (i>b*2) ? i-5 : b+1; while(i> ((x>y) ? x : y) ) i++; 4.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.
Compiler } while(1); 4.2.6.3 188 // Endlosschleife for Eine for Schleife wird normalerweise benutzt, um eine bestimmte Anzahl von Schleifendurchläufen zu programmieren. for(Anweisung1; Ausdruck; Anweisung2) Anweisung3; Als erstes wird Anweisung1 ausgeführt, die normalerweise eine Initialisierung beinhaltet. Danach erfolgt die Auswertung des Ausdruck s. Ist der Ausdruck ungleich 0 wird Anweisung2 und Anweisung3 ausgeführt, und die Schleife wiederholt sich.
189 C-Control Pro IDE for(i=0;i<10;i++) { if(i==5) continue; } 4.2.6.4 goto Auch wenn man es innerhalb von strukturierten Programmiersprachen vermeiden sollte, so ist es möglich innerhalb einer Prozedur mit goto zu einem label zu springen: // for Schleife mit goto realisiert void main(void) { int a; a=0; label0: a++; if(a<10) goto label0; } 4.2.6.5 if ..
Compiler 190 if(x>y) { a=b*5; b--; } else { a=b*4; y++; } 4.2.6.6 switch Sollen in Abhängigkeit vom Wert eines Ausdrucks verschiedene Befehle ausgeführt werden, so ist eine switch Anweisung sehr elegant: switch( Ausdruck ) { case konstante_1: Anweisung_1; break; case konstante_2: Anweisung_2; break; . . case konstante_n: Anweisung_n; break; default: // default ist optional Anweisung_0; }; Der Wert von Ausdruck wird berechnet.
191 C-Control Pro IDE case 100&0xf: b=b/c; break; default: b=b+2; } Die Abarbeitung der switch Anweisung ist im Interpreter optimiert, da alle Werte in einer Sprungtabelle abgelegt werden. Daraus resultiert die Einschränkung das der berechnete Ausdruck immer als vorzeichenbehafteter 16 Bit Integer (-32768 .. 32667) ausgewertet wird. Ein "case > 32767" ist daher nicht sinnvoll. break Anweisung Ein break verläßt die switch Anweisung.
Compiler 192 x=a; } break Anweisung Wird innerhalb der Schleife ein break ausgeführt, so wird die Schleife verlassen, und die Programmausführung startet mit der nächsten Anweisung hinter der while Schleife. continue Anweisung Bei der Ausführung von continue innerhalb einer Schleife kommt es sofort zur erneuten Berechnung des Ausdruck s. In Abhängigkeit vom Ergebnis wird bei ungleich 0 die Schleife wiederholt. Ein Ergebnis von 0 bricht die Schleife ab.
193 C-Control Pro IDE mer 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.
Compiler 194 Referenzen Da es nicht möglich ist, Arrays als Parameter zu übergeben, kann man auf Arrays über Referenzen zugreifen.
195 C-Control Pro IDE Seit Version 2.0 der IDE kann man nun Funktionen mit einem String als Argument aufrufen. Die aufgerufene Funktion bekommt die Zeichenkette als Referenz übergeben. Da aber Referenzen im RAM stehen müssen, und vordefinierte Zeichenketten im Flashspeicher stehen, erzeugt der Compiler intern vor Aufruf der Funktion einen anonymen Speicherplatz auf dem Stack und kopiert die Daten aus dem Flash dorthin. int StringLength(char str[]) { ...
Compiler % - 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 Inkrement/Dekrement Operatoren ++ -- Post/Pre Inkrement Post/Pre Dekrement Logische Operatoren && || ! logisches Und logisches Oder logisches Nicht Bitoperatoren & | ^ ~ 4.2.8.
197 4.3 C-Control Pro IDE 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.
Compiler 198 Einfache Anweisung: a= 5 Eine Anweisung muss 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 platzieren. Das ":" (Doppelpunkt) Zeichen trennt dann die einzelnen Anweisungen. Aus Gründen der Lesbarkeit sollte von dieser Option aber nur selten Gebrauch gemacht werden.
199 C-Control Pro IDE repräsentiert wieder einen Wert. Hier ist der Wert 5. Weitere Beispiele: a - 3 b + f(5) 2 + 3 * 6 Nach "Punkt vor Strich" wird hier erst 3 mal 6 gerechnet und danach 2 addiert. Dieser Vorrang von Operatoren heißt bei Operatoren Präzedenz. Eine Aufstellung der Prioritäten findet sich in der Präzedenz Tabelle. Auch Vergleiche sind arithmetische Ausdrücke. Die Vergleichsoperatoren liefern einen Wahrheitswert von "1" oder "0" zurück, je nachdem, ob der Vergleich korrekt war.
Compiler Mega32) Single Ja ±1.175e-38 to ±3.402e38 200 32 Da der Interpreter sonst zu groß werden würde, sind die 32-Bit Integer Datentypen nicht auf dem Mega32 verfügbar. Strings Es existiert kein expliziter "String" Datentyp. Ein String basiert auf einem character array. Man muss 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.
201 C-Control Pro IDE Dim xyz As Single Integer Variablen lassen sich Zahlenwerte dezimal oder als Hexzahl zuweisen. Bei einer Hexzahl werden vor die Zahl die Buchstaben "&H" gesetzt. Zusätzlich ist es erlaubt, wie bei C Hexadezimalzahlen mit dem Prefix "0x" beginnen zu lassen. Binärzahlen können mit dem Prefix "0B" erzeugt werden. Bei Variablen mit vorzeichenbehaftetem Datentyp lassen sich negative Dezimalzahlen zuweisen, indem ein Minuszeichen vor die Zahl geschrieben wird.
Compiler 202 Array Variablen Wenn man hinter den Namen, bei der Variablendefinition in runden Klammern, einen Zahlenwert schreibt, so hat man ein Array definiert. Ein Array legt den Platz für die definierte Variable mehrfach im Speicher an. Bei der Beispieldefinition: Dim x(10) As Integer 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).
203 C-Control Pro IDE Seit Version 2.12 ist es möglich auf einzelne Einträge in flash Arrays zuzugreifen: Flash glob(10) = {1,2,3,4,5,6,7,8,9,10} As Byte Sub main() Dim a As Byte a= glob(2) End Sub Eine Begrenzung bleibt bestehen: Nur normale Arrays die im RAM liegen, können als Referenz einer Funktion übergeben werden. Dies ist mit Referenzen auf flash Arrays nicht möglich. Strings Es existiert kein expliziter "String" Datentyp. Ein String basiert auf einem Array vom Datentyp Char.
Compiler 204 single_str="A String" ' kopiert single_str in den zweiten String von str_array Str_StrCopy(str_array,single_str,40) Dies funktioniert, da mit einem Abstand von 40 Zeichen hinter dem ersten String, in str_array der Platz für den zweiten String liegt. 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.
205 C-Control Pro IDE 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. 4.3.
Compiler 4.3.5.2 206 Bitoperatoren Bitoperatoren sind nur für Integer Datentypen erlaubt. Operator 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 All diese Operatoren arbeiten arithmetisch: Z.B. Not &H01 = &Hfe. Beide Werte werden in einem If Ausdruck zu wahr verarbeitet.
207 C-Control Pro IDE Operator variable++ variable-++variable --variable Erklärung Beispiel Ergebnis a++ a a-- a ++a a+1 --a a-1 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) Wert der Variablen um eins erniedrigt (Predekrement) Diese Operatoren sind normalerweise in Basic Dialekten nicht enthalten und kommen aus der Welt der C inspirierten Programmierspra
Compiler 208 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. Der ganze Vorgang wiederholt sich solange, bis der Ausdruck den Wert 0 annimmt.
209 C-Control Pro IDE Beispiele: Do While a<10 a=a+2 End While Do While a a=a*2 x=a End While Exit Anweisung Wird innerhalb der Schleife ein Exit ausgeführt, so wird die Schleife verlassen, und die Programmausführung startet mit der nächsten Anweisung hinter der While Schleife. Beispiel: Do While 1 ' Endlosschleife a=a+1 If a>10 Then Exit ' bricht Schleife ab End If End While 4.3.6.
Compiler 210 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. Exit Anweisung Eine Exit Anweisung verläßt die Schleife, und die Programmausführung startet mit der nächsten Anweisung hinter der For Schleife. Beispiel: For i=1 To 10 If i=6 Then Exit End If Next 4.3.6.
211 4.3.6.5 C-Control Pro IDE 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 212 Case konstanten_vergleich2 Anweisungen_2 . . Case konstanten_vergleich_x Anweisungen_x Else ' Else ist optional Anweisungen End Case Der Wert von Ausdruck wird berechnet. Danach springt die Programmausführung zum dem Konstantenvergleich, der als erster zu wahr ausgewertet wird, und führt das Programm dort fort. Kann kein Konstantenvergleich erfüllt werden, so wird das Select Case Konstrukt verlassen. Für den Konstantenvergleich können spezielle Vergleiche oder ganze Bereiche angeben werden.
213 C-Control Pro IDE Case 100 And &Hf b=b/c Case < 10 b=10 Case <= 10 b=11 Case 20 To 30 b=12 Case > 100 b=13 Case >= 100 b=14 Case <> 25 b=15 Else b=b+2 End Case In CompactC werden die Anweisungen hinter einer case Anweisung weitergeführt, bis ein break auftritt oder die switch Anweisung verlassen wird. Dies ist in BASIC anders: Hier bricht die Abarbeitung der Befehle hinter einem Case ab, wenn man bis zur nächsten Case Anweisung gelangt. 4.3.
Compiler Msg_WriteFloat(param2) End Sub 214 ' den zweiten Parameter ausgeben Wie lokale Variablen sind übergebene Parameter nur in der Funktion selber sichtbar. Um die Funktion func1 mit den Parametern aufzurufen, schreibt man beim Aufruf die Parameter in der gleichen Reihenfolge, wie sie bei func1 definiert wurden. Bekommt die Funktion keine Parameter, läßt man die Klammer leer. Sub main() Dim a As Word Dim f As Single func1(128,12.0) ' man kann numerische Konstanten übergeben ... a=100 f=12.
215 C-Control Pro IDE End While Return i End Sub Sub main() Dim Len As Integer Dim Text(15) As Char Text="hallo welt" Len=StringLength(Text) End Sub In main wird die Referenz von Text als Parameter an die Funktion StringLength übergeben. Ändert man in einer Funktion einen normalen Parameter, so ist die Änderung außerhalb dieser Funktion nicht sichtbar. Bei Referenzen ist dies anders.
Compiler Len=StringLength("hallo welt") End Sub 4.3.8 4.3.8.1 Tabellen 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 4.3.8.
217 C-Control Pro IDE End If Next Select Sub Word 4.3.8.3 Exit Integer Not Single Then Xor For Loop Or Static True ULong Goto Mod Return Step While UInteger Operator Präzedenz Rang 10 9 8 7 6 5 4 3 2 1 4.4 False Lab Opc SizeOf To Long Operator () - (negatives Vorzeichen) * / Mod + << >> = <> < <= > >= Not And Or Xor Assembler Mit IDE Version 2.0 wurde die Möglichkeit eröffnet auch Assembler Routinen in ein Projekt einzubinden. Als Assembler wir der Open Source Assembler AVRA eingesetzt.
Compiler 4.4.1 218 Ein Beispiel Am folgenden Beispiel (ist auch in den Demo Programmen enthalten) wird die Struktur von Assemblerroutinen erklärt. Dabei muss in dem Projekt der CompactC Source Code die Endung ".cc" die Assembler Sourcen die Endung ".asm". // CompactC Source void proc1 $asm("tag1")(void); int proc2 $asm("tag2")(int a, float b, byte c); int glob1; void main(void) { int a; proc1(); a= proc2(11, 2.
219 C-Control Pro IDE MOVW R26,R8 ; get RamTop from register 8,9 SUBI R26,LOW(glob1) ; subtract index from glob1 to get address SBCI R27,HIGH(glob1) LDI ST CLR ST R30,LOW(42) X+,R30 R30 X,R30 ; the high byte is zero ret .endif Im zweiten Teil des Assembler Sources werden die übergebenen Parameter "a" und "c" als integer addiert, und die Summe dann zurückgegeben. .
Compiler 220 ; global variable access example ; write 0042 to global variable glob1 MOVW R26,R8 ; get Ram Top from register 8,9 SUBI R26,LOW(glob1) ; subtract index from glob1 to get address SBCI R27,HIGH(glob1) Liegt dann die Adresse der globalen Variable im X Registerpaar (R26,R27), dann kann man den gewünschten Wert (in unserem Beispiel 42) dort hineinschreiben: LDI ST CLR ST R30,LOW(42) X+,R30 R30 X,R30 ; the high byte of 42 is zero Parameterübergabe Parameter werden auf dem Stack des Bytecode Inte
221 C-Control Pro IDE Rückgabe von Werten In der Routine proc2 wird auch die Summe zurückgegeben. Rückgabewerte werden auf den Parameter Stack (PSP) des Bytecode Interpreter geschrieben. Der Zeiger auf den PSP liegt im Registerpaar R6,R7. Man muss vorher allerdings eine 4 auf den PSP Zeiger addieren, dann kann man den Wert dort speichern. Im Gegensatz zur Parameterübergabe spielt der Typ des Rückgabeparameters keine Rolle. Auf dem Parameterstack sind alle Parameter immer 4 Bytes lang.
Compiler 222 chernden Register muss wiederhergestellt sein. Das Debugging funktioniert nur im Bytecode Interpreter, ein Debuggen in Assembler ist nicht möglich. Der Bytecode Interpreter hat eine feste Speichereinteilung. Auf keinen Fall Assembler Befehle für Datensegmente wie .byte, .db, .dw, .dseg oder ähnliches benutzen. Dies würde den Assembler bei Zugriff auf diese Datensegmente dazu bringen Speicher zu überschreiben, der vom Bytecode Interpreter genutzt wird.
223 C-Control Pro IDE DC2 018 012 00010010 Device Control 2 DC3 019 013 00010011 Device Control 3 DC4 020 014 00010100 Device Control 4 NAK 021 015 00010101 Negative Acknowledgment SYN 022 016 00010110 Synchronous Idle ETB 023 017 00010111 End of Transmission Block CAN 024 018 00011000 Cancel EM 025 019 00011001 End of Medium SUB 026 01A 00011010 Substitute ESC 027 01B 00011011 Escape FS 028 01C 00011100 File Separator GS 029 01D 00011101 Group Separator RS
Compiler R / 047 02F 00101111 Forward Slash 0 048 030 00110000 1 049 031 00110001 2 050 032 00110010 3 051 033 00110011 4 052 034 00110100 5 053 035 00110101 6 054 036 00110110 7 055 037 00110111 8 056 038 00111000 9 057 039 00111001 : 058 03A 00111010 Colon ; 059 03B 00111011 Semi-Colon < 060 03C 00111100 Less Than = 061 03D 00111101 Equal > 062 03E 00111110 Greater Than ? 063 03F 00111111 Question Mark @ 064 040 01000000 AT Symbol A
225 C-Control Pro IDE M 077 04D 01001101 N 078 04E 01001110 O 079 04F 01001111 P 080 050 01010000 Q 081 051 01010001 R 082 052 01010010 S 083 053 01010011 T 084 054 01010100 U 085 055 01010101 V 086 056 01010110 W 087 057 01010111 X 088 058 01011000 Y 089 059 01011001 Z 090 05A 01011010 [ 091 05B 01011011 Left Opening Bracket \ 092 05C 01011100 Back Slash ] 093 05D 01011101 Right Closing Bracket ^ 094 05E 01011110 Caret CHA DEC HEX
Compiler i 105 069 01101001 j 106 06A 01101010 k 107 06B 01101011 l 108 06C 01101100 m 109 06D 01101101 n 110 06E 01101110 o 111 06F 01101111 p 112 070 01110000 q 113 071 01110001 r 114 072 01110010 s 115 073 01110011 t 116 074 01110100 u 117 075 01110101 v 118 076 01110110 w 119 077 01110111 x 120 078 01111000 y 121 079 01111001 z 122 07A 01111010 { 123 07B 01111011 Left Opening Brace | 124 07C 01111100 Vertical Bar } 125 07
Kapitel 5
Bibliotheken 5 228 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.
229 C-Control Pro IDE Beim arbeiten mit Threads immer Thread_Delay und nicht AbsDelay benutzen. Wird trotzdem z.B. ein AbsDelay(1000) benutzt, so tritt folgender Effekt auf: Da der Thread erst nach 5000 Zyklen (Default Wert) zum nächsten Thread wechselt, würde der Thread 5000 * 1000ms (5000 Sek.) laufen, bis der nächste Thread anfangen könnte zu arbeiten. Parameter ms 5.2.
Bibliotheken 230 Sleep Modes SM2 0 0 0 0 1 1 1 1 SM1 0 0 1 1 0 0 1 1 SM0 0 1 0 1 0 1 0 1 5.3 Analog-Comparator 5.3.1 Mega Sleep Mode Idle ADC Noise Reduction Power-down Power-save Reserved Reserved Standby Extended Standby Der Analog-Comparator ermöglicht, zwei analoge Signale zu vergleichen. Das Ergebnis dieses Vergleichs wird entweder als „0" oder „1" zurückgegeben. Es können an den positiven und negativen Eingängen, Spannungen zwischen 0 und 5V verglichen werden. 5.3.1.
231 C-Control Pro IDE 5.3.1.2 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.
Bibliotheken 5.3.2 232 AVR32Bit Der Analog-Comparator ermöglicht, zwei analoge Signale zu vergleichen. Das Ergebnis dieses Vergleichs wird entweder als „0" oder „1" zurückgegeben. Es können an den positiven und negativen Eingängen, Spannungen zwischen 0 und 3.3V verglichen werden. 5.3.2.1 AC_Disable Analog Compare Funktionen Beispiel Syntax void AC_Disable(byte ctrl); Sub AC_Disable(ctrl As Byte); Beschreibung Schaltet den betreffenden Analog Comparator ab.
233 C-Control Pro IDE Tabelle Analog Comparator Pin Auswahl 5.3.2.
Bibliotheken 234 // AVR32Bit Analog Comparator Example void main(void) { AC_Enable(0, AC_AC0AP0, AC_AC0AN0); while(1) { if(AC_InpHigher(0)) Msg_WriteText("AC_AC0AP0 > AC_AC0AN0\r"); else Msg_WriteText("AC_AC0AP0 < AC_AC0AN0\r"); AbsDelay(500); // 500ms delay } } 5.4 Analog-Digital-Wandler 5.4.1 Mega 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.
235 C-Control Pro IDE 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, A
Bibliotheken 236 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. 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.4.1.
237 C-Control Pro IDE ADC_Read() ausgelesen. Das Messergebnis einer A/D Wandlung kann verfälscht werden, wenn während der Messung, auf dem gleichen Port wie der A/D Kanal, der Zustand von irgendeinem Portbit geändert wird, das auf Ausgang geschaltet ist. Parameter channel v_ref Portnummer (0..7) des ADC (Port A.0 bis A.7 bei Mega32, Port F.0 bis F.
Bibliotheken 238 Für den Standort von PAD3 siehe Jumper Application Board M32 oder M128. 5.4.1.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. Liegt das Messergebnis bereit, wird ein ADC_Interrupt ausgelöst. Parameter Keine 5.4.
239 5.4.2.1 C-Control Pro IDE ADC_Disable ADC Funktionen Syntax void ADC_Disable(void); Sub ADC_Disable() Beschreibung Die Funktion ADC_Disable schaltet den A/D-Wandler ab, um den Stromverbrauch zu reduzieren. Parameter Keine 5.4.2.
Bibliotheken mode speed ref input_cnt offset 240 Arbeitsmodi (siehe Tabelle) ADC Clock (32khz - 1.
241 C-Control Pro IDE gemessener A/D Wert 5.4.2.4 ADC_GetValues ADC Funktionen Syntax void ADC_GetValues(int values[], byte cnt); Sub ADC_GetValues(Byref values As Integer, cnt As Byte) Beschreibung Die Funktion liest die gemessenen Werte aus dem A/D-Wandler und kopiert sie in ein 16-Bit Array. Wird zu cnt der Wert ADC_GET_WAIT (80 Hex) oderiert, dann wird erst auf die Beendigung aller ADC Messungen gewartet, bevor die Werte kopiert werden.
Bibliotheken gain 242 GAIN Faktor GAIN Tabelle Definition Funktion ADC_SHG_1 ADC_SHG_2 ADC_SHG_4 ADC_SHG_8 Gain Faktor 1 Gain Faktor 2 Gain Faktor 4 Gain Faktor 8 Gain Faktor 16 Gain Faktor 32 Gain Faktor 64 ADC_SHG_16 ADC_SHG_32 ADC_SHG_64 5.4.2.6 ADC_Start ADC0ADC Funktionen Syntax void ADC_Start(void); Sub ADC_Start() Beschreibung Der eingebaute A/D Wandler beginnt Analog Daten zu konvertieren. Parameter Keine 5.4.2.
243 C-Control Pro IDE 2, 0); ADC_Start(); while(1) { ADC_GetValues(result, 2); // Werte auslesen Str_Printf(str, "adc2: %d\r", result[0]); Msg_WriteText(str); Str_Printf(str, "adc5: %d\r", result[1]); Msg_WriteText(str); AbsDelay(300); } } 5.5 CAN Bus Der CAN-Bus (engl. Controller Area Network) ist ein asynchrones, serielles Bussystem und gehört zu den Feldbussen. Er ist nach ISO 11898 international standardisiert und definiert die Layer 1 (physikalische Schicht) und 2 (Datensicherheitsschicht).
Bibliotheken 244 Sie können mehrere CAN-Bus Teilnehmer über die Pins CAN-H und CAN-L vernetzen. Der erste und der letzte Teilnehmer muss mit einen 120Ohm Widerstand abgeschlossen werden. Als Datenkabel sollte ein verdrilltes Kabel (engl. Twist and pair) zur Verwendung kommen. Für kürzere Strecken von wenigen Zentimetern bis max. 2 Meter, kann auch ein einfaches Parallelkabel (engl. Twin lead) verwendet werden.
245 C-Control Pro IDE MOb Nummer. Wenn man zwei MObs hat, die eine bestimmtes Paket empfangen würden, wird es immer von dem Message Object empfangen was die niedrigere MOb Nummer hat. CAN Protokoll Der CAN Bus Controller kann gleichzeitig normale Pakete (CAN 2.0A) und erweiterte Pakete (CAN 2.0B) verarbeiten. CAN Bus Identifier werden als 32-Bit dword (ULong) übergeben. Je nach Typ der Pakete ist ein Identifier 11-Bit (V2.0 part A) oder 29-Bit lang (V2.0 part B).
Bibliotheken 246 CAN_SetMOb(3, 0x12345, 0x1fffffff, CAN_RECV|CAN_EXTID); 3. Auf MOb Nummer 3 werden CAN2.0A und CAN 2.0B Nachrichten empfangen, da das CAN_IGN_EXTID flag gesetzt ist. Durch die maskID von null, werden Nachrichten mit allen Identifiern empfangen. Wegen CAN_IGN_RTR werden normale und Trigger Pakete empfangen. CAN_SetMOb(3, 0x12345, 0, CAN_RECV|CAN_IGN_EXTID|CAN_IGN_RTR); 4. Auf MOb Nummer 2 werden CAN 2.
247 5.5.2 C-Control Pro IDE CAN_Exit CAN Bus Funktionen Syntax void CAN_Exit(void); Sub CAN_Exit() Beschreibung Die CAN Chipfunktionen werden ausgeschaltet. 5.5.3 CAN_GetInfo CAN Bus Funktionen Syntax byte CAN_GetInfo(byte infotype); Sub CAN_GetInfo(infotype As Byte) As Byte Beschreibung Gibt Informationen über die Anzahl der empfangenen CAN Nachrichten und CAN Fehler zurück.
Bibliotheken 5.5.4 248 CAN_Init CAN Bus Funktionen Syntax void CAN_Init(byte speed, byte fifo_len, byte fifo_addr[]); Sub CAN_Init(speed As Byte, fifo_len As Byte, ByRef fifo_addr As Byte); Beschreibung Initialisiert die CAN Funktionen. Bei der Initialisierung wird vom Benutzer ein RAM Puffer für den Empfang von CAN Nachrichten zur Verfügung gestellt, in dem fifo_len Nachrichten gespeichert werden können. Für die Größe des RAM Bereiches gibt es ein #define CAN_BUF.
249 5.5.5 C-Control Pro IDE CAN_Receive CAN Bus Funktionen Syntax byte CAN_Receive(byte data[]); Sub CAN_Receive(ByRef data As Byte) As Byte Beschreibung Wenn Nachrichten im Empfangsfifo sind, so wird der 14-Byte Datensatz in ein Array des Benutzers kopiert, welches auch eine Länge von 14-Byte haben muss. Ist bei der IDT in der empfangenen Nachricht Bit 31 gesetzt, so hatte das CAN Paket RTR gesetzt.
Bibliotheken data 5.5.7 250 Array in der die Sendedaten stehen CAN_SetChan (AVR32Bit) CAN Bus Funktionen Syntax void CAN_SetChan(byte chan); Sub CAN_SetChan(chan As Byte) Beschreibung Selektiert einen CAN Kanal (CAN0 oder CAN1) für den weiteren Zugriff. Der C-Control Pro Mega128 CAN hat nur einen CAN Kanal. Parameter chan CAN Bus Kanal (0 - 1) 5.5.
251 C-Control Pro IDE Wert (Hex) 01 02 04 08 10 20 40 5.6 Definition CAN_RECV CAN_RTR CAN_EXTID CAN_REPL CAN_IGN_RTR CAN_IGN_EXTID CAN_SEND Bedeutung Nachrichtenempfang auf diesem MOb Das Remote Trigger Bit wird gesetzt Die CAN Nachricht hat eine 29-Bit ID (V2.0 part B) Automatic Reply wird initiiert In der ID Maske wird RTR nicht gesetzt In der ID Maske wird IDEMSK nicht gesetzt Auf diesem MOb soll gesendet werden Clock Mega Die interne Software Uhr wird durch den 10ms Interrupt von Timer2 getaktet.
Bibliotheken indx 252 Indexparameter des auszulesenden Wertes #define CLOCK_SEC CLOCK_MIN CLOCK_HOUR CLOCK_DAY CLOCK_MON CLOCK_YEAR Index 0 1 2 3 4 5 Bedeutung Sekunde Minute Stunde Tag Monat Jahr Rückgabewert angeforderter Zeitwert 5.6.2 Clock_SetDate Clock Funktionen Syntax void Clock_SetDate(byte day, byte mon, byte year); Sub Clock_SetDate(day As Byte, mon As Byte, year As Byte) Beschreibung Setzt das Datum der internen Software Uhr.
253 C-Control Pro IDE Clock. Der Korrekturfaktor bleibt beim AVR32Bit ungenutzt, man kann dort einen beliebigen Wert angeben. Parameter hour min sec corr 5.7 Stunde Minute Sekunde Korrekturfaktor 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 mit einzubinden.
Bibliotheken 254 drei Paritätsbits gesichert. Somit führen bereits zwei fehlerhaft empfangene Bits zu einem auf diese Weise nicht zu erkennenden Übertragungsfehler. Bei höheren Anforderungen 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 DCF77-Zeitinformation und Vergleich der Daten.
255 C-Control Pro IDE wird die RTC mit den aktuellen Daten aktualisiert. Die RTC ist nicht batteriegepuffert, d.h., die Uhrzeit läuft ohne Spannungsversorgung des Controllers nicht weiter. 5.7.1 DCF_FRAME DCF Funktionen Syntax void DCF_FRAME(void); Sub DCF_FRAME() Beschreibung DCF_Mode auf 3 schalten ("Daten dekodieren und speichern, Paritätsprüfung"). Parameter Keine 5.7.2 DCF_INIT DCF Funktionen Syntax void DCF_INIT(void); Sub DCF_INIT() Beschreibung DCF_INIT bereitet den DCF-Betrieb vor.
Bibliotheken 5.7.3 256 DCF_PULS DCF Funktionen Syntax void DCF_PULS(void); Sub DCF_PULS() Beschreibung DCF_Mode auf 1 schalten ("Puls suchen"). Parameter Keine 5.7.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.7.
257 C-Control Pro IDE void DCF_SYNC(void); Sub DCF_SYNC() Beschreibung DCF_Mode auf 2 schalten ("Synchronisation auf Frameanfang"). Parameter Keine 5.8 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 muss.
Bibliotheken 258 Beschreibung Die übergebene floating point Zahl wird im Ausgabenfenster mit Vorzeichen dargestellt. Parameter val float Wert 5.8.3 Msg_WriteHex Debug Message Funktionen Syntax 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.8.
259 C-Control Pro IDE val 16bit integer Wert 5.8.5 Msg_WriteText Debug Message Funktionen Syntax void Msg_WriteText(char text[]); Sub Msg_WriteText(ByRef text As Char) Beschreibung Es werden alle Zeichen des char array bis zur terminierenden Null ausgegeben. Parameter text Zeiger auf char array 5.8.
Bibliotheken 5.9.1 260 DirAcc_Read Direct Access Funktionen Syntax byte DirAcc_Read(byte register); Sub DirAcc_Read(register As Byte) As Byte Beschreibung Ein Byte Wert wird aus einem Register der Atmel CPU gelesen. Parameter register Registernummer (siehe Kapitel "Register Summary" im Atmel Reference Manual) Rückgabewert Wert des Registers 5.9.
261 C-Control Pro IDE 5.10.1 EEPROM_Read EEPROM Funktionen Syntax byte EEPROM_Read(word pos); Sub EEPROM_Read(pos As Word) As Byte Beschreibung Liest ein byte von Position pos aus dem EEPROM. Auf einem C-Control Pro Mega sind die ersten 32 byte für das C-Control Pro System 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.10.
Bibliotheken 262 5.10.3 EEPROM_ReadFloat EEPROM Funktionen Syntax float EEPROM_ReadFloat(word pos); Sub EEPROM_ReadFloat(pos As Word) As Single Beschreibung Liest einen Fließkommawert von Position pos aus dem EEPROM. Der Wert von pos ist eine Byte Position im EEPROM. Dies sollte bei word oder Fließkommazugriffen beachtet werden. Auf einem C-Control Pro Mega sind die ersten 32 byte für das C-Control Pro System reserviert.
263 C-Control Pro IDE 5.10.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. Der Wert von pos ist eine Byte Position im EEPROM. Dies sollte bei word oder Fließkommazugriffen beachtet werden. Auf einem C-Control Pro Mega sind die ersten 32 byte für das C-Control Pro System reserviert.
Bibliotheken 5.11 264 Ethernet (AVR32Bit) Die C-Control Pro AVR32Bit Unit unterstützt Ethernet Hardware und Protokolle nach IEEE-Norm 802.3. Der angeschlossene PHY arbeitet mit Auto-Negotiation und stellt sich bei einer Verbindung auf eine Geschwindigkeit von 100Mbit oder 10Mbit ein, je nachdem was die Gegenseite (z.B. der Switch) anbietet. Power-Over-Ethernet wird nicht unterstützt.
265 C-Control Pro IDE Man kann beim Stoppen des Programms mit dem Start/Stop Taster den lwIP TCP/IP-Stack in den Zustand bringen, das noch dynamischer Speicher der aktuellen Verbindung nicht frei gegeben wird. Dieser Speicher kann beim Neustart des Programms fehlen. Bei Problemen sollte im Zweifelsfall der Reset-Taster betätigt werden, um einen kompletten Neustart des Systems auszulösen. 5.11.2 TCP/IP Programmierung Eine TCP/IP Verbindung öffnen: Mit ETH_SetConnBuf einen Empfangspuffer anlegen.
Bibliotheken 266 byte tcp_buf[ETH_BUF(4000,6)], rbuf[1461]; void main(void) { word info[4], plen; char cmdtxt[50]; dword ip; byte id, state; ETH_SetConnBuf(tcp_buf, 4000, 6); id= ETH_ConnectTCP(IP_ADDR(192,168,0,1), 80); state= ES_CONNECTING; while(state == ES_CONNECTING) { state= ETH_GetStateTCP(id); } if(state == ES_CONNECTED) { cmdtxt= "GET / HTTP/1.
267 C-Control Pro IDE char text[10]; ETH_SetConnBuf(tcp_buf, 4000, 6); // 4000 byte Puffer und 6 Connections ETH_ListenTCP(23); // Listen Telnet port while(1) { ip= ETH_CheckReceiveBuf(info); if(ip) { plen= info[3]; // if(plen > 200) plen= 200; // Begrenze auf 200 bytes ETH_ReceiveData(rbuf, plen); txt= "Cmd:\n"; ETH_SendTCP(info[0], txt, 5); // Sende Cmd String } } } 5.11.3 UDP Programmierung UDP Pakete können direkt mit ETH_SendUDP versendet werden. Dabei beträgt die Maximalgröße 1460 Byte.
Bibliotheken void SendSyslogMsg(dword ip, byte level, char text[]) { byte buf[100]; Str_Printf(buf, "<%d>%s", 16*8+level, text); ETH_SendUDP(ip, 514, buf, Str_Len(buf)); } void main(void) { while(1) { SendSyslogMsg(IP_ADDR(192,168,0,1), 3, "test message"); AbsDelay(1000); } } 2.
269 C-Control Pro IDE Beschreibung Öffnet ein TCP/IP Verbindung zu einem Port. Mit dem Macro IP_ADDR() kann man sich den 32-Bit Wert der IP-Adresse aus der gewöhnten Notation berechnen lassen: Z.B. IP_ADDR(192,168,1,1). Bei der Rückkehr aus ETH_ConnectTCP ist die Verbindung nicht direkt aufgebaut. Man muss den Zustand der Verbindung mit ETH_GetStateTCP überwachen. Parameter ip port IP-Adresse UDP Port Rückgabewert sock_id (Socket Index), ff (Hex) im Fehlerfall 5.11.
Bibliotheken info[1] info[2] info[3] IP Port Absender Sockethandle Paketlänge 5.11.6 ETH_CloseListenTCP Ethernet Funktionen Syntax void ETH_CloseListenTCP(word handle); Sub ETH_CloseListenTCP(handle As Word) Beschreibung Schließt einen TCP listening Socket der mit ETH_ListenTCP angelegt wurde. Parameter handle ETH_ListenTCP handle 5.11.
271 C-Control Pro IDE Beschreibung Beendet eine aufgebaute Verbindung. Parameter sock_id Socket Index 5.11.9 ETH_GetIPInfo Ethernet Funktionen Syntax void ETH_GetIPInfo(byte info, byte data[]); Sub ETH_GetIPInfo(info As Byte, ByRef data As Byte) Beschreibung Gibt Ethernet Informationen in ein Byte Array zurück. Die Länge des Array muss so dimensioniert sein, das die Werte hineinpassen. Ist DHCP aktiviert und die IP-Adresse momentan 0.0.0.
Bibliotheken 272 Informiert über den Zustand der Verbindung. Da die Gegenseite jederzeit eine TCP/IP Verbindung abbrechen kann, sollte der Status in der Hauptschleife des Programms periodisch überwacht werden. Der Parameter sock_id wird entweder von ETH_ConnectTCP zurückgegeben, oder man bekommt ihn als info[0] Wert von ETH_CheckReceiveBuf.
273 C-Control Pro IDE 5.11.12 ETH_ListenUDP Ethernet Funktionen Syntax word ETH_ListenUDP(word port); Sub ETH_ListenUDP(port As Word) As Word Beschreibung Öffnet einen listening Socket auf einem UDP Port. Parameter port UDP Port Rückgabewert handle zum UDP listening Socket, 0 im Fehlerfall 5.11.
Bibliotheken 274 Beschreibung Sendet TCP Daten zu einer geöffneten TCP/IP Verbindung. Der Parameter sock_id wird entweder von ETH_ConnectTCP zurückgegeben, oder man bekommt ihn als info[0] Wert von ETH_CheckReceiveBuf. Parameter sock_id buf len socket index buffer address of TCP data length of TCP data Rückgabewert 0 wenn kein Fehler vorliegt 5.11.
275 C-Control Pro IDE Beschreibung Legt einen Ethernet Empfangspuffer an, in dem empfangene TCP/IP und UDP Pakete abgelegt werden. Parameter Adresse des Empfangspuffers buf size 5.12 Größe des Puffers 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.12.1 Mega 5.12.1.
Bibliotheken 276 Die Bitrate kann wie folgt berechnet werden: Bitrate = ((CPU_CLOCK / TARGET_I2C_SPEED) - 16) / 2 5.12.1.2 I2C_Read_ACK I2C Funktionen Syntax byte I2C_Read_ACK(void); Sub I2C_Read_ACK() As Byte Beschreibung Diese Funktion empfängt ein Byte und quittiert mit ACK. Danach kann mit I2C_Status, der Status der Schnittstelle abgefragt werden. Rückgabewert gelesener Wert vom I2C Bus 5.12.1.
277 C-Control Pro IDE Beschreibung Diese Funktion leitet die Kommunikation mit einer Startsequenz ein. Danach kann mit I2C_Status der Status der Schnittstelle abgefragt werden. Parameter Keine 5.12.1.5 I2C_Status I2C Funktionen Syntax byte I2C_Status(void); Sub I2C_Status() Beschreibung Mit I2C_Status kann der Status der Schnittstelle abgefragt werden. Die Bedeutung der Statusinformation ist in der I2C Status Tabelle dargestellt. Rückgabewert aktueller I2C Status 5.12.1.
Bibliotheken 5.12.1.7 278 I2C_Write I2C Funktionen Beispiel Syntax void I2C_Write(byte data); Sub I2C_Write(data As Byte) Beschreibung Diese Funktion sendet ein Byte. Danach kann mit I2C_Status, der Status der Schnittstelle abgefragt werden. Parameter data Datenbyte 5.12.1.
279 C-Control Pro IDE 40 48 50 58 5.12.1.
Bibliotheken 5.12.2.1 280 I2C_Probe I2C Funktionen Syntax byte I2C_Probe(byte addr); Sub I2C_Probe(addr As Byte) As Byte Beschreibung I2C_Probe versucht ein I2C Gerät anzusprechen und gibt als Ergebnis ob der Versuch erfolgreich war. Parameter addr Adresse des I2C Gerät Rückgabewert 1 = Gerät hat geantwortet 0 sonst 5.12.2.
281 C-Control Pro IDE mem_addr length Array in das die I2C Daten gelesen werden Anzahl der Daten die gelesen werden Rückgabewert -1 = Übertragungsfehler 0 = erfolgreich 5.12.2.3 I2C_SetSpeed I2C Funktionen Beispiel Syntax void I2C_SetSpeed(dword I2C_BR); Sub I2C_SetSpeed(I2C_BR As ULong) Beschreibung Diese Funktion setzt die Geschwindigkeit der I2C Schnittstelle Parameter I2C_BR gibt die Bitrate als 32-Bit Wert an.
Bibliotheken 282 Sub I2C_Write(addr As Byte, hdr As ULong, hdr_len As Byte, ByRef mem_addr As Byte, length As Word) As Byte Beschreibung Zuerst werden an das I2C device mit Adresse addr (I2C 7-bit Adresse) bis zu 4 Bytes header Daten geschrieben. Die Daten werden in hdr übergeben, die Anzahl der Bytes in hdr_len. Dabei darf hdr_len Null sein, d.h. es wird kein header übertragen. Es werden immer zuerst die höherwertigen Bytes des header übertragen.
283 5.13 C-Control Pro IDE 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.
Bibliotheken INT_2 INT_3 INT_4 INT_5 INT_6 INT_7 INT_ADC INT_100Hz INT_TIMER0 INT_TIMER1 INT_TIMER2 INT_TIMER3 INT_TIMER4 INT_TIMER5 INT_CAN externer Interrupt externer Interrupt externer Interrupt externer Interrupt externer Interrupt externer Interrupt ADC 100 Hz Interrupt Timer 0 Timer 1 Timer 2 Timer 3 Timer 4 Timer 5 CAN 284 2 3 4 5 6 7 Der betreffende Interrupt muss in einer Interrupt Service Routine (ISR) die entsprechenden Anweisungen erhalten, und der Interrupt muss freigegeben sein.
285 C-Control Pro IDE 0: 1: eine fallende Flanke löst einen Interrupt aus eine steigende Flanke löst einen Interrupt aus Mode Parameter für AVR32: 0: 1: 2: 3: ein low Pegel löst einen Interrupt aus ein high Pegel löst einen Interrupt aus eine fallende Flanke löst einen Interrupt aus eine steigende Flanke löst einen Interrupt aus Oderiert man zum Mode Parameter (nur AVR32) den Wert 40 (Hex) wird ein interner PullDown gesetzt, oderiert man 80 (Hex) wird ein interner PullUp aktiviert. 5.13.
Bibliotheken 286 irqnr spezifiziert den Typ des Interrupts (siehe Tabelle) Rückgabewert Gibt an, wie oft der Interrupt von der Hardware bis zum Aufruf von Irq_GetCount() ausgelöst wurde. Ein Wert größer 1 kann dann auftreten, wenn die Hardware schneller Interrupts generiert, als der Interpreter die Interruptroutine abarbeiten kann. 5.13.
287 C-Control Pro IDE // INT_100HZ (AVR32Bit) oder Timer 2 (MEGA) laufen normalerweise im 10ms // Takt. Im Beispiel wird daher die Variable cnt alle 10ms um 1 erhöht int cnt; void ISR(void) { cnt=cnt+1; #if AVR32 Irq_GetCount(INT_100HZ); #else Irq_GetCount(INT_TIM2COMP); #endif } void main(void) { cnt=0; #if AVR32 Irq_SetVect(INT_100HZ, ISR); #else Irq_SetVect(INT_TIM2COMP, ISR); #endif while(true); // Endlosschleife } 5.
Bibliotheken 288 Parameter Keine 5.14.2 Key_Scan Keyboard Funktionen Syntax word Key_Scan(void); Sub Key_Scan() As Word Beschreibung Key_Scan sucht sequentiell die Eingabepins der angeschlossenen Tastatur ab, und gibt das Ergebnis als Bitfeld zurück. Die "1" Bits repräsentieren die Tasten, die zum Zeitpunkt des Scans gedrückt wurden. Rückgabewert 16 Bits welche die einzelnen Eingabeleitungen der Tastatur repräsentieren 5.14.3 Key_TranslateKey Keyboard Funktionen (Bibliothek "Key_Lib .
289 5.15 C-Control Pro IDE 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.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. Direkte Interpreterfunktionen sind immer präsent, kosten aber Flashspeicher. 5.15.
Bibliotheken Parameter Keine 5.15.1.3 LCD_WriteCTRRegister LCD Funktionen (Bibliothek "LCD_Lib .cc") Syntax void LCD_WriteCTRRegister(byte cmd); Sub LCD_WriteCTRRegister(cmd As Byte) Beschreibung Schickt ein Kommando zum Display Controller. Parameter cmd Kommando in Byteform 5.15.1.4 LCD_WriteDataRegister LCD Funktionen (Bibliothek "LCD_Lib .cc") Syntax void LCD_WriteDataRegister(char x); Sub LCD_WriteDataRegister(x As Char) Beschreibung Schickt ein Datenbyte zum Display Controller.
291 C-Control Pro IDE Sub LCD_ClearLCD() Beschreibung Löscht das Display und schaltet den Cursor ein. Parameter Keine 5.15.3 LCD_CursorOff LCD Funktionen (Bibliothek "LCD_Lib .cc") Syntax void LCD_CursorOff(void); Sub LCD_CursorOff() Beschreibung Schaltet den Cursor des Display aus. Parameter Keine 5.15.4 LCD_CursorOn LCD Funktionen (Bibliothek "LCD_Lib .cc") Syntax void LCD_CursorOn(void); Sub LCD_CursorOn() Beschreibung Schaltet den Cursor des Display ein.
Bibliotheken 5.15.5 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. Parameter pos Cursorposition Wert von pos (Hex) Position im Display 00-07 40-47 0-7 in der 1. Zeile 0-7 in der 2. Zeile Für Display mit mehr als 2 Zeilen und bis zu 32 Zeichen pro Zeile gilt folgendes Schema: Wert von pos (Hex) Position im Display 00-1f 40-5f 20-3f 60-6f 0-31 in der 1. Zeile 0-31 in der 2.
293 C-Control Pro IDE Parameter Keine 5.15.7 LCD_Locate LCD Funktionen Syntax void LCD_Locate(int row, int column); Sub LCD_Locate(row As Integer, column As Integer) Beschreibung Setzt den Cursor des LCD Displays auf ein bestimmte Zeile und Spalte. Parameter row Zeile column Spalte 5.15.8 LCD_SetDispAddr (AVR32Bit) LCD Funktionen (Bibliothek "LCD_Lib .cc") Syntax void LCD_SetDispAddr(byte addr); Sub LCD_SetDispAddr(addr As Byte) Beschreibung Setzt eine neue Ziel-Adresse für die LCD Ausgaben.
Bibliotheken 5.15.9 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.15.10 LCD_WriteFloat LCD Funktionen Syntax void LCD_WriteFloat(float value, byte length); Sub LCD_WriteFloat(value As Single, length As Byte) Beschreibung Schreibt eine Fließkommazahl mit angegebener Länge auf das LCD Display.
295 C-Control Pro IDE Beschreibung LCD_WriteRegister zerlegt das Datenbyte y in zwei Nibble und schickt sie zum Display Controller. Parameter y Datenbyte x Kommandonibble 5.15.12 LCD_WriteText LCD Funktionen (Bibliothek "LCD_Lib .cc") Syntax void LCD_WriteText(char text[]); Sub LCD_WriteText(ByRef Text As Char) Beschreibung Es werden alle Zeichen des char array bis zur terminierenden Null ausgegeben. Parameter text char array 5.15.
Bibliotheken 5.16 296 Mathematik Mathematische Funktionen 5.16.1 Fließkomma Im folgenden sind die mathematischen Funktionen aufgeführt, die die C-Control Pro in einfacher Fließkommagenauigkeit (32 Bit) beherrscht. Diese Funktionen sind nicht in der Bibliothek des CControl Pro 32, da sonst zu wenig Flash Speicher für Benutzerprogramme bleiben würden. 5.16.1.1 FPU (AVR32Bit) Die AVR32Bit UNIT hat eine Floating Point Einheit (FPU) integriert, die Fließkomma Operationen stark beschleunigt.
297 C-Control Pro IDE 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/2 und +pi/2. Parameter val Wert (-1 bis 1) von dem die Funktion berechnet wird Rückgabewert Arcus Sinus des Eingabewertes. 5.16.1.4 atan Fließkomma Funktionen Syntax float atan(float val); Sub atan(val As Single) As Single Beschreibung Der Arcus Tangens wird berechnet.
Bibliotheken Beschreibung Der nächst größere Integerwert (ganzzahlige Teil) der Fließkommazahl val wird berechnet. Parameter val Wert von dem der Integerwert berechnet wird Rückgabewert Ergebnis der Funktion 5.16.1.6 cos Fließkomma Funktionen Syntax float cos(float val); Sub cos(val As Single) As Single Beschreibung Der Cosinus wird berechnet. Der Winkel wird in Radiant angegeben. Parameter val Wert von dem die Funktion berechnet wird Rückgabewert Cosinus des Eingabewertes (-1 bis 1) 5.16.1.
299 C-Control Pro IDE Rückgabewert Ergebnis der Funktion 5.16.1.8 fabs Fließkomma 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.16.1.9 floor Fließkomma Funktionen Syntax float floor(float val); Sub floor(val As Single) As Single Beschreibung Der nächst kleinere Integerwert (ganzzahlige Teil) der Fließkommazahl val wird berechnet.
Bibliotheken 5.16.1.10 ldexp Fließkomma 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.16.1.11 ln Fließkomma 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.16.1.
301 C-Control Pro IDE Sub log(val As Single) As Single Beschreibung Der Logarithmus zur Basis 10 wird berechnet. Parameter val Eingabewert Rückgabewert Ergebnis der Funktion 5.16.1.13 pow Fließkomma 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.16.1.
Bibliotheken 302 Rundungsfunktion. Die Fließkommazahl wird in eine Zahl ohne Nachkommastellen auf- oder abgerundet. Parameter val Eingabewert Rückgabewert Ergebnis der Funktion 5.16.1.15 sin Fließkomma Funktionen Syntax float sin(float val); Sub sin(val As Single) As Single Beschreibung Der Sinus wird berechnet. Der Winkel wird in Radiant angegeben. Parameter val Wert von dem die Funktion berechnet wird Rückgabewert Sinus des Eingabewertes (-1 bis 1) 5.16.1.
303 C-Control Pro IDE 5.16.1.17 tan Fließkomma Funktionen Syntax float tan(float val); Sub tan(val As Single) As Single Beschreibung Der Tangens wird berechnet. Der Winkel wird in Radiant angegeben. Parameter val Wert von dem die Funktion berechnet wird Rückgabewert Tangens des Eingabewertes. 5.16.2 Integer Mathematische Integer Funktionen. 5.16.2.
Bibliotheken 304 void srand(int seed); Sub srand(seed As Integer) Beschreibung Setzt einen Anfangswert für den Pseudo Zufallszahlengenerator. Mit einem gleichen Anfangswert können die gleichen Sequenzen an Zufallszahlen generiert werden. Parameter seed Anfangswert 5.17 OneWire 1-Wire bzw. One-Wire oder Eindraht-Bus ist eine serielle Schnittstelle, die mit einer Datenader auskommt, die sowohl als Stromversorgung als auch als Sende- und Empfangsleitung genutzt wird.
305 C-Control Pro IDE Sub Onewire_Reset(portbit As Byte) Beschreibung Es wird auf dem Eindraht-Bus ein Reset ausgelöst. Es wird die Bitnummer des Ports angegeben, über den die Eindraht-Kommunikation geführt wird. Parameter portbit Bitnummer des Ports (siehe Port Tabellen) 5.17.3 Onewire_Write 1-Wire Funktionen Syntax void Onewire_Write(byte data); Sub Onewire_Write(data As Byte) Beschreibung Es wird ein Byte auf den Eindraht-Bus geschrieben. Parameter data Datenbyte 5.17.
Bibliotheken 306 OneWire_Write(0xcc); // ROM überspringen Kommando OneWire_Write(0x44); // starte Temperatur Messung Kommando AbsDelay(3000); OneWire_Reset(7); // PortA.7 OneWire_Write(0xcc); // ROM überspringen OneWire_Write(0xbe); // lese scratch_pad Kommando for(i=0;i<9;i++) // komplettes scratchpad lesen { scratch_pad[i]= OneWire_Read(); Msg_WriteHex(scratch_pad[i]); } Msg_WriteChar('\r'); text= "Temperatur: "; Msg_WriteText(text); temp= scratch_pad[1]*256 + scratch_pad[0]; Msg_WriteFloat(temp* 0.
307 C-Control Pro IDE OneWire_Write(0xcc) OneWire_Write(0xbe) ' ROM überspringen Kommando ' lese scratch_pad Kommando For i = 0 To 9 ' komplettes scratchpad lesen scratch_pad(i)= OneWire_Read() Msg_WriteHex(scratch_pad(i)) Next Msg_WriteChar(13) Text = "Temperatur: " Msg_WriteText(Text) temp = scratch_pad(1) * 256 + scratch_pad(0) Msg_WriteFloat(temp * 0.5) Msg_WriteChar(99) Msg_WriteChar(13) Lab Ende End Sub 5.18 Port Atmel Mega Der Atmel Mega 32 hat 4 Ein-/Ausgabeports zu je 8 Bit.
Bibliotheken 308 bekannten Port_DataDir, Port_Toggle und Port_Write Funktionen weggelassen, da in der Praxis ein Schreiben der kompletten 32-Bit eines Ports sehr unhandlich ist. Es ist wichtig, vor der Programmierung die Pinzuordnung zu studieren, da wichtige Peripherie Funktionen auf bestimmten Ports liegen. Werden diese Ports umprogrammiert, kann es passieren, daß die Entwicklungsumgebung keine Programme mehr zur C-Control Pro übertragen kann.
309 C-Control Pro IDE Für exakte Werte der Drive Strength eines Portpin bitte im Atmel AT32UC3C Datenblatt das Kapitel "Electrical Characteristics" lesen. 5.18.2 Port_DataDir (Mega) Port Funktionen Beispiel Syntax void Port_DataDir(byte port, byte val); Sub Port_DataDir(port As Byte, val As Byte) Beschreibung Die Funktion Port_DataDir konfiguriert die Bits des Ports zur Ein- oder Ausgabe. Ist das Bit '1', dann wird der Pin der entsprechenden Bitposition auf Ausgang geschaltet.
Bibliotheken 310 portbit Bitnummer des Ports (siehe Port Tabellen) val 0=Eingang, 1= Ausgang 5.18.4 Port_Read (Mega) 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. Parameter port Portnummer (siehe Port Tabellen) Rückgabewert Wert des Ports 5.18.
311 C-Control Pro IDE len Port Zugriffe die 8 Bit transferieren. Wenn man den gewünschten Wert aller Bits eines Ports kennt, sollte man immer 8-Bit Zugriffe machen. Parameter portbit Bitnummer des Ports (siehe Port Tabellen) Rückgabewert Bitwert des Ports (0 oder 1) 5.18.6 Port_Toggle (Mega) Port Funktionen Syntax void Port_Toggle(byte port); Sub Port_Toggle(port As Byte) Beschreibung Invertiert die Bits auf dem spezifizierten Port.
Bibliotheken 312 Mega: Ist ein Pin auf Eingang geschaltet, so wird der interne Pullup Widerstand umgeschaltet. Mega: Port Bit Zugriffe sind immer deutlich langsamer als die normalen Port Zugriffe die alle 8 Bit verändern. Wenn man den gewünschten Wert aller Bits eines Ports kennt, sollte man immer 8-Bit Zugriffe machen. Parameter portbit Bitnummer des Ports (siehe Port Tabellen) 5.18.
313 C-Control Pro IDE Bei der C-Control Pro Mega Serie sind Port Bit Zugriffe sind immer deutlich langsamer als die normalen Port Zugriffe die 8 Bit transferieren. Wenn man den gewünschten Wert aller Bits eines Ports kennt, sollte man immer 8-Bit Zugriffe machen. Beim C-Control Pro AVR32Bit wird der interne PullUp über das Kommando Port_Attribute() geschaltet. In älteren IDE Versionen waren PORT_ON und PORT_OFF falsch definiert, das ist jetzt korrigiert.
Bibliotheken PortD.0 ... PortD.7 ab hier nur Mega128 PortE.0 ... PortE.7 PortF.0 ... PortF.7 PortG.0 ... PortG.4 24 ... 31 PD0 ... PD7 32 ... 39 40 ... 47 48 ... 52 PE0 ... PE7 PF0 ... PF7 PG0 ... PG4 314 Portbits Tabelle AVR32Bit Die Portbit Namen sind als #defines in der IntFunc_Lib.cc gespeichert. AVR32 Definition Portbit Portbit Name PA00 ... PA31 PB00 ... PB31 PC00 ... PC31 PD00 ... PD31 0 ... 31 32 ... 63 64 ... 95 96 ... 127 PA00 ... PA31 PB00 ... PB31 PC00 ... PC31 PD00 ...
315 C-Control Pro IDE P11 P12 P13 P14 P15 P16 P17 P18 P19 P20 P21 P22 P23 P24 P25 P26 P27 P28 P29 P30 P31 P32 P33 P34 P35 P36 P37 P38 P39 P40 P41 P42 P43 P44 P45 P46 P47 P48 P49 P50 P51 P52 P53 P54 P55 P56 P57 6 7 8 9 10 11 19 20 21 22 23 24 25 13 12 14 15 52 53 54 55 65 70 68 69 81 82 79 80 83 84 76 75 77 78 85 86 87 88 95 103 104 117 118 119 51 34 PA06 PA07 PA08 PA09 PA10 PA11 PA19 PA20 PA21 PA22 PA23 PA24 PA25 PA13 PA12 PA14 PA15 PB20 PB21 PB22 PB23 PC01 PC06 PC04 PC05 PC17 PC18 PC15 PC16 PC19 PC20 P
Bibliotheken 316 5.18.11 Port Beispiel (Mega) // Programm läßt abwechselnd die beiden LEDs auf dem // Application Board im Sekunden Rhythmus blinken // C-Control Pro Mega void main(void) { Port_DataDirBit(PORT_LED1,PORT_OUT); Port_DataDirBit(PORT_LED2,PORT_OUT); while(true) // Endlosschleife { Port_WriteBit(PORT_LED1,PORT_ON); Port_WriteBit(PORT_LED2,PORT_OFF); AbsDelay(1000); Port_WriteBit(PORT_LED1,PORT_OFF); Port_WriteBit(PORT_LED2,PORT_ON); AbsDelay(1000); } } 5.18.
317 C-Control Pro IDE // Beispiel mit Unit Name defines void main(void) { Port_Attribute(P48, PORT_ATTR_OUTPUT | PORT_ATTR_INIT_LOW); Port_Attribute(P41, PORT_ATTR_INPUT); while(true) // Endlosschleife { if(Port_ReadBit(P41)) { Port_WriteBit(P48, PORT_OFF); } else { Port_WriteBit(P48, PORT_ON); } } } // Beispiel mit AVR32 Portname defines void main(void) { Port_Attribute(PC23, PORT_ATTR_OUTPUT | PORT_ATTR_INIT_LOW); Port_Attribute(PC20, PORT_ATTR_INPUT); while(true) // Endlosschleife { if(Port_ReadBit(PC20
Bibliotheken 318 Die Startbits dienen dem Infrarotempfänger zur Synchronisation mit der Übertragung, sowie dazu, seine Verstärkungsregelung auf das Signal einzustellen. Das Togglebit ändert seinen Wert bei jedem Tastendruck. Dadurch kann man das lange Drücken einer Taste (und damit das wiederholte Senden eines Befehls) vom wiederholten Drücken derselben Taste unterscheiden. In den Adressbits ist das zu steuernde Gerät kodiert. Es können also 32 verschiedene Geräte gesteuert werden.
319 C-Control Pro IDE Anschluß an C-Control Pro (Empfänger) Pinbelegung des TSOP1736 IR-Em pfängers Technologischer Aufbau des Em pfängers © 2013 Conrad Electronic
Bibliotheken Externe Beschaltung des Em pfängers zum Anschluss an die C-Control Pro 5.19.1 RC5_Init RC5 Funktionen Syntax void RC5_Init(byte pin); Sub RC5_Init(pin As Byte) Beschreibung Es wird der Portpin definiert, auf dem RC5 Kommandos empfangen oder gesendet werden.
321 C-Control Pro IDE Parameter pin Bitnummer des Ports (siehe Port Tabellen) 5.19.2 RC5_Read RC5 Funktionen Syntax word RC5_Read(void); Sub RC5_Read() As Word Beschreibung Es werden auf dem mit RC5_Init() angegebenen Portpin empfangenen 14 Bit des RC5 Kommandos zurückgeliefert. Wird kein Signal empfangen, so wartet die Leseroutine bis zu 130ms, bis sie zurückkehrt.
Bibliotheken 5.20 322 RS232 Wenn man die "gepollten" seriellen Routinen benutzt, besteht, insbesondere bei hohen Baudraten, die Möglichkeit, das Zeichen nicht empfangen werden. Um dies zu verhindern bitte Serial_Init_IRQ() anstelle von Serial_Init() benutzen. Mega Die serielle Schnittstelle kann mit Geschwindigkeiten bis zu 230.4kbaud betrieben werden. Bei den Funktionen für die serielle Schnittstelle gibt der erste Parameter die Portnummer an (0 oder 1).
323 C-Control Pro IDE Tabelle divider Definitionen 14,7456 MHz (Mega32, Mega128): divider Definition Baudrate 3071 1535 767 383 191 95 63 47 31 8039 (Hex) 23 15 11 7 3 SR_BD300 SR_BD600 SR_BD1200 SR_BD2400 SR_BD4800 SR_BD9600 SR_BD14400 SR_BD19200 SR_BD28800 SR_BDMIDI SR_BD38400 SR_BD57600 SR_BD76800 SR_BD115200 SR_BD230400 300bps 600bps 1200bps 2400bps 4800bps 9600bps 14400bps 19200bps 28800bps 31250bps 38400bps 57600bps 76800bps 115200bps 230400bps Tabelle divider Definitionen 16 MHz (Mega128 CAN)
Bibliotheken 324 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.20.3 Serial_Init (Mega) Serielle Funktionen Beispiel Syntax void Serial_Init(byte serport, byte par, word divider); Sub Serial_Init(serport As Byte, par As Byte, divider As Word) Beschreibung Die serielle Schnittstelle wird initialisiert.
325 C-Control Pro IDE Tabelle par Definitionen: Definition Funktion SR_5BIT SR_6BIT SR_7BIT SR_8BIT 5 Bit 6 Bit 7 Bit 8 Bit Zeichenlänge Zeichenlänge Zeichenlänge 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 5.20.
Bibliotheken 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 326 5.20.
327 C-Control Pro IDE par div Schnittstellenparameter (siehe Tabelle) Baudrateninitialisierung mittels Teiler (siehe Tabelle) Tabelle par Definitionen: Definition Funktion SR_5BIT SR_6BIT SR_7BIT SR_8BIT 5 Bit Zeichenlänge 6 Bit Zeichenlänge 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 5.20.
Bibliotheken 328 Wenn im seriellen Interrupt Modus gearbeitet wird, immer Serial_ReadExt() benutzen. Serial_Read() funktioniert nur im normalen (polled) Modus. Parameter serport ramaddr recvlen sendlen par baud Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..
329 C-Control Pro IDE RS232_FIFO_RECV (0) RS232_FIFO_SEND (1) Zeichen im Empfangspuffer Zeichen in den Sendepuffer geschrieben Rückgabewert in Bytes 5.20.8 Serial_Read (Mega) 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.
Bibliotheken 330 Wenn im seriellen Interrupt Modus gearbeitet wird, immer Serial_ReadExt() benutzen. Serial_Read() funktioniert nur im normalen (polled) Modus. Parameter serport Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..) Rückgabewert empfangenes byte aus der seriellen Schnittstelle 256 (100 Hex) kein Zeichen in der Schnittstelle 5.20.
331 C-Control Pro IDE 5.20.12 Serial Beispiel // Stringausgabe auf der seriellen Schnittstelle void main(void) { int i; char str[10]; str="test"; i=0; // Init Schnittstelle mit 19200baud, 8 Bit, 1 Stop Bit, keine Parität Serial_Init(0,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD19200); while(str[i]) Serial_Write(0,str[i++]); // Gib den String aus } 5.20.
Bibliotheken 332 SD-Card Support bei C-Control Pro Mega 128 und Mega 128 CAN Das C-Control Pro SD-Card Interface (Conrad Artikel-Nr. 197220) dient zum Anbinden eines Mikrocontrollers wie z.B. die C-Control Mega 128 Unit (Conrad Artikel-Nr. 198219) an eine 3.3V SD-Karte. Die SD-Card Erweiterung besitzt einen Pegelkonverter, welcher die Signale bidirektional konvertiert und somit eine direkte Anbindung der SD-Karte an einen 5V Mikrocontroller ermöglicht.
333 C-Control Pro IDE WP (Schreibschutz): high = SD-Karte schreibgeschützt low = schreiben erlaubt CD (Kartenerkennung): high = keine SD-Karte erkannt low = SD-Karte erkannt SPI- Schnittstelle: MISO MOSI SCK SS Sonstige: LED -> Benutzer Led (5V Pegel) Resetbeschaltung: En1 = Reset der SD-Karte (low = running mode / high = reset) En2 = Versorgung SD-Kartenhalter (low = off / high = on) Das untere Diagramm zeigt die Ausführung des Hardwarereset.
Bibliotheken 334 Offene Dateien: Unbegrenzt, abhängig vom verfügbaren Speicher Dateigröße: Abhängig vom FAT Typ (bis zu 4G-1 bytes) Volume Größe: Abhängig vom FAT Typ (bis zu 2T bytes bei 512 bytes/Sektor) Cluster Größe: Abhängig vom FAT Typ (bis zu 64K bytes bei 512 bytes/Sektor) Sektorgröße: Abhängig vom FAT Typ (bis zu 4K bytes) Die SD card Funktionen unterstützen unter FAT keine langen Dateinamen (LFN).
335 C-Control Pro IDE Parameter fil_ramaddr Adresse des FILE Puffers Rückgabewert Erfolg der aufgerufenen SDC Funktion. Siehe SDC Rückgabe Werte. 5.21.4 SDC_FOpen SDCard Funktionen Syntax byte SDC_FOpen(byte fil_ramaddr[], char path[], byte mode); Sub SDC_FOpen(ByRef fil_ramaddr As Byte, ByRef path As Char, mode As Byte) As Byte; Beschreibung Öffnet eine Datei. Für jede geöffnete Datei muss eine FILE Puffer angelegt werden. Dafür definiert man ein Byte Array der Größe SDC_FILE_BUF.
Bibliotheken FA_CREATE_NEW 04 FA_CREATE_ALWAYS 08 FA_OPEN_ALWAYS 10 336 Legt Datei neu an. Wenn Datei schon existiert, dann Fehler Legt Datei neu an. Wenn Datei existiert, Dateilänge wird null Öffnet Datei. Wenn Datei nicht existiert, Datei wird erzeugt 5.21.
337 C-Control Pro IDE fil_ramaddr Adresse des FILE Puffers pos Lese- bzw. Schreibposition Rückgabewert Erfolg der aufgerufenen SDC Funktion. Siehe SDC Rückgabe Werte. 5.21.7 SDC_FSetDateTime SDCard Funktionen Syntax byte SDC_FSetDateTime(char path[], byte day, byte mon, word year, byte min, byte hours, byte sec); Sub SDC_FSetDateTime(ByRef path As Char,day As Byte,mon As Byte,year As Word, min As Byte, hours As Byte, sec As Byte) As Byte Beschreibung Setzt die Datums und Uhrzeit Attribute einer Datei.
Bibliotheken Parameter path filinfo Pfad zur Datei. Rückgabe Array. Rückgabewert Erfolg der aufgerufenen SDC Funktion. Siehe SDC Rückgabe Werte. Rückgabe Array: fileinfo[0] fileinfo[1] fileinfo[2] fileinfo[3] Dateilänge Datum Uhrzeit Dateiattribut Kodierung Datum: Bits 0:4 - Tag: 1...31 Bits 5:8 - Monat: 1...12 Bits 9:15 - Jahr beginnend mit1980: 0...127 Kodierung Zeit: Bits 0:4 - Sekunde/2: 0...29 Bits 5:10 - Minute: 0...59 Bits 11:15 - Stunde: 0...
339 C-Control Pro IDE Rückgabewert Erfolg der aufgerufenen SDC Funktion. Siehe SDC Rückgabe Werte. 5.21.10 SDC_FTruncate SDCard Funktionen Syntax byte SDC_FTruncate(byte fil_ramaddr[]); Sub SDC_FTruncate(ByRef fil_ramaddr As Byte) As Byte Beschreibung Löscht den Rest der Datei ab der aktuellen Schreibposition. Parameter fil_ramaddr Adresse des FILE Puffers Rückgabewert Erfolg der aufgerufenen SDC Funktion. Siehe SDC Rückgabe Werte. 5.21.
Bibliotheken 340 Erfolg der aufgerufenen SDC Funktion. Siehe SDC Rückgabe Werte. 5.21.12 SDC_GetFree SDCard Funktionen Syntax byte SDC_GetFree(char path[], dword kbfree[]); Sub SDC_GetFree(ByRef path As Char, ByRef kbfree As ULong) As Byte Beschreibung Gibt die Anzahl der freien Cluster auf der SD card zurück. Die Anzahl der freien Cluster wird in das erste Element des Array kbfree kopiert. Parameter path kbfree Pfad zum Wurzelverzeichnis (Root) der Disk.
341 C-Control Pro IDE Erfolg der aufgerufenen SDC Funktion. Siehe SDC Rückgabe Werte. 5.21.14 SDC_MkDir SDCard Funktionen Syntax byte SDC_MkDir(char path[]); Sub SDC_MkDir(ByRef path As Char) As Byte Beschreibung Erstellt ein Verzeichnis auf der SD card. Parameter path Pfad zum Verzeichnis. Rückgabewert Erfolg der aufgerufenen SDC Funktion. Siehe SDC Rückgabe Werte. 5.21.
Bibliotheken Erfolg der aufgerufenen SDC Funktion. Siehe SDC Rückgabe Werte. 5.21.16 SDC_Unlink SDCard Funktionen Syntax byte SDC_Unlink(char path[]); Sub SDC_Unlink(ByRef path As Char) As Byte Beschreibung Löscht eine Datei. Parameter path Pfad zur Datei. Rückgabewert Erfolg der aufgerufenen SDC Funktion. Siehe SDC Rückgabe Werte. 5.21.
343 C-Control Pro IDE Port_WriteBit(14,1); // EN2 (PB.6) +5V AbsDelay(50); // 50ms Pause // SD-Card Fat init SDC_Init (fat); // Neuen Dateiordner erstellen SDC_MkDir("0:/CC-PRO"); // Ist die Datei bereits vorhanden? // Wenn nicht dann wird die Datei angelegt res=SDC_FOpen(fil, "0:/CC-PRO/test.txt", FA_READ|FA_WRITE|FA_OPEN_EXISTING); if(res!=0)SDC_FOpen(fil, "0:/CC-PRO/test.txt", FA_WRITE|FA_CREATE_ALWAYS); // Schreibt einen Text in die Datei buf= "Hallo...
Bibliotheken 344 +5Volt ist die Versorgungsspannung des Servos, diese muss genügend Strom für das Servo liefern können. Die Masse des Servos muss gleich der Masse der Versorgungsspannung der C-Control Pro Unit sein. An der Impuls Leitung des Servos, wird das PWM Signal von der C-Control Pro in das Servo eingespeist. 5.22.
345 C-Control Pro IDE voll das byte Array global zu deklarieren. Für die Servoansteuerung wird ein 16-Bit Timer benötigt. Wird der Timer abgeschaltet oder für andere Timerfunktionen genutzt, so wird die Servoansteuerung nicht arbeiten.
Bibliotheken Servo_Set(5, 1600); // Servo Portbit 5 1600µs // Servo Portbit 7 1000µs 346 AbsDelay(5000); Servo_Set(7, 1000); AbsDelay(5000); Servo_Set(7, 0); Servo_Set(6, 0); Servo_Set(5, 0); // alle Servos aus } 5.23 SPI Das Serial Peripheral Interface (SPI) ist ein von Motorola entwickeltes Bus-System mit einem Standard für einen synchronen seriellen Datenbus, mit dem digitale Komponenten nach dem Master-Slave-Prinzip miteinander verbunden werden können. 5.23.
347 C-Control Pro IDE 5.23.1.2 SPI_Enable SPI Funktionen Syntax void SPI_Enable(byte ctrl); Sub SPI_Enable(ctrl As Byte) Beschreibung Die SPI Schnittstelle wird mit dem Wert von ctrl initialisiert (siehe SPCR Register in Atmel Mega Reference Manual).
Bibliotheken empfangenes byte aus der SPI Schnittstelle 5.23.1.4 SPI_ReadBuf SPI Funktionen Syntax void SPI_ReadBuf(byte buf[], word length); Sub SPI_ReadBuf(ByRef buf As Byte, length As Word) Beschreibung Ein Anzahl von Bytes wird von der SPI Schnittstelle in ein Array gelesen. Parameter buf length 5.23.1.
349 C-Control Pro IDE Beschreibung Ein Anzahl von Bytes wird auf die SPI Schnittstelle geschrieben. Parameter buf Zeiger auf byte array length Anzahl der auszugebenden bytes 5.23.2 AVR32Bit 5.23.2.1 SPI_Disable SPI Funktionen Syntax void SPI_Disable(byte chan); Sub SPI_Disable(chan As Byte) Beschreibung Die SPI Schnittstelle wird abgeschaltet und die dazugehörigen Ports können anders verwendet werden. Parameter chan 5.23.2.
Bibliotheken 350 Parameter SPI Kanal (0 - 1) SPI Takt (259000 - 66000000) Anzahl der Datenbits SPI Mode chan speed bits mode 5.23.2.3 SPI Mode CPOL NCPHA 0 1 2 3 0 0 1 1 1 0 1 0 SPI_Read SPI Funktionen Syntax word SPI_Read(); Sub SPI_Read() As Word Beschreibung Daten werden aus der SPI Schnittstelle gelesen. Rückgabewert empfangene Daten (4-16 Bit) aus der SPI Schnittstelle 5.23.2.
351 C-Control Pro IDE Parameter buf length 5.23.2.5 Zeiger auf byte array Anzahl der einzulesenden bytes SPI_SetChan SPI Funktionen Syntax void SPI_SetChan(byte chan); Sub SPI_SetChan(chan As Byte) Beschreibung Selektiert eine SPI Schnittstelle (SPI0 oder SPI1) für den weiteren Zugriff. Parameter chan SPI Kanal (0 - 1) 5.23.2.6 SPI_Write SPI Funktionen Syntax void SPI_Write(word data); Sub SPI_Write(data As Word) Beschreibung Daten werden auf die SPI Schnittstelle geschrieben.
Bibliotheken 352 Beschreibung Ein Anzahl von Bytes wird auf die SPI Schnittstelle geschrieben. Die Funktion arbeitet mit bis zu 8 Bit, ungeachtet ob die SPI Schnittstelle mit mehr Bit initialisiert wurde. Parameter buf length 5.24 Zeiger auf byte array Anzahl der auszugebenden bytes Strings Ein Teil dieser Stringroutinen sind im Interpreter implementiert, ein anderer Teil wird durch Hinzufügen der Bibliothek "String_Lib.cc" aufrufbar. Da die Funktionen in "String_Lib.
353 C-Control Pro IDE 5.24.2 Str_Copy String Funktionen Syntax void Str_Copy(char destination[], char source[], word offset); Sub Str_Copy(ByRef destination As Char, ByRef source As Char, offset As Word) Beschreibung Der Quellstring (source) wird auf den Zielstring (destination) kopiert. Bei der Kopieraktion wird aber in jedem Fall das String Terminierungszeichen der Quellzeichenkette mit kopiert.
Bibliotheken Sub Str_Isalnum(c As Char) As Byte 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.24.5 Str_Isalpha String Funktionen (Bibliothek "String_Lib .
355 C-Control Pro IDE 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.24.7 Str_Printf String Funktionen Beispiel Syntax void Str_Printf(char str[], char format[], ...); Sub Str_Printf(ByRef str As Char, ByRef format As Char, ...) Beschreibung Die Funktion erstellt eine formatierte Zeichenkette in den String str.
Bibliotheken 356 Parameter str Zeiger auf Zielzeichenkette format Zeiger auf Format String 5.24.8 Str_ReadFloat String Funktionen Syntax float Str_ReadFloat(char str[]); Sub Str_ReadFloat(ByRef str As Char) As Single Beschreibung Der Fließkommawert einer Zeichenkette auf die str zeigt, wird zurückgegeben. Nach der Zahl dürfen auch andere Zeichen in dem String stehen. Parameter str Zeiger auf String Rückgabewert Fließkommawert der Zeichenkette. 5.24.
357 C-Control Pro IDE Integerwert der Zeichenkette. 5.24.10 Str_ReadNum String Funktionen Syntax word Str_ReadNum(char str[], byte base); Sub Str_ReadNum(ByRef str As Char, base As Byte) As Word Beschreibung Der Wert einer Zeichenkette auf die str zeigt, wird zurückgegeben. Nach der Zahl dürfen auch andere Zeichen in dem String stehen. Der Parameter base ist die Basis der Zahl. Möchte man z.B. eine Hexzahl einlesen, ist als base 16 anzugeben, bei einer Binärzahl ist die Basis 2.
Bibliotheken 358 5.24.12 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. Mit Hilfe von offset kann man den Anfang eines Strings intakt lassen.
359 C-Control Pro IDE Hat offset den Wert STR_APPEND (ffff Hex), so wird als offset die Länge des Zielstrings angenommen. In diesem Fall wird die Integer Zahl an den Text String angehängt. 5.24.14 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.
Bibliotheken 360 // Ausgabe von Integer, Fließkomma, String und Hexzahl Str_Printf(str, "arg1: %8d arg2:%10.3f arg3:%20s arg4: %x\r", 1234, 2.34567, "hallo welt", 256); Msg_WriteText(str); Str_Printf(str, "arg1: %u arg2: %.2u\r", 65000, 0xff); Msg_WriteText(str); } ' Basic Sub main() Dim str(80) As Char Str_Printf(str, "arg1: %08d arg2:%10.3f arg3:%20s arg4: %x\r", 1234, 2.34567, "hallo welt", 256) Msg_WriteText(str) Str_Printf(str, "arg1: %u arg2: %.2u\r", 65000, &Hff) Msg_WriteText(str) End Sub 5.
361 C-Control Pro IDE Thread Konfiguration Vor IDE Version 2.12 die Konfiguration der Threads wurde in den Projekt Optionen eingestellt. Dies hat sich geändert. Jetzt wird die Konfiguration der threads mit Hilfe des neues "#thread" Befehls im Source Code vorgenommen: #thread thread_nummer, benutztes_ram, anzahl_zeit_zyklen Ein Thread bekommt für seine lokalen Variablen soviel Platz wie ihm mit #thread zugewiesen wird. Eine Ausnahme ist Thread "0" (das Hauptprogramm).
Bibliotheken 362 Deadlocks Begeben sich alle aktiven Threads in einen Wartezustand mit Thread_Wait, so gibt es keinen Thread mehr, der die anderen Threads aus dem wartenden Zustand befreien könnte. Diese Konstellationen sind bei der Programmierung zu vermeiden.
363 C-Control Pro IDE Sub Thread_Delay(delay As Word) 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.
Bibliotheken 364 5.25.4 Thread_Kill Thread Funktionen Syntax void Thread_Kill(byte thread); Sub Thread_Kill(thread As Byte) Beschreibung Beendet die Abarbeitung eines Threads. Wird als Threadnummer 0 übergeben, wird das Hauptprogramm und damit der ganze Interpreterlauf angehalten. Parameter thread (0-13) Nummer des Threads 5.25.
365 C-Control Pro IDE 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.25.7 Thread_Resume Thread Funktionen Syntax void Thread_Resume(byte thread); Sub Thread_Resume(thread As Byte) Beschreibung Hat ein Thread den Zustand "wartend", kann er mit der Resume Funktion wieder auf "inaktiv" gesetzt werden.
Bibliotheken 366 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 muss den gleichen Wert haben, der bei Thread_Wait() benutzt wurde. Parameter signal Wert des Signals 5.25.9 Thread_Start Thread Funktionen Beispiel Syntax void Thread_Start(byte thread, dword func); Sub Thread_Start(thread As Byte, func As ULong) Beschreibung Ein neuer Thread wird gestartet.
367 C-Control Pro IDE signal Wert des Signals 5.25.
Bibliotheken 368 5.25.12 Thread Beispiel 2 // multithread2: Multithreading mit Thread_Delay // erforderliche Library: IntFunc_Lib.cc #thread 0, 0, 10 // Hauptthread mit Task Wechsel alle 10 * 10ms =100ms #thread 1, 128, 10 // Thread 1 mit 128 byte & Task Wechsel 10*10ms =100ms void thread1(void) { while(true) { Msg_WriteText("Thread2"); // "Thread2" wird ausgegeben. Thread_Delay(200); // Danach ist der Thread für 200ms "schlafend".
369 C-Control Pro IDE 5.26.1.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(); Beim Mega128 ist aus Hardwaregründen die Benutzung von Tim e r_ 0 als Zähler nicht möglich! Timer1 (16 Bit) // Beispiel: Pulszählung mit CNT1 Timer_T1CNT(); pulse(n); // n Pulse generieren count=Timer_T1GetCNT(); 5.26.1.
Bibliotheken 370 Das Programm ist auf dem Mega128 nicht im USB Modus funktionsfähig, da der Ausgang PB4 im Zusammenhang mit dem USB Interface auf dem Application Board genutzt wird. Timer1 (16 Bit) Beispiel: Frequenzerzeugung mit 125 * 4,34 µs = 1085µs Periode Timer_T1FRQ(125,PS_64); Timer3 (16 Bit) (nur Mega128) Beispiel: Frequenzerzeugung mit 10*1,085 µs =10,85 µs Periode und 2*1,085µs =2,17 µs Phasenverschiebung Timer_T3FRQX(10,2,PS_8); 5.26.1.
371 C-Control Pro IDE Beispiel: Pulsweitenmodulation mit 6,4 ms Periode und 1,28 ms Pulsweite Kanal A und 640 µs Pulsweite Kanal B Timer_T1PWMX(100,20,10,PS_1024); // // // Periode: 100*69,44 µs = 6,94 ms PulsA: 20*69,44 µs = 1,389 ms PulsB: 10*69,44 µs = 694,4 µs Bei den Timer PWM Funktionen ist ein Wert von Null für den Pulsweiten Parameter nicht erlaubt, und schaltet den Ausgang des PIN auch nicht aus.
Bibliotheken 372 PM_Wert=Timer_T1GetPM(); // Pulsweite auslesen irqcnt=Irq_GetCount(INT_TIM1CAPT); } void main(void) { byte n; // Interrupt Service Routine definieren Irq_SetVect(INT_TIM1CAPT,Timer1_ISR); 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.
373 C-Control Pro IDE { Port_DataDirBit(0,0); // Port_WriteBit(0,0); // Irq_SetVect(INT_TIM0COMP,Timer0_ISR);// Timer_T0Time(100,PS0_1024); // // weiterer Programmablauf... PortA.0 Ausgang PortA.0 Ausgang=0 Interrupt Routine definieren Zeit festlegen und Timer0 starten } 5.26.1.7 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.
Bibliotheken 374 Keine 5.26.1.9 Timer_T0FRQ Timer Funktionen Syntax void Timer_T0FRQ(byte period, byte PS); Sub Timer_T0FRQ(period As Byte, PS As Byte) 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.
375 C-Control Pro IDE 5.26.1.10 Timer_T0GetCNT Timer Funktionen Syntax byte Timer_T0GetCNT(void); Sub Timer_T0GetCNT() As Byte Beschreibung Der Wert des Counter0 wird gelesen. Erfolgte ein Überlauf, dann wird der Wert FF (Hex) übergeben. Beim Mega128 ist aus Hardwaregründen die Benutzung von Tim e r_ 0 als Zähler nicht möglich! Rückgabewert der gemessene Zählerwert 5.26.1.
Bibliotheken 376 Beschreibung Diese Funktion initialisiert den Timer0, mit dem angegebenen Vorteiler und Pulsweite, siehe Tabelle . Das Ausgangssignal erscheint an Mega32: PortB.3 (PIN4) Mega128: PortB.4(X1_4). Der Mega128 verfügt über erweiterte Vorteilerdefinitionen siehe Tabelle. Für den Pulsweitenparameter nicht den Wert Null benutzen.
377 C-Control Pro IDE 5.26.1.14 Timer_T0Stop Timer Funktionen Syntax void Timer_T0Stop(void); Sub Timer_T0Stop() 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.26.1.
Bibliotheken PS0_256 (4) PS0_1024 (5) Vorteiler (prescaler) PS0_1 (1) PS0_8 (2) PS0_32 (3) PS0_64 (4) PS0_128 (5) PS0_256 (6) PS0_1024 (7) 378 17,36 µs 69,44 µs Tickdauer Mega128 67,8 ns 542,5 ns 2,17 µs 4,34 µs 8,68 µs 17,36 µs 69,44 µs Tickdauer Mega128 CAN 62,5 ns 500 ns 2 µs 4 µs 8 µs 16 µs 64 µs 5.26.1.16 Timer_T1CNT Timer Funktionen Syntax void Timer_T1CNT(void); Sub Timer_T1CNT() Beschreibung Diese Funktion initialisiert den Counter1.
379 C-Control Pro IDE Parameter limit 5.26.1.18 Timer_T1FRQ Timer Funktionen Syntax void Timer_T1FRQ(word period, byte PS); Sub Timer_T1FRQ(period As Word, PS As Byte) Beschreibung Diese Funktion initialisiert den Timer1, mit dem angegebenen Vorteiler und Periodendauer, siehe Tabelle . Das Ausgangssignal erscheint an Mega32: PortD.5 (PIN19). Mega128: PortB.5 (X1_3). Die Frequenzerzeugung wird automatisch gestartet.
Bibliotheken 380 gung wird automatisch gestartet. Der Wert für die Phasenverschiebung muss kleiner sein als die halbe Periode. Parameter period Periodendauer skew Phasenverschiebung PS Vorteiler (Tabelle prescaler) 5.26.1.20 Timer_T1GetCNT Timer Funktionen Syntax word Timer_T1GetCNT(void); Sub Timer_T1GetCNT() As Word Beschreibung Der Wert des Counter1 wird gelesen. Erfolgte ein Überlauf, dann wird der Wert FFFF (Hex) übergeben. Rückgabewert der gemessene Zählerwert 5.26.1.
381 C-Control Pro IDE auch Beispiel). 5.26.1.22 Timer_T1PWA Timer Funktionen Syntax void Timer_T1PWA(word PW0); Sub Timer_T1PWA(PW0 As Word) Beschreibung Diese Funktion stellt eine neue Pulsweite (Kanal_A) für den Timer1 ein, ohne den Vorteiler zu verändern. Für den Pulsweitenparameter nicht den Wert Null benutzen. Siehe Pulsweitenmodulation Parameter PW0 Pulsweite 5.26.1.
Bibliotheken PS_256 (4) PS_1024 (5) 17,36 µs 69,44 µs 382 16 µs 64 µs 5.26.1.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. Für den Pulsweitenparameter nicht den Wert Null benutzen. Siehe Pulsweitenmodulation Parameter PW1 Pulsweite 5.26.1.
383 C-Control Pro IDE 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 62,5 ns 500 ns 4 µs 16 µs 64 µs 5.26.1.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.
Bibliotheken period PW0 PW1 PW2 PS 384 Periodendauer Pulsweite Kanal A Pulsweite Kanal B Pulsweite Kanal C Vorteiler (Tabelle prescaler) 5.26.1.28 Timer_T1Start Timer Funktionen Syntax void Timer_T1Start(byte prescaler); Sub Timer_T1Start(prescaler As Byte) Beschreibung Der Timer läuft mit der vorherigen Einstellung weiter. Der Vorteiler muss neu angegeben werden. Parameter prescaler Vorteiler (Tabelle prescaler) 5.26.1.
385 C-Control Pro IDE 5.26.1.30 Timer_T1Time Timer Funktionen Syntax void Timer_T1Time(word Time, byte PS); Sub Timer_T1Time(Time As Word, PS As Byte) Beschreibung Diese Funktion initialisiert den Timer1 mit dem angegebenen Vorteiler, und dem Wert (16 Bit) für die Zeit, siehe Tabelle . Ist der Wert erreicht, dann wird der Timer1- Interrupt (INT_TIM1CMPA) ausgelöst.
Bibliotheken 386 5.26.1.32 Timer_T3CNT_Int Timer Funktionen Syntax void Timer_T3CNT_Int(word limit); Sub Timer_T3CNT_Int(limit As Word) Beschreibung Diese Funktion initialisiert den Counter_3. Der Counter_3 wird bei einer positiven Signalflanke an Eingang PortE.6 (X1_10) inkrementiert. Wenn das Limit erreicht ist, wird ein Interrupt ("Timer3 CompareA" - define: INT_TIM3CMPA ) ausgelöst. Die entsprechende Interrupt Service Routine muss vorher definiert sein. Parameter limit 5.26.1.
387 C-Control Pro IDE 5.26.1.34 Timer_T3FRQX Timer Funktionen Syntax void Timer_T3FRQX(word period, word skew, byte PS); Sub Timer_T3FRQX(period As Word, skew As Word, PS As Byte) Beschreibung Diese Funktion initialisiert den Timer3, mit dem angegebenen Vorteiler, Periodendauer und Phasenverschiebung der beiden Ausgangssignale, siehe Tabelle . Die Ausgangssignale erscheinen an PortE.3 (X1_13) und PortE.4 (X1_12). Die Frequenzerzeugung wird automatisch gestartet.
Bibliotheken 388 Beschreibung Diese Funktion liefert das Messergebnis zurück. Parameter Keine 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_T3PM angegeben wurde (siehe auch Beispiel). 5.26.1.
389 C-Control Pro IDE Diese Funktion legt fest, ob eine Pulsbreiten- oder Periodenmessung durchgeführt werden soll, initialisiert den Timer_3 für die Messung und setzt den Vorteiler. Parameter Mode 0 = Pulsweitenmessung, 1 = Periodenmessung PS Vorteiler Tabelle prescaler: Vorteiler (prescaler) Tickdauer Mega128 PS_1 (1) PS_8 (2) PS_64 (3) PS_256 (4) PS_1024 (5) Tickdauer Mega128 CAN 67,8 ns 542,5 ns 4,34 µs 17,36 µs 69,44 µs 62,5 ns 500 ns 4 µs 16 µs 64 µs 5.26.1.
Bibliotheken 390 Diese Funktion initialisiert den Timer3 mit dem angegebenen Vorteiler, Pulsweite und Periodendauer, siehe Tabelle . Das Ausgangssignal erscheint an PortE.3 (X1_13). Für den Pulsweitenparameter nicht den Wert Null benutzen.
391 C-Control Pro IDE 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) . Für den Pulsweitenparameter nicht den Wert Null benutzen.
Bibliotheken 392 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.26.1.
393 C-Control Pro IDE Beschreibung Mißt die Zeit in 10ms Ticks zwischen zwei Aufrufen von Timer_TickCount() und gibt den Wert beim zweiten Aufruf von Timer_TickCount() zurück. Der Rückgabewert beim ersten Aufruf kann ignoriert werden. Parameter Keine Rückgabewert Zeitdifferenz zwischen zwei Aufrufen Beispiel void main(void) { word time; Timer_TickCount(); AbsDelay(500); // 500 ms warten time=Timer_TickCount(); // der Wert von time sollte 50 sein } 5.26.
Bibliotheken 394 word cnt; void count_irq(void) { cnt++; Irq_GetCount(INT_TIMER0); } void main(void) { cnt= 0; Irq_SetVect(INT_TIMER2, count_irq); Timer_ConfigCounter(2, COUNTA_1, CNT_RISING, 300); AbsDelay(10000); Msg_WriteWord(Timer_GetCounterVal(2)); Msg_WriteChar('\r'); while(1); } 5.26.2.2 Frequenzerzeugung Auf jedem der 6 Timerkanäle kann ein Rechtecksignal erzeugt werden.
395 C-Control Pro IDE 5.26.2.3 Pulsweitenmodulation Der C-Control AVR32Bit kann auf bis zu 4 Kanälen ein pulsweitenmoduliertes Signal ausgeben. Im folgenden Beispiel wird auf PWM Kanal 1 ein Signal mit 1,65Mhz Periode und 50% Duty erzeugt. Nach 10 Sekunden wird der PWM Kanal abgeschaltet. Das Signal wird auf den Pin PWMH_1 und PWML_1 ausgegeben (siehe Pinzuordnung ).
Bibliotheken 396 negiert. Zum erstellen des mode Parameter werden die Bitwerte aus der mode Tabelle oderiert (siehe PWM_Beispiel). Für detailliertere Informationen über PWMH_x, PWML_x und deadtime, bitte das AT32UC3C Datenblatt konsultieren.
397 C-Control Pro IDE Im laufenden Betrieb kann period (Frequenz), duty (Breite) und deadtime des PWM Signals angegeben werden. Für die Frequenz gilt folgende Formel: Frq = 66.000.000 / Vorteiler / period. Erlaubte Werte für duty sind 0 bis zu period. Bei einem Duty von 0 ist das Signal aber dauerhaft aus, bei einem Duty von period dauerhaft an. Ein Duty von 50% sind demnach period / 2.
Bibliotheken 5.26.2.8 398 Timer_CPUCycles Timer Funktionen Syntax dword Timer_CPUCycles(void); Sub Timer_CPUCycles() As ULong Beschreibung Misst die CPU Zyklen zwischen zwei Aufrufen von Timer_CPUCycles() und gibt den Wert beim zweiten Aufruf von Timer_CPUCycles() zurück. Der Rückgabewert beim ersten Aufruf kann ignoriert werden. Da der Prozessor mit 66Mhz getaktet ist, können nur Zeiträume von bis zu 65 Sekunden gemessen werden. Parameter Keine Rückgabewert CPU Zyklen zwischen zwei Aufrufen 5.26.2.
399 C-Control Pro IDE Sub Timer_GetCounterVal(timer As Byte) As Word Beschreibung Gibt den 16-Bit Counter eines Timers zurück. Parameter timer Nummer des Timers (0 - 5) Rückgabewert Zählerwert 5.26.2.11 Timer_Set Timer Funktionen Syntax void Timer_Set(byte timer, byte PS, word period, word flags); Sub Timer_Set(timer As Byte, PS As Byte, period As Word, flags As Word) Beschreibung Diese Funktion initialisiert den Timer, mit dem angegebenen Vorteiler und Periodendauer, siehe Tabelle.
Bibliotheken TIM_128 (4) 400 1,939 µs Tabelle flags: Definition TIMFLG_IRQ TIMFLG_PINA TIMFLG_PINB Bedeutung Es werden Interrupts generiert Das Signal wird auf Pin TIMERx-A ausgegeben Das Signal wird auf Pin TIMERx-B ausgegeben 5.26.2.12 Timer_TickCount Timer Funktionen Syntax dword Timer_TickCount(void); Sub Timer_TickCount() As ULong Beschreibung Mißt die Zeit in 10ms Ticks zwischen zwei Aufrufen von Timer_TickCount() und gibt den Wert beim zweiten Aufruf von Timer_TickCount() zurück.
401 5.27 C-Control Pro IDE Webserver (AVR32Bit) Der Webserver der C-Control Pro AVR32Bit wird mit WEB_StartServer gestartet. Es kann dafür ein beliebiger TCP/IP Port ausgesucht werden. Beim Start des Webservers wird die Anzahl der dynamischen Variablen definiert, mit denen man arbeiten möchte. Die dynamischen Variablen übernehmen die Werte von URL Variablen beim Aufruf der Webseite und man kann dynamische Variablen zur Ausgabe von Werten innerhalb von Webseiten benutzen.
Bibliotheken 402 URL (CGI) Variablen Werden bei einem Webrequest keine URL Variablen angegeben, so läuft der gesamte Prozess im Hintergrund, und es muss keine Interaktion erfolgen. Wird eine URL Variable angegeben (z.B. "? var0=5") so überprüft der Webserver, ob der Variablenname dem Schema "var" + Zahl entspricht. Die Zahl darf den maximalen Index der definierten dynamischen Variablen nicht überschreiten. Wird das Schema erfüllt, wird der Wert "5" der dynamischen Variablen zugewiesen.
403 C-Control Pro IDE fall der Reset-Taster betätigt werden, um einen kompletten Neustart des Systems auszulösen. Webserver Optimierung Der lwIP TCP/IP-Stack ist darauf optimiert, bei embedded Devices möglichst gut mit Webseiten zu arbeiten, die im Flash-Speicher abgelegt sind.
Bibliotheken 404 5.27.3 WEB_GetFileHash Ethernet Funktionen Syntax word WEB_GetFileHash(byte request); Sub WEB_GetFileHash(request As Byte) As Word Beschreibung Gibt den 16 Bit CRC hash des Dateinamens zurück. Der request Parameter muss identisch mit dem Wert sein, den man von WEB_GetRequest() erhalten hat. Parameter request Request Parameter Rückgabewert 16 Bit CRC hash des Dateinamens (8.3) 5.27.
405 C-Control Pro IDE Sub WEB_SetDynVar(indx As Word, var_addr As Pointer, type As Byte, flags As Byte, len As Byte) Beschreibung Definiert eine dynamische Variable über ihren index, Adresse und Variablentyp. Der len Parameter ist für Stringvariablen wichtig, andere Typen ignorieren diesen Parameter. Es können mehrere flags gleichzeitig angegeben werden, indem die Werte oderiert werden.
Bibliotheken 406 5.27.6 WEB_StartServer Ethernet Funktionen Syntax void WEB_StartServer(word port, byte ramaddr[], word dynvar_cnt, word flags); Sub WEB_StartServer(port As Word, ByRef ramaddr As Byte, dynvar_cnt As Word, flags As Word) Beschreibung Startet den Webserver auf TCP/IP Port port. Man definiert wieviele dynamischen Variable man nutzen möchte. Der Anwender muss eine globale Variable als Puffer bereitstellen.
407 C-Control Pro IDE Beschreibung Stoppt den Webserver.
Kapitel 6
409 C-Control Pro IDE 6 FAQ 6.1 Allgemein 1. Die Rechtschreibprüfung funktioniert nicht. Ist die Rechtschreibprüfung in Optionen->Editor eingeschaltet? Die Rechtschreibprüfung zeigt nur Schreibfehler in den Kommentaren an. Die Prüfung für andere Bereiche wäre sinnlos. 2. 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 *.
FAQ 410 6. Kann man das C-Control Pro Modul auch mit anderen Compilern programmieren? Es existieren mehrere Entwicklungssysteme für die Atmel Mega oder AVR32 CPUs. Teilweise sind diese Compiler kommerziell oder frei. Ein Beispiel einer freien Entwicklungsumgebung ist der GNU C-Compiler. Mit Hilfe eines AVR Programmers kann man dann mit dem GNU C-Compiler geschriebene Programme übertragen.
411 C-Control Pro IDE 6. Wieviel RAM Speicher haben meine Programme zur Verfügung? Auf dem Mega32 stehen 930 Bytes für eigene Programme zur Verfügung, auf dem Mega128 bleiben 2494 Bytes. Der Interpreter mit Debugger benötigt Puffer für die interruptgesteuerte Ein- und Ausgabe, und selber einen 256 Byte Datenstack. Außerdem werden mehrere interne Tabellen für Interruptverarbeitung und Multithreading gepflegt. Zusätzlich benötigen zahlreiche Bibliotheksfunktionen Variablen um sich Zustände zu merken. 7.
FAQ 412 3. Ich brauche für meine Anwendung mehr freie Ports. Die meisten sind ja mit Funktionen belegt. Schaut man sich die Pinzuordnung der AVR32Bit an, so können die Ports genutzt werden, deren Funktionalität man nicht braucht. Bei Pins die beim Application Board mit Peripherie verbunden sind ( SPI, RS232, LCD, Keyboard etc.) nicht vergessen die Jumper am Application Board abzuziehen. Ansonsten wird das Portverhalten beeinträchtigt. 4.
413 C-Control Pro IDE Sachverzeichnis ---- 185, 206 -##define 172 #endif 172 #ifdef 172 #include 172 -+++ 185, 206 -AAbsDelay 228 AC_Disable 232 AC_Enable 232 AC_InpHigher 233 AComp 230 acos 296 ADC Beispiel 242 ADC_Disable 235, 239 ADC_Enable 239 ADC_GetValue 240 ADC_GetValues 241 ADC_Read 235 ADC_ReadInt 236 ADC_Set 236 ADC_SetInput 241 ADC_SetInt 237 ADC_Start 242 ADC_StartInt 238 Addition 184, 205 Analog-Comparator 230, 231 Anweisungen 176, 197 Anweisungsblock 176 Arithmetische Operatoren 184, 20
Sachverzeichnis C-Control konfigurieren 149 ceil 297 char 178, 199 Clock_GetVal 251 Clock_SetDate 252 Clock_SetTime 252 Code-Falten 140 COM Interface 148 COM Port 167 Compilervoreinstellung 166 Conrad 4 continue 187, 188, 191 cos 298 CPU AT90CAN128 34 CPU Auswahl 137 CPU Mega128 27 CPU Mega32 20 -DDatenbits 167 Datentypen 178, 199 DCF_FRAME 255 DCF_INIT 255 DCF_Lib.cc 253 DCF_PULS 256 DCF_RTC.
415 C-Control Pro IDE float 178, 199 floor 299 For 188, 209 ForceBootloader 229 formattierte Zeichenausgabe 355 FPU 296 Frequenzerzeugung 369, 394 Frequenzmessung 370 Funktionen 192, 213 Funktionsübersicht 140 -Ggleich 185, 207 Goto 189, 210 GPP 4 größer 185, 207 größer gleich 185, 207 -HHaltepunkte 154 Handhabung 3 Hardware Version 153 Hexzahlen 179, 200 Hilfe 169 Historie 5 -II2C 275, 279 I2C Status Codes 278 I2C_Init 275 I2C_Probe 280 I2C_Read 280 I2C_Read_ACK 276 I2C_Read_NACK 276 I2C_SetSpeed 281
Sachverzeichnis LCD_WriteWord 295 LCD1602 Board 106 ldexp 300 links schieben 185, 206 ln 300 log 300 Logische Operatoren 186 logisches Nicht 186 logisches Oder 186 logisches Und 186 Loop While 207 -MMAC Adresse 64 Map Datei 174 Mega128 ApplicationBoard 49 Mega128 Projectboard 61 Mega32 ApplicationBoard 39 Mega32 Projectboard 59 Meldungen 135 Modul Mega128 23 Modul Mega128 CAN 30 Modul Mega32 17 Modulo 184, 205 Msg_WriteChar 257 Msg_WriteFloat 257 Msg_WriteHex 258 Msg_WriteInt 258 Msg_WriteText 259 Msg_Writ
417 C-Control Pro IDE RC5_Read 321 RC5_Write 321 rechts schieben 185, 206 Rechtschreibprüfung 164 Referenzspannung 236, 237 Reguläre Ausdrücke 147 REL4-Board 114 RELBUS-Board 119 reserviert 196, 216 reservierte Worte 196, 216 round 301 -SSchaltplan Mega128 30 Schaltplan Mega128 ApplicationBoard 56 Schaltplan Mega128 CAN 37 Schaltplan Mega32 23 Schaltplan Mega32 ApplicationBoard 45 SD card Beispiel 342 SDC Rückgabe Werte 334 SDC_FClose 334 SDC_FOpen 335 SDC_FRead 336 SDC_FSeek 336 SDC_FSetDateTime 337 SDC
Sachverzeichnis -TTabelle 320 Tabellen 179, 200 tan 303 Tastaturbelegung 161 Tastaturkürzel 145 TCP/IP Programmierung 265 Terminal 158 Terminal Einstellungen 167 Thread_Cycles 362 Thread_Delay 362 Thread_Info 363 Thread_Kill 364 Thread_Lock 364 Thread_MemFree 364 Thread_Resume 365 Thread_Signal 365 Thread_Start 366 Thread_Wait 366 Threadoptionen 139 Threads 360 Timer 368 Timer_ConfigCounter 397 Timer_CPUCycles 398 Timer_Disable 398 Timer_GetCounterVal 398 Timer_Set 399 Timer_T0CNT 373 Timer_T0Disable 373 T
419 C-Control Pro IDE Variablen 179, 200 Variablen Aktualisieren 155 Variablen Fenster 155 Vergleichsoperatoren 185, 207 Versionsüberprüfung 153 Verwendung 3 void 192, 213 vordefinierte Arrays 179, 200 Vorheriger Fehler 135 Vorzeichen 184, 205 -WWEB_GetFileHash 404 WEB_GetRequest 403 WEB_ReleaseRequest 404 WEB_SetDynVar 404 WEB_StartServer 406 WEB_StopServer 406 Webserver 401 Webserver Optimierung 402 Webserver Tips 402 Werkzeug Einstellungen 167 Werkzeuge 158 While 191, 208 word 178, 199 -ZZeiger 192,