Diplomarbeit. Softwareentwicklung und Akku-Ladesteuerung für einen Hybrid-Segelieger. Hochschule München. 01. Mai

Größe: px
Ab Seite anzeigen:

Download "Diplomarbeit. Softwareentwicklung und Akku-Ladesteuerung für einen Hybrid-Segelieger. Hochschule München. 01. Mai 2010. 01."

Transkript

1 Hochschule München Fakultät für Elektrotechnik und Informationstechnik Diplomarbeit von Marc Koraschnigg Softwareentwicklung und Akku-Ladesteuerung für einen Hybrid-Segelieger Bearbeitungsbeginn 01. Mai 2010 Abgabetermin 01. Oktober 2010 lfd. Nr. 2702

2 Hochschule München Fakultät für Elektrotechnik und Informationstechnik Diplomarbeit von Marc Koraschnigg Softwareentwicklung und Akku-Ladesteuerung für einen Hybrid-Segelieger Software development and battery charge control for a hybrid-glider Betreuer Prof. J. Plate Bearbeitungsbeginn 01. Mai 2010 Abgabetermin 01. Oktober 2010 lfd. Nr Marc Koraschnigg Diplomarbeit HS München

3 Erklärung des Diplomanden: Name Vorname 1. Ich erkläre hiermit, dass ich die vorliegende Diplomarbeit selbstständig verfasst und noch nicht anderweitig zu Prüfungszwecken vorgelegt habe. Sämtliche benutzte Quellen und Hilfsmittel sind angegeben, wörtliche und sinngemäÿe Zitate sind als solche gekennzeichnet. Ort, Datum Unterschrift 2. Ich erkläre mein Einverständnis, dass die von mir erstellte Diplomarbeit in die Bibliothek der Hochschule München eingestellt wird. Ich wurde darauf hingewiesen, dass die Hochschule in keiner Weise für die missbräuchliche Verwendung von Inhalten durch Dritte infolge der Lektüre der Arbeit haftet. Insbesondere ist mir bewusst, dass ich für die Anmeldung von Patenten, Warenzeichen oder Geschmacksmuster selbst verantwortlich bin und daraus resultierende Ansprüche selbst verfolgen muss. Ort, Datum Unterschrift Marc Koraschnigg Diplomarbeit HS München

4 Kurzfassung Segelugzeuge mit Verbrennungs- oder Elektro-Hilfsmotor stellen beim Segeliegen schon einzelne Lösungen für die Antriebstechnik dar. Die Verwendung eines hybriden Antriebsystems - Kombination aus Elektro- und Benzinmotor, ist Neu und bringt Vorteile hinsichtlich der Verlängerung der Flugzeit, Selbststartmöglichkeit, Sicherheit und Unabhängigkeit. Ziel dieser Diplomarbeit ist die Entwicklung der Software zur Akku-Ladesteuerung sowie die visuelle Ausgabe auf einem Grak LCD. Die einzelnen Aufgaben im Überblick sind: ˆ Initialisierung der Peripherie ˆ Kommunikation mittels SPI, GPIO und CAN ˆ Ladezustandsberechnung der Batterien ˆ Intelligente Ladesteuerung ˆ Visuelle Ausgabe auf dem Grak LCD Synopsis Glider with combustion engines or electric motors are already realized. Advantages of a hybrid propulsion system are an extension of the ying time, option for self launching, safety and independency. Aim of this thesis is the development of the software for the battery charge control as well as the visual output on a graphic display. Summary of the tasks: ˆ Initialization of the peripheral equipment ˆ Communication through SPI, GPIO und CAN ˆ Calculation of the battery state of charge ˆ Intelligent charge control ˆ Visual output on a graphic display Marc Koraschnigg Diplomarbeit HS München

5 Danksagung An dieser Stelle möchte ich mich bei allen Personen bedanken, die mich bei der Erstellung dieser Arbeit unterstützt haben. Ein besonderer Dank gilt meinen Betreuern Herrn Prof. Jürgen Plate und Herrn Prof. Dr.-Ing. Klaus Scheer, die stets für mich ansprechbar waren und mir die Freiheit gelassen haben, die Arbeit nach eigenen Vorstellungen zu entwickeln. Groÿer Dank gebührt auch Dipl.-Ing. (FH) Markus Koch, der mir zu jeder Zeit bei Fragen zur Verfügung stand und mich vor allem auf typograsche Fehler hinwies. Ebenfalls möchte ich mich bei meiner Freundin Saskia Jambor, meiner Schwester Sandra Koraschnigg und ihrem Freund Thomas Wurm bedanken, die mir bei der Korrektur der Diplomarbeit sehr hilfreich zur Seite standen. Auch möchte ich mich im Besonderen bei meinen Eltern bedanken, die mich nicht nur nanziell, sondern auch moralisch sehr unterstützt haben. Marc Koraschnigg Diplomarbeit HS München

6 Inhaltsverzeichnis Inhaltsverzeichnis Abbildungsverzeichnis 8 Tabellenverzeichnis 10 Abkürzungen 11 1 Einleitung Projekt Hybrid-Segelieger Grundlagen des Segelugs Startverfahren Aufwinde Vorteile eines Hybrid-Systems Aufgabenstellung und Ziele Ziel der Diplomarbeit Funktionen im Überblick Die Startsequenz Der Ausgangszustand (Idle-Mode) Hardware und Entwicklungsumgebung Überblick Mikrocontroller Keil Evaluationsboard MCB EA DOGXL Display & Backlight EA LED78x64W µvision3 Integrierte Entwicklungsumgebung Flash Magic Software Softwareentwicklung Peripherieinitialisierung General Purpose Input/Output (GPIO) Marc Koraschnigg Diplomarbeit HS München

7 Inhaltsverzeichnis Serial Peripheral Interface (SPI) Initialisierung des Grak LCDs Real Time Clock (RTC) Battery RAM (NVRAM) Controller Area Network (CAN) Initialisierung der LEDs und des Zeilen-LCDs Das Betriebssystem (kooperatives Multitasking) Initialisierung und Funktionsweise des Betriebssystems Programmablauf Einlesen der Schalter, Taster und Schieber Ausgangssignale Ladezustandsberechnung Die Abtastung des Stromes Displayausgabe Der Displaycontroller Zusammensetzen der Bilder Erster Bereich Zweiter Bereich Dritter Bereich Vierter Bereich Datenübergabe an den Displaycontroller Konvertierung und Anzeige der dynamischen Zahlen Ausblick 70 Literaturverzeichnis 71 A Aktivierung und Verwendung von µvision 3 74 B Initialisierungsbeschreibung des GLCD 77 C Von der Zeichnung zum Array 79 D Daten CD 82 Marc Koraschnigg Diplomarbeit HS München

8 Abbildungsverzeichnis Abbildungsverzeichnis 1.1 Hybrid-System auf einer Welle Segelugzeug beim Windenstart [Wik10c] Segelugzeug beim Flugzeugschlepp [Sch10] Segelugzeug beim Eigenstart [Wik10c] Thermischer Aufwind Hangiegen Leewelle [wet10] Übersicht der Kommunikationswege Die Startsequenz Der Idle Screen Die Ausfahrsequenz Der Elektromotor treibt den Propeller an Der Verbrennungs- und Elektromotor treiben den Propeller an Der Propeller wird in die vertikale Position gebracht Der Verbrennungsmotor lädt die Batterien Keil Evaluationsboard MCB EA DOGXL Display und Backlight LED78x64W Dimensionen GLCD & Cockpit-Einheit LCD Pinbelegung Die Backgroundschaltung Das Flash Magic Tool und die nötigen Einstellungen Softwarekonzept Übersicht der SPI Verbindung 4 Wire zwischen Mikrocontroller und LC Display Übersicht der SPI 3/4-Wire Serial Mode Ablauf der Graphic Liquid Crystal Display (GLCD) Initialisierung.. 38 Marc Koraschnigg Diplomarbeit HS München

9 Abbildungsverzeichnis 4.5 Batterieanschluss Funktionsweise des Schiebers Auszug aus dem Datenblatt (LPC23XX UM) des Mikrocontroller Vom Zeichenprogramm zum Array Das richtige Datenformat Zustände eines Pixel Statischer Welcome Screen Dynamischer Idle Screen Array rst_row (320 Byte groÿ) Übersicht Page 1 und Page Byte des ersten Bereichs Byte des zweiten Bereichs Byte des dritten Bereichs Vierte Bereich Restladezeit Konzept der Wrapper-Funktion Übersicht der dynamischen Felder Die Umwandlung der Variable time in einen String A.1 Das License Management A.2 Single-User License & die Computer ID (CID) A.3 Der Arbeitsbereich A.4 Links: Der Rebuild All Button - Rechts: Der Start Debug Button 76 C.1 Im Zeichenprogramm erstellte Motiv C.2 In den BitFontCreator eingefügte Bild C.3 Die Einstellungen im BitFontCreator Marc Koraschnigg Diplomarbeit HS München

10 Tabellenverzeichnis Tabellenverzeichnis 3.1 Übersicht Mikrocontroller Übersicht der 16 Pins des GLCD Übersicht der verschieden Ansteuerungsmodi Übersicht der verwendeten Bauteile Übersicht der Funktionen des PINSELx Registers Übersicht des PINSEL0 Registers Übersicht der Funktionen des PINMODEx Registers Übersicht der vier Steuerregister Abkürzungen des SP Interface Übersicht der möglichen Motorenzustände C.1 Einstellung für die Datenausgabe Marc Koraschnigg Diplomarbeit HS München

11 Tabellenverzeichnis Abkürzungen GPIO General Purpose Input/Output CAN-Bus Controller Area Network Bussystem CAN SPI LCD GLCD Elkos MSB LSB RTC Controller Area Network Serial Peripheral Interface Liquid Crystal Display Graphic Liquid Crystal Display Elektrolyt-Kondensatoren Most Signicant Bit Least Signicant Bit Real Time Clock Marc Koraschnigg Diplomarbeit HS München

12 1 Einleitung 1 Einleitung 1.1 Projekt Hybrid-Segelieger Die Fakultät 03 für Maschinenbau entwickelt und baut in Zusammenarbeit mit der Fakultät 04 für Elektro- und Informationstechnik den hybriden Antrieb eines Segel- ugzeugs. Die Studenten der FK-03 beschäftigen sich dabei mit der Thematik der Mechanik (Entwicklung von Propeller, Verbrennungsmotor, Aerodynamik usw.). Die Studenten der FK-04 sind für die elektrischen und elektronischen Bauteile (Hardund Software, Leistungs- und Ladeelektronik, Elektromotor, Akkupacks, usw.) verantwortlich. Die Motivation dabei ist es, einen modularen Hybridantrieb (Abbildung 1.1) zu entwickeln, dessen leistungsstarke Akkus durch einen zusätzlichen Verbrennungsmotor während des Gleituges aufgeladen werden. Da bei konstanter Ladeleistung eine vollständige Ladung der Batterien nicht möglich ist, können die Akkus über Nacht durch ein geeignetes Ladegerät am Netz vollständig aufgeladen werden. Zum Eigenstart sowie in der ersten Steigphase soll die kombinierte Leistung aus Verbrennungsmotor (7 kw) und Elektromotor (37 kw) dem Piloten zur Verfügung stehen. Im Sägezahnug kann ein umweltfreundlicher und sicherer Langstreckenug durchgeführt werden. Abbildung 1.1 zeigt das Konzept beider Systeme auf einer Welle. Durch diese Konstellation ergeben sich drei Betriebsmodi. ˆ Elektromotor treibt alleine den Propeller an (37 kw) ˆ Verbrennungsmotor + Elektromotor treiben den Propeller an (7 kw + 37 kw) ˆ Verbrennungsmotor treibt Elektromotor als Generator an und lädt die Batterien mit 2C Ladestrom (7 kw) Marc Koraschnigg Diplomarbeit HS München

13 1 Einleitung Abbildung 1.1: Hybrid-System auf einer Welle Denition 1C = Strom der eine Stunde ieÿen muss, um die Ladungsmenge der typischen Akkukapazität übertragen zu haben. 1.2 Grundlagen des Segelugs Beim Segelug werden Aufwinde (thermischer Aufwind, Hangaufwind oder Leewellen) dazu genutzt, das Flugzeug in höhere Lagen zu bringen. Um die Aufwinde nutzen zu können erfordert es eine bestimmte Mindesthöhe. Diese kann durch verschiedene Startverfahren (Windenstart, Flugzeugschlepp oder Eigenstart) erreicht werden. [Wik10c] Startverfahren Beim Windenstart [Wik10c] wird das Segelugzeug mit Hilfe einer Startwinde nach Vorne gezogen. Durch den eigenen Auftrieb und einem geeigneten Anstellwinkel gewinnt es nach und nach an Höhe. Das Stahl- oder Kunststoseil ist je nach Pistenlänge begrenzt und beträgt meist 800 m bis 3 km. Das Flugzeug wird auf etwa km/h beschleunigt. Marc Koraschnigg Diplomarbeit HS München

14 1 Einleitung Abbildung 1.2: Segel ugzeug beim Windenstart [Wik10c] Beim Flugzeugschlepp [Wik10c] wird das Segel ugzeug von einem Motor ugzeug in die Höhe gezogen. Das befestigte Seil ist dabei mit einer Länge von m deutlich kürzer. Bei dieser Art des Startverfahrens kann die Schlepphöhe und der Ausklinkort frei gewählt werden, so dass das Segel ugzeug direkt in den Aufwind geschleppt werden kann. Abbildung 1.3: Segel ugzeug beim Flugzeugschlepp [Sch10] Beim Eigenstart [Wik10c] wird der im Rumpf sitzende, ausklappbare Propeller ausgefahren und gestartet. Durch den Vorschub gewinnt das Flugzeug an Geschwindigkeit, kann damit abheben und steigen. Wenn die gewünschte Höhe erreicht ist, wird der Motor abgestellt, abgekühlt und eingefahren. Abbildung 1.4: Segel ugzeug beim Eigenstart [Wik10c] Marc Koraschnigg Diplomarbeit HS München

15 1 Einleitung Aufwinde Der thermische Aufwind [Wik10c] entsteht durch die Erwärmung des Bodens durch die Sonne. Dieser gibt seine Wärme ab und bildet einen Thermikschlauch. In diesem kann sich der Pilot kreisend nach oben bewegen. Abbildung 1.5: Thermischer Aufwind Beim Hangiegen [Wik10c] iegt das Flugzeug auf der Luv 1 -Seite eines Berghangs in einer aufwärts gerichteten Luftströmung. Diese entsteht durch den Wind, der am Hang schräg nach oben abgeleitet wird. Abbildung 1.6: Hangiegen Leewellen [Wik10c] entstehen bei besonderen Starkwind-Wetterlagen auf der windabgewandten Seite eines Hindernisses. In diesen Windsystemen können Flughöhen von etwa 3000 m bis 8000 m erreicht werden. 1 Luv = dem Wind zugekehrte Seite Marc Koraschnigg Diplomarbeit HS München

16 1 Einleitung Abbildung 1.7: Leewelle [wet10] 1.3 Vorteile eines Hybrid-Systems Hybrid wird in der Technik als ein System bezeichnet, bei welchem zwei Technologien miteinander kombiniert werden. Für die zusätzliche Antriebstechnik beim Segelieger stellen Elektroantrieb und Benzinmotoren schon einzelne Lösungen dar, die Kombination aus beiden aber ist Neu und bringt weitere neue erwünschte Eigenschaften. So soll der Elektroantrieb, der aus einem 37 kw leistungsstarkem Synchronmotor besteht, den Propeller für etwa 5 Minuten bei konstanter Drehzahl von 5500 U/min antreiben und somit das Flugzeug in den Steigug bringen. Ist der Steigug abgeschlossen wird der Benzinmotor automatisch gestartet und die Batterien über den Elektromotor, der jetzt als Generator agiert, geladen. Bei einem Ladestrom von 2C wird der Akku in einer halben Stunde ausreichend geladen. Bei Segelugzeugen, die ausschlieÿlich einen Verbrennungsmotor zum Antrieb haben, muss sich der Pilot speziell in der Phase nach dem Steigug darum kümmern, dass der Propeller und der Kühler erst nach ausreichender Abkühlung wieder eingefahren wird. Der im Hybrid-System verwendete klein dimensionierte Benzinmotor (7 kw) benötigt weitaus weniger Kühlung. Der Pilot kann den Propeller sofort wieder einfahren und kann sich auf wichtige Aufgaben wie z. B. die Suche nach der Thermik konzentrieren. Ein weiterer Vorteil des Hybrid-Systems liegt darin, dass diese an Flugplätzen betrieben werden können, welche Segelieger mit Benzinmotoren zum Eigenstart aufgrund von Lärmschutz verbieten. Marc Koraschnigg Diplomarbeit HS München

17 2 Aufgabenstellung und Ziele 2 Aufgabenstellung und Ziele 2.1 Ziel der Diplomarbeit Ziel dieser Diplomarbeit ist, eine erste Konzeptionierung und Realisierung der Hardund Software für einen Hybrid-Segelieger zu entwickeln, die zur Aufgabe die Steuerung, die Kommunikation und die Ausgabe der Daten auf einem graschen Display (engl. GLCD) hat. Dies beinhaltet unter anderem auch die Anschaung der Hardware sowie das Konzept für die Umsetzung und Integration im Cockpit. Neue Anforderungen werden derzeit im Team von Prof. Scheer ausgearbeitet, diskutiert und direkt in dieser Arbeit umgesetzt. Da sich bis zur endgültigen Version des Segeliegers die gestellten Anforderungen noch verändern können, ist es Voraussetzung, dass der C Code einfach zu erweitern ist. Ein guter Programmierstil setzt eine bestimmte Quelltextformatierung voraus, die zur Steigerung der Lesbarkeit führt. Kommentare sind heutzutage unerlässlich und trägt, richtig angewandt, erheblich zur schnelleren Erfassbarkeit des Quelltext für Auÿenstehende bei. In Abbildung 2.1 werden die Kommunikationswege der einzelnen Komponenten dargestellt. Diese erfolgt beim LCD über das SPI(Serial Periphal Interface) welches die Daten seriell von Mikrocontroller auf den Controller des Displays überträgt. Marc Koraschnigg Diplomarbeit HS München

18 2 Aufgabenstellung und Ziele Abbildung 2.1: Übersicht der Kommunikationswege Die Eingabe über Taster, Schalter und Schieber für den Piloten erfolgt über die digitalen General Purpose Input/Output (GPIO) des Mikrocontrollers. Die Verbindung zwischen Controller und Akkupacks werden über das Controller Area Network Bussystem (CAN-Bus) Protokoll hergestellt. Steuerungsaufgaben, wie das Ein- und Ausfahren des Propellers oder das automatische Starten des Benzinmotor nach dem Steigug, werden softwareseitig realisiert. Auÿerdem werden die Daten visuell auf einem GLCD angezeigt um den Piloten mit Informationen zu Ladezustand, Generatorspannung, Restladezeit usw. zu versorgen. 2.2 Funktionen im Überblick Die Startsequenz Die Startsequenz, die nach dem Einschalten und den Initialisierungen erscheint, zeigt die aktuelle Softwareversion (Abbildung 2.2) für etwa 4 Sekunden an. Marc Koraschnigg Diplomarbeit HS München

19 2 Aufgabenstellung und Ziele Abbildung 2.2: Die Startsequenz Der Ausgangszustand (Idle-Mode) Ist die Startsequenz beendet, springt das Programm in den sog. Idle-Mode über (Abbildung 2.3). An oberster Stelle wird der aktuelle Ladezustand (SOC) der Batterien als Balken und als prozentualer Wert angezeigt. In zweiter Reihe wird die aktuelle Position des Bedienhebels (engl. Control Lever)aufgeführt, direkt darunter ist die Gra k der zwei Motoren auf einer gemeinsamen Welle zu sehen. Der vierte und unterste Teil des Displays ist im Ausgangszustand leer. Dieser Bereich wird zur Anzeige verschiedener Informationen für den Piloten genutzt. Abbildung 2.3: Der Idle Screen Bedienhebel von Position OFF auf 1: Es erscheint die Sequenz, die dem Piloten das Ausfahren des Propeller-Arm's signalisiert (Abbildung 2.4). Diese wird erst unterbrochen und zurück in den Ausgangszustand gebracht, wenn das Signal angibt (bei der Simulation Taster 1), dass der Propeller-Arm vollständig ausgefahren und verriegelt ist. Abbildung 2.4: Die Ausfahrsequenz Marc Koraschnigg Diplomarbeit HS München

20 2 Aufgabenstellung und Ziele Zurück im Ausgangszustand signalisiert die zweite Reihe das der Bedienhebel auf Position 1 steht. Von Position 1 kann der Bedienhebel entweder auf Position 2 oder aber wieder zurück in Position 0 (OFF) gestellt werden. Von Position 1 auf 2: Es wird der Elektromotor gestartet (Abbildung 2.5) und treibt den Propeller für den Steig ug an. Die aktuelle Restantriebszeit erscheint im untersten Bereich und wechselt alle 10 Sekunden auf die aktuelle Spannung und den aktuellen Strom. Der Elektromotor schaltet automatisch ab, wenn der Akkuladezustand einen Wert von 4 % erreicht hat. Dieser Wert kann in der Header-Datei setup.h de niert werden. Abbildung 2.5: Der Elektromotor treibt den Propeller an Von Position 2 auf 3: Es wird zusätzlich zum Elektromotor der Verbrennungsmotor gestartet (Abbildung 2.6). Die Leistung erhöht sich dabei um 7 kw (Verbrennungsmotor) auf 44 kw. Um bei der Simulation in diesen Modus zu gelangen, wird der Schalter von der mittleren auf die linke Position gestellt. Abbildung 2.6: Der Verbrennungs- und Elektromotor treiben den Propeller an Von Position 2 auf 1: Es erscheint die Sequenz, die dem Piloten anzeigt, dass der Propeller in die vertikale Stellung gebracht wird (Abbildung 2.7). Diese wird erst unterbrochen und wieder zurück in den Ausgangszustand gebracht, wenn das Signal anliegt (bei der Simulation Taster 1), dass sich der Propeller in Vertikalstellung be ndet. Marc Koraschnigg Diplomarbeit HS München

21 2 Aufgabenstellung und Ziele Abbildung 2.7: Der Propeller wird in die vertikale Position gebracht Sobald der Propeller in vertikaler Stellung ist, startet automatisch der Verbrennungsmotor und lädt die Batterien. Im untersten Abschnitt wird zudem die ungefähre Restladezeit in Minuten angezeigt (Abbildung 2.8). Der Verbrennungsmotor schaltet bei einem Ladezustand von 85% automatisch ab. Auch dieser Wert kann in der Header-Datei setup.h eingestellt werden. Abbildung 2.8: Der Verbrennungsmotor lädt die Batterien Von Position 1 auf OFF: Es erscheint die Sequenz, die dem Piloten das Einfahren des Propeller-Arm's signalisiert (Abbildung 2.4 nur in umgekehrter Reihenfolge). Auch diese wird erst unterbrochen und zurück in den Ausgangszustand gebracht, wenn das Signal anliegt (bei der Simulation Taster 1), dass der Propeller-Arm vollständig eingefahren und verriegelt ist. Der Pilot hat zudem die Möglichkeit, die Akkuladung jederzeit manuell zu starten. Dazu wird der Schalter von der mittleren auf die rechte Position gestellt. Bei Ladung der Batterien durch ein externes Ladegerät (um eine vollständige Ladung zu erreichen) wird der aktuelle Wert der Ladekapazität durch betätigen des Tasters 3 über drei Sekunden lang auf den Gesamtwert von 100 % gebracht. Die Kapazität der Akkus in As kann in der Header-Datei setup.h eingestellt werden. Sind die Batterien ausreichend geladen (85 %) oder betätigt der Pilot den Taster 2, so schaltet sich der Verbrennungsmotor ab. Marc Koraschnigg Diplomarbeit HS München

22 3 Hardware und Entwicklungsumgebung 3 Hardware und Entwicklungsumgebung 3.1 Überblick Mikrocontroller Denition: Mikrocontroller sind Prozessoren, die neben der CPU und Speicher über eine Vielfalt von Peripherie auf dem Chip verfügen, um Steuer- und Regelungsaufgaben in embedded systems zu übernehmen. [Kri10] Im folgenden werden drei Mikrocontroller (Tabelle 3.1) aufgeführt, die für das Projekt in Frage kommen. Bei der Auswahl der Controller kam es nicht so sehr auf deren Schnelligkeit, sondern auf die zusätzlichen komplexeren Peripheriefunktionen wie z.b. die Controller Area Network (CAN)- oder die Serial Peripheral Interface (SPI)- Schnittstelle, sowie auf die Gröÿe des Speichers an. Ein einzelnes Bild benötigt auf dem DOGXL Display (160 x 104 x 2 Pixel) 4160 Byte, was bei einer Sequenz von nur vier Bildern schon ungefähr 20 kbyte ausmachen kann. Hersteller Controller Flash/RAM ATMEL AVR AT90CAN /4 kbyte NXP lpc /58 kbyte Microchip Tec. dspic33 256/16 kbyte Tabelle 3.1: Übersicht Mikrocontroller Da die Fakultät 04 dem Team ein Keil Evaluationsboard MCB2300 mit einem NXP lpc2368 Controller zur Verfügung gestellt hat, wird auf die alternativen Controller Marc Koraschnigg Diplomarbeit HS München

23 3 Hardware und Entwicklungsumgebung nicht weiter eingegangen. Falls sich in der nalen Version Änderungen am Controller ergeben, kann der C-Code recht einfach portiert werden. Änderungen müssten hauptsächlich bei der Initialisierung gemacht werden. 3.2 Keil Evaluationsboard MCB2300 Das Evaluationsboard MCB2300 (Abbildung 3.1) der Firma Keil ist mit einem 32- Bit lpc2368 (ARM7) Mikrocontroller der Firma NXP Semiconductors (früher ein Unternehmensbereich von Siemens) ausgestattet und dient als Grundlage für die Erarbeitung der Intelligenz des Systems. Der interne RAM Speicher beträgt 58 kbyte und der interne FLASH-ROM Speicher 512 kbyte. Als Ein- und Ausgabe Schnittstellen stehen unter anderem auf dem Board zur Verfügung: ˆ 8 LEDs ˆ 1 analoger Eingang (Potentiometer) ˆ 1 analoger Ausgang (Lautsprecher) ˆ 2 serielle Ports ˆ 2 CAN Ports ˆ 1 Ethernet Verbindung ˆ 1 SD Karten Slot ˆ sowie ein 16 Buchstaben x 2 Linien LCD Die 104 Input/Output(I/O)-Pins können beliebig beschalten werden. Die Spannungsversorgung wird über einen USB Anschluss (5 VDC) bereitgestellt. Marc Koraschnigg Diplomarbeit HS München

24 3 Hardware und Entwicklungsumgebung Abbildung 3.1: Keil Evaluationsboard MCB2300 Das Datenblatt der Mikrocontroller-Reihe lpc23xx bendet sich auf der beigelegten CD. Vorsicht! Es muss darauf geachtet werden, dass die Pin Kongurationen aus Kapitel 8 sowie der Pin Connect Block aus Kapitel 9 nur mit denen des Mikrocontroller lpc2377/78 übereinstimmen und funktionieren und nicht mit dem eigentlich verbauten Mikrocontroller lpc EA DOGXL Display & Backlight EA LED78x64W Als grasche Ausgabe wird das DOGXL Display sowie die Hintergrundbeleuchtung LED 78 x 64W (Abbildung 3.2) der Firma Electronic Assembly verwendet. Das 3,3" groÿe GLCD mit Pixel kann mit 3,3 V betrieben werden und wird über das SPI angesteuert. Mit einer Moduläche von 78 mm 50 mm (Länge Breite) kann das Display wie in Abbildung 3.3 in eine genormte Cockpit-Einheit (Durchmesser: 80 mm) integriert werden. Die Gröÿe der tatsächlichen Sichtäche be- Marc Koraschnigg Diplomarbeit HS München

25 3 Hardware und Entwicklungsumgebung trägt 69 mm 43 mm (Länge Breite) und passt somit in den denierten Bereich. Abbildung 3.2: EA DOGXL Display und Backlight LED78x64W Abbildung 3.3: Dimensionen GLCD & Cockpit-Einheit Zuerst werden das Display und der Beleuchtungskörper (LED 78 x 64W) aufeinander gesteckt. Die Bauart sowie die Anordnung der 22 Pins (Lochraster-Abstand 2,54 mm) ermöglichen ein direktes Einlöten in die Platine. Die 16 Pins auf der Oberseite sind Steuer- und Datenleitungen, die sechs Pins auf der Unterseite dienen zur Beschaltung der Hintergrundbeleuchtung. Abbildung 3.4 und Tabelle 3.2 zeigt das Display mit seinen Pinbelegungen. Marc Koraschnigg Diplomarbeit HS München

26 3 Hardware und Entwicklungsumgebung Abbildung 3.4: LCD Pinbelegung VLCD erzeugt über die beiden Voltage Converter Paare (VB0+, VB0-, VB1+ & VB1-) die Betriebsspannung (VBias) des GLCD. Diese wird bei der Initialisierung geregelt und sollte etwa bei 14 V liegen. VB0+, VB0-, VB1+ & VB1- (Voltage Converter) werden jeweils über einen 2,2 µf miteinander verbunden. Sollten Elektrolyt-Kondensatoren (Elkos) verwendet werden, so muss zusätzlich auf die richtige Polung geachtet werden. CD (Abk. für Command/Data) wird mit Pin 83 vom Keil Board verbunden. Um Bilddaten zu empfangen muss CD auf Low, um Kommandos zu empfangen muss CD auf High gestellt werden. CS (Abk. für Chip Select (Low-Aktiv)) wird direkt auf GND gelegt, da das Display der einzige Slave im System ist und ständig als aktiv selektiert sein kann. RST (Abk. für Reset (Low-Aktiv)) wird direkt auf 3,3 V gelegt, da der Reset nur softwareseitig durchgeführt wird. SDA (Abk. für Serial Data) wird mit Pin 86 vom Keil Board verbunden. Der Master sendet die Daten (Bitweise) seriell bei jeder steigenden Taktanke an das Display. SCK (Abk. für Serial Clock) wird mit Pin 89 vom Keil Board verbunden. Der Master stellt das Taktsignal für das Display bereit. Marc Koraschnigg Diplomarbeit HS München

27 3 Hardware und Entwicklungsumgebung Pin Abk. verbunden mit Beschreibung 17 VLCD GND über einen 220 nf Kondensator auf GND gelegt 18 VB0+ 21 über einen 2,2 µf Kondensator 19 VB1+ 20 über einen 2,2 µf Kondensator 20 VB1-19 über einen 2,2 µf Kondensator 21 VB0-18 über einen 2,2 µf Kondensator 22 VDD 3,3 V direkt auf 3,3 V 23 VDD2/3 3,3 V direkt auf 3,3 V 24 VSS2 GND direkt auf Ground 25 VSS GND direkt auf Ground 26 BM0 GND direkt auf Ground 27 CD 83 direkt zum Pin 83 auf dem Keil Board 28 CS GND direkt auf Ground 29 RST 3,3 V direkt auf 3,3 V 30 D6 3,3 V direkt auf 3,3 V 31 SDA 86 direkt zum Pin 86 auf dem Keil Board 32 SCK 89 direkt zum Pin 89 auf dem Keil Board Tabelle 3.2: Übersicht der 16 Pins des GLCD Das Display kann in vier verschiedenen Modi angesprochen werden, die durch die zwei Pins BM0 und D6 deniert werden. Tabelle 3.3 zeigt die drei SPI Modi, den I 2 C Modus und die dazugehörigen Werte für BM0 und D6. Die Pins werden je nach Beschaltung direkt auf 3,3 V oder GND gelegt. Marc Koraschnigg Diplomarbeit HS München

28 3 Hardware und Entwicklungsumgebung Modus BM0 / D6 4 Wire, 8-Bit SPI 0 / 0 3 Wire, 8-Bit SPI 0 / 1 3 Wire, 9-Bit SPI 1 / 0 2 Wire, I 2 C 1 / 1 Tabelle 3.3: Übersicht der verschieden Ansteuerungsmodi BM0 wird auf GND und D6 auf 3,3 V gelegt (siehe auch Tabelle 3.2), da das GLCD über den 3 Wire, 8-Bit SPI Modus angesteuert wird. Die sechs Pins auf der Unterseite werden wie in Abbildung 3.5 in Reihe miteinander verbunden und über den Step-Up Wandler (CAT4238TD-GT3) angesteuert. Zur Versorgung der LEDs hebt der Wandler die Eingangsspannung auf 47 V. Dabei wird die Beleuchtung durch ein High Signal auf Pin 4 des Bauteils zugeschaltet und kann durch ein Low Signal wieder abgeschaltet werden. Abbildung 3.5: Die Backgroundschaltung Tabelle 3.4 zeigt die im Projekt verwendeten Bauteile zur Beschaltung der Hintergrundbeleuchtung. Marc Koraschnigg Diplomarbeit HS München

29 3 Hardware und Entwicklungsumgebung Bauteil Bezeichnung Wert Step-Up Wandler CAT4238-GT3 Schottky Diode MBRS360T3G 3 A / 60 V Speicher-Induktivität SRR µf Widerstand 15 Ω Elkos 100 nf Tabelle 3.4: Übersicht der verwendeten Bauteile 3.4 µvision3 Integrierte Entwicklungsumgebung Die Integrierte Entwicklungsumgebung (Abkürzung IDE, von engl. integrated development environment) µvision3 liegt in Version 3.85 auf der CD bei. Die grasche Benutzeroberäche vereint mehrere Tools wie Texteditor, Compiler & Intepreter, Linker, Simulator sowie einen Programm Debugger. Auÿerdem liefert die Software den Startup Code für den lpc23xx Mikrocontroller sowie die Header Datei lpc23xx.h, die die Hardware-Peripherie des Mikrocontrollers deniert. Der Startup Code wird sofort nach einem Reset der CPU ausgeführt und initialisiert das MEMMAP Register welches die Einstellungen der Kongurationspins überschreibt. Die Header Datei lpc23xx.h vereint die kompletten Hardware-Denitionen der Peripheriegeräte. In dieser sind u. a. die Denitionen des PINSEL Registers oder die Denitionen der GPIO Register inklusive der zugehörigen Speicheradressen enthalten. Das Programm muss nach der Installation mit der Product Serial Number (PSN) lizenziert werden. Es handelt sich hierbei um eine Single-User License, die nur eine Installierung auf zwei Computern ermöglicht. Den Installationsablauf sowie Ansprechpartner und Servicenummer der Firma Keil sind im Anhang zu nden. Wenn die nale Projektdatei final.uv2 geladen und kompiliert ist, so wird ein hex-le mit dem Namen nal.hex von µvision im selben Ordner erzeugt. Sollte dies nicht der Fall sein, so kann über den Reiter Flash Congure Flash Tools... Output das Häckchen bei Create HEX File gesetzt werden. Dieses Hex-File wird später mittels der Flash Magic Software auf den Mikrocontroller übertragen. Marc Koraschnigg Diplomarbeit HS München

30 3 Hardware und Entwicklungsumgebung 3.5 Flash Magic Software Die Flash Magic Software in der Version von Embedded Systems Academy liegt auf der CD bei oder kann kostenlos über die Internetadresse flashmagictool.com/ heruntergeladen werden. Das Keil Evaluationsboard wird am COM0 Port mit einem seriellen Kabel an den COM Port am PC angeschlossen. Einstellungen die zur Kommunikation dienen können unter Step 1 konguriert werden. Abbildung 3.6 zeigt die nötigen Einstellungen. Abbildung 3.6: Das Flash Magic Tool und die nötigen Einstellungen Durch ein Anklicken des Startbuttons beginnt der Flash-Vorgang und es wird der Mikrocontroller mit den kompilierten Informationen aus dem Hex-File beschrieben. Sobald die Verizierung abgeschlossen ist, wird ein Reset ausgelöst und der neue Programmcode ausgeführt. Marc Koraschnigg Diplomarbeit HS München

31 4 Softwareentwicklung 4 Softwareentwicklung Die Softwareentwicklung stellt den gröÿten und wichtigsten Bereich dieser Diplomarbeit dar. Sie initialisiert die angeschlossene Peripherie, steuert und berechnet Informationen und gibt diese auf einem GLCD aus. In Abbildung 4.1 ist der Aufbau der Software schematisch dargestellt. Abbildung 4.1: Softwarekonzept Als erstes werden die Schnittstellen GPIO, LED, CAN, GLCD, SPI, RTC und die des Scheduler initialisiert. Bei der Initialisierung werden die Pins mit den gewünschten Eigenschaften deniert und Taktraten festgelegt. Nach dieser ist die Peripherie in einem sogenannten Ausgangszustand, der nun von der Software angesprochen und gesteuert werden kann. Die Initialisierung erfolgt nur wenn die Hardware eingeschaltet wird oder nach einem Hardware-Reset. Marc Koraschnigg Diplomarbeit HS München

32 4 Softwareentwicklung Das einfache Betriebssystem ermöglicht Tasks zu priorisieren und kooperatives Multitasking. Auÿerdem dient es zur Strukturierung und Übersicht des Programmcodes. Die verschiedenen Tasks werden softwaremäÿig nach voreingestellten Zyklen aufgerufen und komplett abgearbeitet. Die shutdown Sequenz tritt beim betätigen des OFF Tasters ein. Dies ist nötig, da die intern generierte LCD Bias Spannung beim abrupten Ausschalten ein Entladen der Kondensatoren über den integrierten LCD Controller (uc1610) zur Folge hat und diese den Controller nach längerem Gebrauch zerstören kann. 4.1 Peripherieinitialisierung Der Mikrocontroller lpc2368 verfügt über diverse Schnittstellen, die zur Interaktion verschiedener Bauteile dienen. So wird die Kommunikation der Akkupacks, die Informationen zum Ladezustand enthalten, über das CAN Protokoll übertragen. GLCDs werden meist über die serielle Schnittstelle (SPI, I 2 C, usw.) oder über die parallele Schnittstelle angesteuert. Serielle Schnittstellen haben zum Vorteil, dass weniger Leitungen zur Datenübertragung benötigt werden. Beim SPI liegen diese bei drei Leitungen in der Minimalkonguration. Hingegen benötigen parallele Schnittstellen vier oder acht Datenleitungen, können allerdings dabei die Daten im 4- oder 8-Bit Modus half Byte- oder Byte-weise schneller übertragen. Der EA DOG XL Liquid Crystal Display (LCD) kann bei einer 3 Wire, 8Bit SPI Übertragung mit einer Taktrate von bis zu SCK = 8MHz betrieben werden, jedoch allerdings nur bis zur Hälfte des Systemtakts von 12MHz/2 = 6MHz General Purpose Input/Output (GPIO) GPIO (dt. Universelle Ein- und Ausgabeports) dienen u.a. zur Ansteuerung einfacher Peripherie wie Schalter, Taster, LEDs usw., können aber auch komplexere Teilaufgaben wie die Ansteuerung eines LC Displays übernehmen. Die Initialisierung wird in der Datei GPIO.c vorgenommen. Der ARM lpc23xx verfügt über eine Vierfachbelegung der meisten Pins, daraus folgt, dass jedem Pin, im Marc Koraschnigg Diplomarbeit HS München

33 4 Softwareentwicklung folgenden nur noch Port 1 (Tabelle 4.1). genannt, 2 Bits zur Konguration zur Verfügung stehen Binärwert Ausgewählte Funktion 00 Primäre Funktion (meist GPIO's) 01 Erste alternative Funktion 10 Zweite alternative Funktion 11 Dritte alternative Funktion Tabelle 4.1: Übersicht der Funktionen des PINSELx Registers Initialisierung der GPIOs Die Initialisierung der GPIOs erfolgt über eines der 32 Bit PINSELx Register. Die ersten 16 Ports (Port 0.0 Port0.15) werden dabei über das PINSEL0 Register initialisiert, Port0.16 Port0.31 über das PINSEL1 Register usw. In Tabelle 4.2 ist das Register PINSEL0 mit seinen zugehörigen Bits dargestellt. Port Bits Tabelle 4.2: Übersicht des PINSEL0 Registers Da die erste primäre Funktion in allen Fällen die Pins als GPIO konguriert, werden durch den Aufruf der Funktion die beiden 32 Bit Register PINSEL0 und PINSEL1 mit 0 deniert und dabei die Ports 0.0 bis Port 0.31 als GPIOs konguriert. 1 void r e s e t _ p i n s e l ( void ) 2 { 3 PINSEL0 = 0 x ; 4 PINSEL1 = 0 x ; 5 } Die internen Pull-Up oder Pull-Down Widerstände können über das PINMO- DEx Register für jeden Port aktiviert bzw. deaktiviert werden. Das 32 Bit Register 1 Jeder Pin ist genau einem Port zugeteilt Marc Koraschnigg Diplomarbeit HS München

34 4 Softwareentwicklung ähnelt dem PINSELx Register. Auch hier ist das PINMODE0 Register für die ersten 16 Ports zuständig (Port Port 0.15). Tabelle 4.3 zeigt die verschiedenen Einstellmöglichkeiten des PINMODEx Registers. Binärwert Funktion 00 Pull-Up 01 Reserviert 10 No Pull-Up/Pull-Down 11 Pull-Down Tabelle 4.3: Übersicht der Funktionen des PINMODEx Registers Standardmäÿig ist an jedem Port der Pull-Up Widerstand aktiviert. Die Pins, die später als Eingänge initialisiert werden, müssen über das PINMODE Register den internen Pull-Down Widerstand aktivieren. Ansteuerung der GPIO Ports Die Ein- und Ausgabeports (GPIOs) werden durch vier Register gesteuert (Tabelle 4.4) IODIRx IOSETx IOCLRx IOPINx Bestimmt PIN als Eingang(0) oder Ausgang(1) Setzt den PIN auf HIGH Setzt den PIN auf LOW Liest den Zustand des ausgewählten Pins Tabelle 4.4: Übersicht der vier Steuerregister IODIRx bestimmt ob der ausgewählte Pin als Eingang(0) oder als Ausgang(1) de- niert werden soll. IOSETx setzt den Pin auf HIGH (logische '1'). Marc Koraschnigg Diplomarbeit HS München

35 4 Softwareentwicklung IOCLRx setzt den Pin auf LOW (logische '0'). IOPINx liest den aktuellen Zustand des ausgewählten Registers ein. Das x steht für die Register, also IODIR0 für das PINSEL0 & PINSEL1 Register, IODIR1 für das PINSEL2 & PINSEL3 Register usw Serial Peripheral Interface (SPI) SPI [Wik10d] ist ein synchroner serieller Datenbus, der einst von Motorola entwickelt wurde, um digitale Schaltungen nach dem Master-Slave-Prinzip zu verbinden. Das Interface wird in diesem Fall für die serielle Kommunikation zwischen dem Mikrocontroller (Master) und dem LC Display (Slave) verwendet (Abbildung 4.2). Abbildung 4.2: Übersicht der SPI Verbindung 4 Wire zwischen Mikrocontroller und LC Display Tabelle 4.5 zeigt die Abkürzungen der drei Daten- und der Chip-Select-Leitung für den Slave. SCK MOSI oder SDI MISO oder SDA CS oder SS Serial Clock Master Out Slave In Master In Slave Out Chip Select Tabelle 4.5: Abkürzungen des SP Interface Die Initialisierung der SPI wird in der Datei SPI.c durch die Funktion SPI_Init() vorgenommen. Marc Koraschnigg Diplomarbeit HS München

36 4 Softwareentwicklung 1 void SPI_Init ( void ) 2 { 3 PINSEL0 = 0xC ; // SCK Port PINSEL1 = 0 x ; // Mosi Port S0SPCCR = 6 ; // Clock Counter ( 2MHz) 7 8 S0SPCR = 0x00 ; // d e l e t e Control R e g i s t e r 9 S0SPCR = 0xA0 ; // MSB, SPIE enable i f (S0SPINT & 0x01 ) // i f i n t e r r u p t f l a g i s s e t 12 { 13 S0SPINT = 0x01 ; // r e s e t i n t e r r u p t f l a g 14 } 15 } PINSEL0 = 0xC ; belegt den Port 0.15 (Bits 30 & 31 auf 1 gesetzt) mit der dritten alternativ Funktion. Alle anderen Werte im Register bleiben unverändert. Port 0.15 (Pin 89) stellt somit als Master das SPI Taktsignal SCK für das GLCD (Slave) bereit. PINSEL1 = 0x ; belegt den Port 0.18 (Pin 86) mit der Funktion des SPI MOSI S0SPCCR = 6; setzt den generierte SPI Takt auf 2 MHz. Der übergebene Wert 6 ist der Divisor und teilt den Systemtakt (12 MHz / 6 = 2 MHz). Abbildung 4.3 zeigt die im Projekt verwendete SPI 3/4-Wire Serial Mode. Das die Daten bei steigender Taktanke mit dem Most Signicant Bit (MSB) zuerst ins Register geschoben werden (D7...D0), ist hierbei gut zu erkennen. Die Einstellungen nden sich bei der Initialisierung im Register S0SPCR wieder. Mit dem Wert 0xA0 werden die oben genannten Eigenschaften realisiert und der SPI Interrupt zu geschaltet. Das Chip Select (CS) Signal kann fest auf Masse liegen, da das GLCD der einzige Slave ist. Der Command/Data (CD) Pin muss vor jeder Sendung beim Übertragen von Daten auf 1 oder beim Übertragen von Kommandos auf 0 gezogen werden. Marc Koraschnigg Diplomarbeit HS München

37 4 Softwareentwicklung Abbildung 4.3: Übersicht der SPI 3/4-Wire Serial Mode Dies wurde in den beiden Funktionen GLCD_SendData() und GLCD_SendCmd() realisiert. Zeile 4 zieht den CD Pin auf High. 1 /* Function t o send Data */ 2 void GLCD_SendData( uint8 * SData, uint16 i ) 3 { 4 IOSET0 = (1<<CD) ; /* CD High */ 5 SPI_transfer ( SData, i ) ; 6 } Zeile 4 zieht den CD Pin auf Low. 1 /* Function t o send Commands */ 2 void GLCD_SendCmd( uint8 * SCmd, uint8 i ) 3 { 4 IOCLR0 = (1<<CD) ; /* CD Low */ 5 SPI_transfer (SCmd, i ) ; 6 } Die Daten oder Kommandos werden dann an die Funktion SPI_transfer() weitergereicht und von dort an das Display gesendet (Zeile 6). 1 /* Function t o send Data/Commands t o t h e LCD */ 2 void SPI_transfer ( uint8 * DATA, uint8 i ) 3 { 4 while ( i ) 5 { 6 S0SPDR = *DATA; /* Transmit data */ 7 while (! ( S0SPSR & 0x80 ) ) ; 8 DATA++; /* Increment the p o i n t e r on the array */ 9 i ; /* Decrement the Byte counter */ 10 } Marc Koraschnigg Diplomarbeit HS München

38 4 Softwareentwicklung 11 while (! ( S0SPSR & 0x80 ) ) ; / * Wait u n t i l S0SPSR b u f f e r i s ready? */ 12 } Da die Daten/Kommandos als Adressen übergeben werden, ndet die Dereferenzierung (*DATA) direkt vor der Übergabe an das S0SPDR Register statt. Die Adresse des Datenarrays wird inkrementiert, die Anzahl des Byte-Counters dekrementiert bis der Wert 0 ist. Am Ende wird das S0SPSR Register erneut auf Ready überprüft bevor es die Funktion wieder verlässt. Diese Abkapselung macht es für den Programmierer einfach, da er an jeder Stelle im Code weiÿ, ob Daten oder Kommandos an das GLCD übertragen werden Initialisierung des Grak LCDs Die Initialisierung des GLCDs wird in der Datei glcd.c durch den Funktionsaufruf GLCD_Init() vorgenommen. Das Datenblatt vom Display DOGXL sowie vom integrierten Controller uc1610 benden sich auf der beigelegten CD. Der korrekter Ablauf (Abbildung 4.4) ist essentiell für einen fehlerfreien Betrieb. Nach dem Einschalten der Hardware muss 5 bis 10 ms gewartet werden, bis das Display bereit zum Empfang der Initialisierung ist. Nach dieser Sequenz wird durch den Befehl Set_Display_Enable mit der Adresse 0xAF das GLCD aktiviert. Abbildung 4.4: Ablauf der GLCD Initialisierung Bei der Initialisierung sind elf Kommandos unersetzlich. Diese werden am Anfang Marc Koraschnigg Diplomarbeit HS München

39 4 Softwareentwicklung in der Datei glcd.c deniert und als Konstanten im Array LcdInitMacro gespeichert. Die Kommandos teilen sich in zwei Gruppen, die sog. Single-Byte Commands und die Double-Byte Commands auf. Single-Byte Commands bestehen aus einem Byte (8 Bit) wobei sich die Anzahl an statischen und dynamischen Bits von Kommando zu Kommando unterscheidet. Double-Byte Commands bestehen aus zwei Bytes (16 Bits), das erste Byte ist in jedem Fall statisch und leitet den Befehl ein, das zweite ist dynamisch und kann durch verschiedene Belegungen unterschiedlich gestellt werden. Die Beschreibung der Kommandos bendet sich im Anhang B. 1 #d e f i n e Set_Com_End_H 0xF1 2 #d e f i n e Set_Com_End_L 0x67 3 #d e f i n e Set_LCD_Mapping_Control 0xC0 4 #d e f i n e Set_Scroll_Line_LSB 0 x40 5 #d e f i n e Set_Scroll_Line_MSB 0 x50 6 #d e f i n e Set_Panel_Loading 0x2B 7 #d e f i n e Set_Pump_Control 0x2F 8 #d e f i n e Set_LCD_Bias_Ratio 0xEB 9 #d e f i n e Set_Vbias_Potentiometer_H 0 x81 10 #d e f i n e Set_Vbias_Potentiometer_L 0x5F 11 #d e f i n e Set_RAM_Address_Control 0 x89 12 #d e f i n e Set_Display_Enable 0xAF uint8 LcdInitMacro []={ // DogXL160 I n i t i a l i z a t i o n Commands 15 Set_Com_End_H, 16 Set_Com_End_L, Set_RAM_Address_Control, 19 Set_Display_Enable, 20 } ; void GLCD_Init( void ) 23 { 24 GLCD_SendCmd( LcdInitMacro, 1 2 ) ; // I n i t LCD 25 } Durch den Funktionsaufruf GLCD_SendCmd() werden die zwölf vordenierten Variablen als Kommandos an das Display geschickt. Set_Display_Enable setzt das Marc Koraschnigg Diplomarbeit HS München

40 4 Softwareentwicklung Display aktiv und wartet bis Bildinformationen in Form von Arrays geschickt werden Real Time Clock (RTC) Die Real Time Clock (RTC) (dt. Echtzeituhr) wird in diesem Projekt als Parameter für die Integration des Stromes über der Zeit verwendet. Sie wird aus dem Prozessortakt gewonnen und inkrementiert die Sekunden. Nach 60 Sekunden wird das Minutenregister um eins erhöht, nach 60 Minuten das Stundenregister usw. Bei der Initialisierung muss zunächst der Teiler für die Systemfrequenz ermittelt werden. Die Quarz Frequenz beträgt 12 MHz. 1 uint32 CCLK = ; // Quartz Frequence 2 3 RTC_PREINT = (CCLK / 32768) 1; // I n t i g e r d i v i s o r 4 RTC_PREFRAC = CCLK ( (RTC_PREINT+1) * ) ; // c a l c u l a t e f l o a t 5 // d i v i s o r Ist der Systemteiler berechnet, erfolgt ein Reset der RTC (Zeile 1) gefolgt von der Vor-Denition der Zeit (Zeile 3-9). 1 RTC_CCR = 0x2 ; // r e s e t RTC 2 3 RTC_HOUR = 0 ; // s e t Hour, Minute and Second 4 RTC_MIN = 0 ; 5 RTC_SEC = 0 ; 6 7 RTC_DOM = 0 ; // s e t Day Of Month, Month and Year 8 RTC_MONTH = 0 ; 9 RTC_YEAR = 0 ; Die RTC wird durch die Funktion start_rtc() gestartet. Dabei wird das Register RTC_CCR mit dem Wert 0x1 belegt (Zeile 3), um das erste Bit auf 1 zu setzen. Die Variablen old_value und rtc werden auf 0 bzw. auf ON gesetzt (Zeile 4 & 5). 1 void start_rtc ( void ) 2 { Marc Koraschnigg Diplomarbeit HS München

41 4 Softwareentwicklung 3 RTC_CCR=0x1 ; // s t a r t RTC 4 old_value = 0 ; // r e s e t old_value 5 r t c = ON; // s e t RTC Flag ON 6 } Durch die Funktion stop_rtc() wird die RTC wieder gestoppt. Dabei wird das Register RTC_CCR mit dem Wert 0x0 initialisiert (Zeile 3). Die Variable rtc wird auf OFF und die Register Stunden, Minuten und Sekunden zurück auf 0 gesetzt (Zeile 4-8). 1 void stop_rtc( void ) 2 { 3 RTC_CCR=0x0 ; // stop RTC 4 r t c = OFF; // s e t RTC Flag OFF 5 6 RTC_HOUR = 0 ; // s e t Hour, Minute and Second 7 RTC_MIN = 0 ; 8 RTC_SEC = 0 ; 9 } Battery RAM (NVRAM) Der Mikrocontroller lpc2368 verfügt über einen 2 kbyte groÿen Battery RAM. Dieser bendet sich an der Speicheradresse 0xE und kann nur Wortweise (32 Bit) angesprochen werden. Er ist isoliert vom Rest des Controllers und kann durch das Anlegen einer 3 V Batterie auch ohne Hauptstromversorgung betrieben werden. Der aktuelle Ladezustand der Akkus wird nach jeder Berechnung in diesen Speicher geschrieben, damit dieser auch nach einer Stromunterbrechung noch verfügbar ist. Der Speicherbereich wird in der Header-Datei LPC23xx.h deniert. 1 /* Battery RAM */ 2 #d e f i n e BATTERY_RAM_ADDR 0 xe #d e f i n e BATT_RAM ( * ( v o l a t i l e unsigned long * ) (BATTERY_RAM_ADDR) ) BATT_RAM kann jetzt als Variable im Code verwendet werden, z. B. wie in Zeile 2, bei der Zuweisung der Gesamtladekapazität. Der Hexadezimalwert 0x0000F1E0 Marc Koraschnigg Diplomarbeit HS München

42 4 Softwareentwicklung (= Dezimalwert 61920) entspricht dabei der Ladekapazität in As (Ampere Sekunden). 1 /* s e t b a t t e r y RAM to 0x0000F1E0 */ 2 BATT_RAM = 0 x0000f1e0 ; Die 3 V Knopfzelle wird wie in Abbildung 4.5 an den Pin 27 des Evaluationsboard angeschlossen. Abbildung 4.5: Batterieanschluss Controller Area Network (CAN) Der CAN-Bus [Wik10a] ist ein asynchrones, serielles Bussystem und gehört zu den Feldbussen. Er wurde 1983 von Bosch speziell für die Vernetzung von Steuergeräten in Automobilen entwickelt. Vorteile sind unter anderem geringe Kosten, hohe Zuverlässigkeit, Flexibilität und Geschwindigkeit. Der CAN-Bus arbeitet nach dem CSMA/CR (Carrier Sense Multiple Access / Collision Resolution)-Verfahren. Dabei werden Kollisionen beim Buszugri durch die Arbitrierung 2 oder Bit-Arbitrierung aufgelöst. Die bei CSMA/CR benutzte Arbitrierung erfolgt auf Basis der Prioritäten, mit denen die einzelnen Stationen ihre Daten über das Übertragungsmedium übertragen. Die Arbitrierung erfolgt nur dann, wenn mehrere Stationen gleichzeitig auf das Übertragungsmedium zugreifen. Die Akkupacks von Clean Mobile verfügen über eine CAN-Schnittstelle über die Informationen zur Ladekapazität abgegrien werden können. Da die Batterien zum Zeitpunkt dieser Diplomarbeit noch nicht verfügbar waren, wurde keine Initialisierung des CAN Busses durchgeführt. 2 Die Arbitration ist ein Zugangsverfahren, bei dem sich die Nutzer nach einer gegenseitigen Vereinbarung das Zugangsrecht bestimmen. Marc Koraschnigg Diplomarbeit HS München

43 4 Softwareentwicklung Initialisierung der LEDs und des Zeilen-LCDs Die Onboard-LEDs sowie das Onboard-LCD (16 Zeichen x 2 Zeilen) wurden nur für die Entwicklung initialisiert und genutzt. Da diese Komponenten in der nalen Version wegfallen, wird in dieser Diplomarbeit nicht weiter darauf eingegangen. Die Initialisierungen sind weiterhin im C Code verfügbar und müssen nur bei Verwendung anderer Hardware auskommentiert werden. Der Example Code wurde von der Firma Keil mitgeliefert und unverändert im Projekt übernommen. 4.2 Das Betriebssystem (kooperatives Multitasking) Beim kooperativen Multitasking [Wik10b] wird durch die zentrale Prozessverwaltung die Rechenleistung nacheinander an die gestarteten Tasks abgegeben. Jede Task wird, sofern sie aufgerufen wurde, komplett abgearbeitet. Die Tasks können unterschiedlich in der scheduler.h priorisiert werden. Bekommt zum Beispiel eine Task den Wert 50 zugewiesen, so wird diese alle 50 Betriebssystem-Zyklen wiederholt und abgearbeitet. Zudem ist es ressourcensparend, einfach und übersichtlich gehalten und durch die deterministische Arbeitsweise zeitlich und logisch vorhersehbar. Diese Form des Multitasking hat aber auch den Nachteil, dass Fehler in einer Task, das gesamte System zum Stillstand bringen können Initialisierung und Funktionsweise des Betriebssystems Die Initialisierung des Betriebssystems (Scheduler) wird in der Datei scheduler.c durch den Funktionsaufruf scheduler_init() vorgenommen. Dabei werden alle de- nierten Tasks auf READY gesetzt und erhalten die in der dazugehörigen Header Datei denierten START_PRIORITAET. 1 f o r ( x = 0 ; x < MAX_TASK_SCHEDULER; x++) 2 { 3 s c h e d u l e r _ s t a t e [ x ] = READY; / * s e t a l l t a s k s ready */ 4 scheduler_prio [ x ] = START_PRIORITAET; Marc Koraschnigg Diplomarbeit HS München

44 4 Softwareentwicklung 5 } Das Projekt besteht aus drei Tasks, die in der scheduler.h deniert wurden. 1 /* task names */ 2 #d e f i n e MAIN_PROGRAM_TASK 0 3 #d e f i n e READ_BUTTONS_TASK 1 4 #d e f i n e BATTERY_STATE_TASK 2 Das Hauptprogramm (Zeile 2) und die Berechnung der Ladekapazität (Zeile 4) werden alle 50 und das Einlesen der Schalter (Zeile 3) alle 10 Betriebssystem-Zyklen aufgerufen und abgearbeitet. 1 // d e f i n e p r i o r i t y (0 0xFFFFFFFF) 2 #d e f i n e MAIN_PROGRAM_PRIO 50 / * r e p e a t s every 50 c y c l e s */ 3 #d e f i n e READ_BUTTONS_PRIO 10 / * r e p e a t s every 10 c y c l e s */ 4 #d e f i n e BATTERY_STATE_PRIO 50 / * r e p e a t s every 50 c y c l e s */ Das kooperative Multitasking Betriebssystem bendet sich in der Datei scheduler.c und wird durch die Funktion scheduler() nach der Initialisierung der Peripheriegeräte aufgerufen und gestartet. Diese Funktion ist als Endlosschleife programmiert. Erhält die Task den Status READY (Zeile 3), wird ihre Priorität überprüft (Zeile 5). Bei jedem Durchlauf wird diese um 1 dekrementiert (Zeile 7), bis sie nicht mehr gröÿer ist als 0. Dann nämlich erhält die Task das BUSY-Flag (Zeile 11) und die darunterliegenden Funktionen werden ausgeführt (Zeile 12). Nach der Abhandlung erhält die Task wieder den Status READY (Zeile 13) und die Priorität wird auf den vordenierten Wert gesetzt (Zeile 14). 1 while ( 1 ) 2 { 3 i f ( s c h e d u l e r _ s t a t e [MAIN_PROGRAM_TASK] == READY) 4 { 5 i f ( scheduler_prio [MAIN_PROGRAM_TASK] > 0x00 ) 6 { 7 scheduler_prio [MAIN_PROGRAM_TASK] ; 8 } 9 e l s e 10 { 11 s c h e d u l e r _ s t a t e [MAIN_PROGRAM_TASK] = BUSY; Marc Koraschnigg Diplomarbeit HS München

45 4 Softwareentwicklung 12 main_program ( ) ; 13 s c h e d u l e r _ s t a t e [MAIN_PROGRAM_TASK] = READY; 14 scheduler_prio [MAIN_PROGRAM_TASK] = MAIN_PROGRAM_PRIO; 15 } 16 } i f ( s c h e d u l e r _ s t a t e [BATTERY_STATE_TASK] == READY) 19 { 20 /* analog zu oben */ 21 } i f ( s c h e d u l e r _ s t a t e [READ_BUTTONS_TASK] == READY) 24 { 25 /* analog zu oben */ 26 } 27 } Die beiden anderen Tasks verfahren analog Programmablauf Als Einstiegsfunktion jedes C Programms wird automatisch die main() Funktion aufgerufen, die sich in der Datei main.c bendet. Die Initialisierung der Peripherie und des Betriebssystems wird gestartet (Zeile 6-12). Nach den 5-10 ms (Zeile 13), die das GLCD zur Initialisierung benötigt, wird die aktuelle Softwareversion auf dem Onboard LCD ausgegeben (Zeile 16). Nachfolgend wird einmalig der letzte aktuelle Stand der Ladekapazität aus dem NVRAM eingelesen (Zeile 19), gefolgt von dem Funktionsaufruf (Zeile 20) zur Berechnung der prozentualen Ladekapazität. Die Startsequenz wird in Zeile 23 aufgerufen, sie gibt die aktuelle Softwareversion für etwa 3 Sekunden aus. Als letztes wird das Betriebssystem durch den Aufruf aus Zeile 26 gestartet. 1 i n t main ( void ) 2 { 3 wait ( onesec ) ; 4 5 /* I n i t i a l i z i n g p e r i p h e r y */ 6 GPIO_Init ( ) ; Marc Koraschnigg Diplomarbeit HS München

46 4 Softwareentwicklung 7 LED_Init ( ) ; 8 LCD_Init ( ) ; 9 RTC_Init ( ) ; 10 s c h e d u l e r _ i n i t ( ) ; 11 SPI_Init ( ) ; 12 GLCD_Init ( ) ; 13 wait ( inittime ) ; /* w r i t e s the s o f t w a r e v e r s i o n to the onboard l c d */ 16 disp_sw ( ) ; /* read b a t t e r y c a p a c i t y from nvram & c a l c u l a t e b a t t e r y percentage */ 19 read_nvram ( ) ; 20 calc_percent_value ( ) ; /* s t a r t i n g s t a r t sequence */ 23 start_seq ( ) ; /* s t a r t i n g o p e r a t i n g system */ 26 s c h e d u l e r ( ) ; r eturn 1 ; 29 } Read Buttons Task Durch den Aufruf der Funktionen zum Auslesen der Taster und Schalter werden sog. Globale Variablen mit den aktuellen Zuständen deniert und an verschiedenen Stellen im Code weiterverarbeitet. Abschnitt 4.3 zeigt die Vorgehensweise zum Einlesen der Schalter. Main Program Task Die Aufgabe des Hauptprogramms besteht darin, den Zustand des Bedienhebels weiter zu verarbeiten. Die folgende if - Anweisung steuert die Eingabe des Piloten und gibt weitere Informationen grasch dazu aus. Marc Koraschnigg Diplomarbeit HS München

47 4 Softwareentwicklung Ist die globale Variable control_lever_state, die durch die Read Button Task ständig den aktuellen Zustand des Bedienhebels erhält, auf cl_o gesetzt (Zeile 3), wird der unten gezeigte Codeblock ausgeführt. Zeile 6 überprüft die Variable main_state auf ihren Zustand. Wird der Bedienhebel von Position 1 auf Position OFF geschoben, ist die Variable beim ersten Durchlauf noch auf ihren alten Zustand cl_pos1 und die Sequenz des einfahrenden Propellers wird durch den Aufruf aus Zeile 8 gestartet. Zeile 10 weist dann der main_state - Variable den neuen aktuellen Zustand zu, bevor die Funktion hmi_250ms() zur Erstellung der Bilder aufgerufen wird (Zeile 11). 1 /******************************************************************** / 2 /* c o n t r o l l e v e r on P o s i t i o n OFF */ 3 i f ( c o n t r o l _ l e v e r _ s t a t e == c l _ o f f ) 4 { 5 /* c o n t r o l l e v e r comes from Pos 1 s t a t e > c a l l going down sequence */ 6 i f ( main_state == cl_pos1 ) 7 { 8 prop_goingdown_seq ( ) ; 9 } 10 main_state = c l _ o f f ; 11 hmi_250ms ( ) ; /* s e t p r o p e l l e r power OFF */ 14 prop_power = OFF; 15 } 16 /*****/ /******************************************************************** / 19 /* c o n t r o l l e v e r on P o s i t i o n 1 */ 20 e l s e i f ( c o n t r o l _ l e v e r _ s t a t e == cl_pos1 ) 21 { /* analog zu oben */ 23 } 24 /*****/ /******************************************************************** / 27 /* c o n t r o l l e v e r on P o s i t i o n 2 */ 28 e l s e i f ( c o n t r o l _ l e v e r _ s t a t e == cl_pos2 ) 29 { /* analog zu oben */ 31 } 32 /*****/ Marc Koraschnigg Diplomarbeit HS München

48 4 Softwareentwicklung /******************************************************************** / 35 /* c o n t r o l l e v e r on P o s i t i o n 3 */ 36 e l s e i f ( c o n t r o l _ l e v e r _ s t a t e == cl_pos3 ) 37 { /* analog zu oben */ 39 } 40 /*****/ Die restlichen drei else if - Anweisungen sind analog zu dieser aufgebaut. Bei Position 1 wird jedoch noch unterschieden, ob der Bedienhebel von Position OFF oder von Position 2 geschoben worden ist. Eine Sequenz wird dementsprechend abgespielt. Die Funktion hmi_250ms() kopiert das Bild je nach Zustand aus vier Teilen zusammen und übergibt das neue Array an die Funktion write_fullpic(). 1 void hmi_250ms ( void ) 2 { 3 /* c r e a t e p i c t u r e */ 4 create_firstrow ( calc_perc ) ; 5 create_secondrow ( ) ; 6 create_thirdrow ( ) ; 7 create_fourthrow ( calc_time ) ; 8 9 /* draws p i c t u r e on the s c r e e n */ 10 w r i t e _ f u l l p i c ( ( uint8 *) s c r e e n ) ; 11 } Die Zusammensetzung wie auch die Übertragung der Bilddaten an den Displayspeicher werden in Kapitel 5 genau erläutert. Battery State Task Die globalen Variablen calc_perc (Zeile 4) und calc_time (Zeile 7) werden nach dem Aufruf der Task berechnet und liefern zu jeder Zeit den aktuellen prozentualen Wert der Kapazität sowie die Restladezeit. Marc Koraschnigg Diplomarbeit HS München

49 4 Softwareentwicklung Abschnitt 4.5 zeigt die genaue Vorgehensweise zur Berechnung der oben genannten Werte. 4.3 Einlesen der Schalter, Taster und Schieber Auf dem Demoboard benden sich sechs Taster, ein Schalter und ein Schieber die verschiedene Aufgaben übernehmen. So ist der Schieber, auf dem Board als Control Lever bezeichnet, mit seinen drei Stellungen als Simulation des Bedienhebels im Cockpit zu sehen. Abbildung 4.6 zeigt den Schieber und seine Funktionsweise im Schnittbild. Abbildung 4.6: Funktionsweise des Schiebers Wird der Schieber von Position OFF auf Position 1 geschoben, liegen 3,3 V am Pin 10 auf dem Keil Board an. Auf Position 2 liegen die 3,3 V an Pin 11 an. Diese Technik ermöglicht es, die verschiedenen Zustände im Code auszulesen und weiter zu verarbeiten. Dafür müssen die beiden GPIOs (Pin 10 & 11) als Eingang geschaltet und die internen Pull-Down Widerstände aktiviert werden. Position 3 kam erst im Laufe der Arbeit hinzu und wird vom Schalter realisiert. Marc Koraschnigg Diplomarbeit HS München

50 4 Softwareentwicklung Pin 11 als Eingang denieren Jeder Pin ist einem Port zugeteilt. Pin 11 ist im Datenblatt (LPC23XX User Manual) des Mikrocontroller (Abbildung 4.7) mit Port 0.24 assoziiert. Abbildung 4.7: Auszug aus dem Datenblatt (LPC23XX UM) des Mikrocontroller Um diesen Pin nun als Eingang zu schalten, wird zuerst durch das PINMODE1 Register der Pull-Down Innenwiderstand aktiviert 1 PINMODE1 = 0 x ; / * Bit 16 & 17 auf '1 ' */ und dann über das IODIR0 Register der Pin als Eingang geschaltet. 1 IODIR0 &= ~(1<<24); /* Port 24 auf '0 ' */ Zustand von Pin 10 & 11 abfragen Um die Zustände der Pins abzufragen, wird die Funktion read_control_lever() von der Task aufgerufen und abgearbeitet. Die zwei deklarierten Variablen cl_state1 und cl_state2 werden durch den Funktionsaufruf getpinstate(pinx) mit dem übergebenen Pin deniert (Zeile 3 & 4), später in der if-anweisung überprüft (Zeile 6 & 10), bevor sie der globalen Variable control_lever_state den Wert zuweisen. 1 void read_control_lever ( void ) 2 { uint8 cl_state1, c l _ s t a t e 2 ; 3 c l _ s t a t e 1 = getpinstate ( PIN10 ) ; 4 c l _ s t a t e 2 = getpinstate ( PIN11 ) ; 5 6 i f ( c l _ s t a t e 1 == 1 && c l _ s t a t e 2 == 0) 7 { 8 c o n t r o l _ l e v e r _ s t a t e = cl_pos1 ; Marc Koraschnigg Diplomarbeit HS München

51 4 Softwareentwicklung 9 } 10 e l s e i f ( c l _ s t a t e 2 == 1 && c l _ s t a t e 1 == 0) 11 { 12 c o n t r o l _ l e v e r _ s t a t e = cl_pos2 ; 13 } 14 e l s e 15 { 16 c o n t r o l _ l e v e r _ s t a t e = c l _ o f f ; 17 } 18 } Die Funktion getpinstate() speichert erst die kompletten Zustände des IOPIN0 Registers in der Variable pinblockstate (Zeile 3) und überprüft diese mit der übergebene Pin-Nummer (Zeile 5). Liegen 3,3 V an, so gibt die Funktion eine 1, bei 0 V eine 0 zurück (Zeile 7). 1 uint8 getpinstate ( uint8 pinnumber ) 2 { // Read the c u r r e n t s t a t e o f a l l pins in GPIO block 0 3 i n t pinblockstate = IOPIN0 ; 4 // Read the value o f ' pinnumber ' 5 i n t p i n S t a t e = ( pinblockstate & (1 << pinnumber ) )? 1 : 0 ; 6 // Return the value o f p i n S t a t e 7 r eturn p i n S t a t e ; 8 } 4.4 Ausgangssignale Um Ausgangssignale, wie die Ansteuerung der Kupplung oder das Starten des Verbrennungsmotors, zu erzeugen, werden GPIOs als Outputs deniert und durch die Befehle IOSET0 und IOCLR0 auf High oder Low gesetzt. So können diese Signale später an weiteren elektronischen Bauteilen verarbeitet werden um beispielsweise die Kupplung 1 (clutch 1) zu önen oder zu schlieÿen. 1 void GPIO_Init ( void ) 2 { 3 r e s e t _ p i n s e l ( ) ; IODIR0 = (1<<Clutch1 ) ; // s e t Clutch1 Pin a s Output Marc Koraschnigg Diplomarbeit HS München

52 4 Softwareentwicklung set_pinmode ( ) ; 8 } 9 10 void open_clutch1 ( void ) 11 { 12 IOSET0 = (1<<Clutch1 ) ; // s e t Clutch1 Pin High 13 } void c l o s e _ c l u t c h 1 ( void ) 16 { 17 IOCLR0 = (1<<Clutch1 ) ; // s e t Clutch1 Pin Low 18 } Zeile 5 deniert den Pin als Ausgang. Zeile 12 setzt den Pin auf High und Zeile 17 auf Low. 4.5 Ladezustandsberechnung Die Ladezustandsberechnung bendet sich in der calculation.c Datei und wird vom Betriebssystem alle 50 Zyklen durch die Funktion calculation() aufgerufen. Die Berechnung basiert auf der Information, dass der Strom an den Akkupacks über einen Shunt-Widerstand berechnet wird und in Echtzeit zur Verfügung steht. Ist die Kapazität der Batterien bekannt, so kann über den Strom und der Zeit die abgegebene bzw. aufgenommene Ladung berechnet werden. Die genaue Zeit wird durch die Real Time Clock geliefert. Die Akkus von Clean Mobile haben eine Kapazität von 17,2 Ah (= As). Der Strom wird bei jedem Durchlauf der Funktion calculation() abgetastet und aufaddiert. Nach genau einer Sekunde wird der aufaddierte Wert durch die Abtastungen geteilt, als Mittelwert gespeichert und zur Ladekapazität ab bzw hinzu gezählt. Dieser wird in den nicht üchtigen Speicherbereich geschrieben, um auch nach einer Stromunterbrechung den letzten genauen Zustand wieder zu bekommen. Als letztes wird die Restladezeit berechnet. Marc Koraschnigg Diplomarbeit HS München

53 4 Softwareentwicklung Die Abtastung des Stromes Die Funktion calculation() wird vom Betriebssystem aufgerufen um den aktuellen Ladezustand der Batterien zu ermitteln und zu speichern. Dabei wird erst immer überprüft, ob eines der drei Flags gesetzt ist, da sich nur in diesen Zuständen die Kapazität der Batterien ändert. 1 i f ( charging == ON prop_power == TRUE charging_switch == ON) Bendet man sich in einem der oben genannten Modi, wird die RTC beim ersten Durchgang gestartet und der aktuelle Sekundenwert über den Funktionsaufruf read_rtc() in der Variable current_sec gespeichert. 1 i f ( r t c == OFF) 2 { 3 start_rtc ( ) ; 4 } 5 current_sec = read_rtc ( ) ; Bendet sich die Abtastung noch in der selben Sekunde, so wird der Strom, simuliert über die Funktion read_amp(), bei jedem Durchlauf abgetastet und auf die Variable current_amp hinzu addiert (Zeile 3). Ebenfalls wird die Variable step_cnt bei jedem Durchlauf inkrementiert (Zeile 4). 1 i f ( current_sec == old_value ) 2 { 3 current_amp += read_amp ( ) ; 4 step_ cnt++; 5 } Stimmt der aktuelle Sekundenwert nicht mit dem alten Wert überein (Zeile 1), ist also eine Sekunde verstrichen, so wird der Variable old_value der Wert der neuen Sekunde zugewiesen (Zeile 3), damit beim nächsten Durchgang wieder von vorne aufaddiert werden kann. Im nächsten Schritt wird der Mittelwert der Kapazität ermittelt, indem die Summe aus dem Strom durch die Abtastrate geteilt wird (Zeile 4). Im Modus charging wird der berechnete Wert der aktuellen Kapazität zu addiert und in den NVRAM geschrieben (Zeile 6-10). Analog dazu wird im Modus prop-power der ermittelte Wert subtrahiert bevor er in den NVRAM geschrieben Marc Koraschnigg Diplomarbeit HS München

54 4 Softwareentwicklung wird (Zeile 11-15). Bevor die Variablen current_amp und step_cnt wieder auf 0 gesetzt werden (Zeile 18 & 19), werden die Funktionen calc_percent_value() und calc_timeleft() aufgerufen, um den aktuellen prozentualen Wert des Ladezustandes und der Restlade- oder Restantriebszeit zu berechnen (Zeile 16 & 17). 1 e l s e 2 { 3 old_value = current_sec ; 4 q_ current_ charge = ( current_amp/ step_ cnt ) ; 5 6 i f ( charging == TRUE) 7 { 8 q_charge_mas += q_ current_ charge ; 9 BATT_RAM = q_charge_mas ; 10 } 11 e l s e 12 { 13 q_charge_mas = q_ current_ charge ; 14 BATT_RAM = q_charge_mas ; 15 } 16 calc_percent_value ( ) ; 17 c a l c _ t i m e l e f t ( ) ; 18 current_amp = 0 ; 19 step_ cnt = 0 ; 20 } Wird die Ladung der Batterien oder der Betrieb des Propellers beendet, wird durch Zeile 3 die Variable q_current_charge zurück auf 0 gesetzt, die RTC gestoppt (Zeile 4) und durch den Aufruf in Zeile 5, der prozentuale Ladezustand berechnet. e l s e i f ( charging == OFF prop_power == OFF charging_switch == OFF) } { } q_ current_ charge = 0 ; stop_rtc ( ) ; calc_percent_value ( ) ; Marc Koraschnigg Diplomarbeit HS München

55 5 Displayausgabe 5 Displayausgabe Die Displayausgabe gehört teilweise zur Softwareentwicklung, ist aber aufgrund des Umfanges und der Erstellung der Bilder im Zeichenprogramm als eigenes Kapitel verfasst. Um Ausgaben auf dem GLCD zu erzeugen, werden die Bilder erst in sog. Zeichenprogrammen wie Photoshop, Paintshop Pro oder GIMP erstellt. Diese können dann durch Programme wie BitFontCreator in Byte-Arrays konvertiert werden. Abbildung 5.1 zeigt die drei Schritte des Welcome-Screens von der Erstellung in Photoshop (Links), über die Konvertierung in BitFontCreator (Mitte) bis zur eigentlichen Ausgabe als Array (Rechts). Abbildung 5.1: Vom Zeichenprogramm zum Array Die richtigen Einstellungen des Datenformats in BitFontCreator sind für die korrekte Anzeige unerlässlich. Dabei ist darauf zu achten, die Bit-Order (dt. Bit Reihenfolge) spaltenweise auf Little Endian zu stellen, was das Byte mit dem Least Signicant Bit (LSB) an der Stelle 0 speichert. Zudem wird spaltenweise hochgezählt, bevor in die zweite Reihe gesprungen wird (Abbildung 5.2). Die Bilddaten werden monochrom in 8 Bit-Länge gespeichert. Nähere Information zu den Einstellungen und der Anleitung von der Zeichnung zum Array benden sich im Anhang C. Marc Koraschnigg Diplomarbeit HS München

56 5 Displayausgabe Abbildung 5.2: Das richtige Datenformat Die Bildinformationen werden in der Header-Datei lcdscreen.h als uint8 1 Arrays gespeichert. Bevor die Daten seriell über das SPI in den DDRAM des Controllers übertragen werden können, müssen sie durch eine Wrapper-Funktion in das richtige Format gebracht werden. 5.1 Der Displaycontroller Der im DOGXL GLCD integrierte Displaycontroller uc1610 ist ein sog. 2Bit greyscale-controller (dt. Graustufen-Controller), der 4 Pixel mit einem Byte ansteuert. Jedes Pixel hat demnach vier Zustände (Abbildung 5.3). Bei 160 x 104 Pixel x 2Bit ergeben sich 4160 Byte pro Bild, was zu einer erheblichen Datenmenge führt, vor allem wenn animierte Bildsequenzen angezeigt werden. Abbildung 5.3: Zustände eines Pixel Da es bei dieser Auösung wenig Sinn macht, das Bild mit Graustufen zu zeichnen 1 uint8 = unsigned char Marc Koraschnigg Diplomarbeit HS München

57 5 Displayausgabe und sich die Hälfte an Speicherplatz sparen lässt, wird es ausschlieÿlich als monochromes Display betrieben. Das bedeutet, dass jedes Pixel nur An (11) oder Aus (00) geschaltet werden kann. Die Bilddaten aus BitFontCreator können zudem nur als monochrome Bilder verarbeiten werden. Wie Nachfolgend noch zu sehen ist, werden die Bilder auf zwei Arten erstellt. Bevor sie aber an das Display übertragen werden, werden sie über die Wrapper-Funktion write_fullpic() geleitet. 5.2 Zusammensetzen der Bilder In diesem Projekt gibt es zwei unterschiedliche Arten von Bildern, das statische komplette und das dynamische Bild - Array, dass aus vier Bereichen zusammengesetzt wird. Der Welcome Screen (Abbildung 5.4), der als komplettes Array in der Header-Datei lcdscreens.h liegt, wird komplett an die Wrapper-Funktion übergeben bevor er auf das Display geschrieben wird. Abbildung 5.4: Statischer Welcome Screen Der Idle Screen (Abbildung 5.5) hingegen wird je nach Modus aus vier Bereichen zusammengesetzt und dann an die Wrapper-Funktion übergeben. Abbildung 5.5: Dynamischer Idle Screen Marc Koraschnigg Diplomarbeit HS München

58 5 Displayausgabe Erster Bereich Bei jedem Aufruf von der hmi_250ms() werden die vier Funktionen zur Erstellung der Bereiche nacheinander ausgeführt. create_firstrow(calc_perc) erstellt den ersten Bereich mit den Maÿen 160 x 16 Pixel und kreiert aus dem statischen Bild (Abbildung 5.6), dem dynamischen Balken und dem numerisch prozentualen Wert ein neues Bild in Form eines Arrays. Die übergebene globale Variable calc_perc liefert den berechneten Ladezustand der Batterien aus der Funktion calculation(). Abbildung 5.6: Array rst_row (320 Byte groÿ) Die beiden uint8 Arrays page1_bar[] und page2_bar[] speichern jeweils die Bild- Informationen zum Ladebalken. Dabei steht page1 für die oberen acht und page2 für die unteren acht Reihen (Abbildung 5.7). 1 void create_firstrow ( uint8 percent ) 2 { 3 uint8 k ; 4 uint8 new_percent ; 5 6 /* Pos 0 > not h i g h l i g h t e d : : Pos 1 > h i g h l i g h t e d : : 7 Pos 2 > l a s t p i x e l i f 100% */ 8 uint8 page1_bar [ ] = {0x0B, 0xEB, 0x8B } ; 9 10 /* Pos 0 > not h i g h l i g h t e d : : Pos 1 > h i g h l i g h t e d */ 11 uint8 page2_bar [ ] = {0x00, 0x0F } ; new_percent = calc_percent ( percent ) ; Abbildung 5.7: Übersicht Page 1 und Page 2 Da der Balken nur 89 Pixel breit ist, wird der übergebene Prozentwert durch die Funktion calc_percent() (Zeile 13) mit der folgenden Formel neu berechnet und zurückgegeben: Marc Koraschnigg Diplomarbeit HS München

59 5 Displayausgabe v n = v min maxn minn max min + min n min max entspricht der alten Wertespanne (0 100) und min n max n entspricht der neuen, normalisierten Wertespanne (0 91). v n ist dabei der neu berechnete und zurückgegebene Prozentwert. Mit der folgenden Funktion memcpy() werden die ersten 36 Byte von Array first_row an die 0. Stelle des Arrays screen kopiert. 1 /********************************************************************* / 2 /* c o p i e s 36 bytes to s c r e e n array on pos 0 */ 3 memcpy( screen, first_row, 3 6 ) ; 4 /*****/ Nach 36 Spalten beginnt der obere Teil des dynamischen Ladebalkens. Der Wert des Arrays page1_bar von Position 1 wird solange in das Array screen kopiert, bis die Zählervariable k nicht mehr kleiner als der berechnete neue Prozentwert ist (Zeile 7). Die restlichen Spalten werden von dem Array page1_bar der Position 0 gefüllt (Zeile 11). Zeile 14 entscheidet, ob die letzte Spalte des Ladebalkens ausgefüllt werden soll oder nicht. 1 /********************************************************************* / 2 /* c o p i e s bytes to s c r e e n array on pos 36 */ 3 f o r ( k = 0 ; k < 8 8 ; k++) /* 88 runs > b a t t e r y bar */ 4 { 5 i f ( k < new_percent ) /* as long as k < new_percent */ 6 { 7 memcpy( s c r e e n +(36+k ), page1_bar +1,1); / * h i g h l i g h t e d bar */ 8 } 9 e l s e 10 { 11 memcpy( s c r e e n +(36+k ), page1_bar, 1 ) ; / * NOT h i g h l i g h t e d bar */ 12 } 13 } 14 i f ( new_percent == 89) /* w r i t e s l a s t p i x e l bar i f = 100% */ 15 { 16 memcpy( s c r e e n +(36+88), page1_bar +2,1); 17 } 18 e l s e /* w r i t e s l a s t p i x e l bar i f < 100% */ 19 { 20 memcpy( s c r e e n +(36+88), page1_bar, 1 ) ; Marc Koraschnigg Diplomarbeit HS München

60 5 Displayausgabe 21 } 22 /*****/ Die nächsten vier Bytes werden wieder aus dem Array first_row in das Array screen kopiert, jetzt jedoch von Position 125 an Position /********************************************************************* / 2 /* c o p i e s 4 bytes from f i r s t _ r o w pos 125 to s c r e e n array on pos 125 */ 3 memcpy( s c r e e n +125, f i r s t _ r o w +125,4); 4 /*****/ Anschlieÿend wird der nicht normierte prozentuale Wert und die Position (top oder bottom) der Funktion get_number_array() übergeben (Zeile 4). Diese Funktion konvertiert den Wert in einen String und kopiert diesen durch die Funktion memcpy() an die Position 129 im Array screen (Zeile 5). Die Vorgehensweise zur Konvertierung wird in Abschnitt 5.4 genauer erläutert. 1 /********************************************************************* / 2 /* convert the uint8 percent to a s t r i n g and saves in number_array */ 3 /* 18 bytes on pos 129 */ 4 get_number_array ( percent, top ) ; 5 memcpy( s c r e e n +129,number_array, 1 8 ) ; 6 /*****/ Die letzten dreizehn Bytes werden wieder aus dem statischen Array rst_row in das Array screen kopiert, diesmal jedoch von Position 147 an Position /********************************************************************* / 2 /* c o p i e s 13 bytes from f i r s t _ r o w pos 147 to s c r e e n array on pos 147 */ 3 memcpy( s c r e e n +147, f i r s t _ r o w +147,13); 4 /*****/ Abbildung 5.8 zeigt das bisher erstellte Bild. Es umfasst 160 x 8 Pixel, was 160 Byte entsprechen. Die 160 Byte der zweiten 8 Pixel werden analog wie oben erstellt, nur Abbildung 5.8: 160 Byte des ersten Bereichs werden andere Array-Daten verwendet. Marc Koraschnigg Diplomarbeit HS München

61 5 Displayausgabe Die 2 x 160 Byte sind nun im Array screen an der Stelle 0 bis 319 gespeichert Zweiter Bereich Der zweite Bereich mit den Maÿen 160 x 16 Pixel (= 320 Byte) wird durch die Funktion create_secondrow() aufgerufen und ist nicht so komplex aufgebaut, da er nur den aktuellen Zustand des Bedienhebels ausgibt. Der Hebel kann in drei Stellungen gebracht werden. Je nach Status der globalen Variable control_lever_state (Zeile 3) werden die 320 Byte des Arrays second_row_off, second_row_pos1 oder second_row_pos2 an die 320. Stelle des Array screen kopiert. 1 void create_secondrow ( void ) 2 { 3 switch ( c o n t r o l _ l e v e r _ s t a t e ) 4 { 5 case c l _ o f f : 6 memcpy( s c r e e n +320,second_row_OFF, ) ; 7 break ; 8 case cl_pos1 : 9 memcpy( s c r e e n +320,second_row_pos1, ) ; 10 break ; 11 case cl_pos2 : 12 memcpy( s c r e e n +320,second_row_pos2, ) ; 13 break ; 14 } 15 } Abbildung 5.9 zeigt die Ausgabe des Bereichs mit der Position 1 Stellung des Bedienhebels. Abbildung 5.9: 320 Byte des zweiten Bereichs Die zweiten 320 Byte sind nun im Array screen an der Stelle 320 bis 639 gespeichert. Marc Koraschnigg Diplomarbeit HS München

62 5 Displayausgabe Dritter Bereich Der dritte Bereich wird von der Funktion create_thirdrow() aufgerufen. Er enthält 160 x 48 Pixel (= 960 Byte) und zeigt die Zustände der beiden Motoren (Abbildung 5.10) an. Er ist analog zu Bereich zwei aufgebaut, unterscheidet sich jedoch in der Abbildung 5.10: 960 Byte des dritten Bereichs Animation. Realisiert wird das ganze durch eine if - else - if - Anweisung, die die Variable virtual dreimal hoch zählt, bevor sie im letzten Schritt wieder auf 0 gesetzt wird. 1 i f ( v i r t u a l == 0) 2 { v i r t u a l 5 } 6 e l s e i f ( v i r t u a l == 1) 7 { v i r t u a l 10 } 11 e l s e i f ( v i r t u a l == 2) 12 { v i r t u a l 15 } 16 e l s e 17 { v i r t u a l = 0 ; 20 } Ist einer der beiden Motoren in Betrieb, wird der Energieuÿ mit oder ohne Propeller, durch vier Bilder animiert und soll dem Piloten auf übersichtliche Weise den aktuellen Zustand signalisieren. Es ergeben sich vier Zustände: Marc Koraschnigg Diplomarbeit HS München

63 5 Displayausgabe V-Motor E-Motor Variable Aus Aus keine Aus Ein two_button_state Ein Ein three_button_state Ein Aus charging_switch charging Tabelle 5.1: Übersicht der möglichen Motorenzustände Wird einer der Variablen der Wert ON (= 1) zugewiesen, so werden 960 Byte des selektierten Array aus der Header-Datei lcdscreens.h in das Array screen an der Stelle 640 kopiert. Die 960 Byte sind im Array screen an der Stelle 640 bis 1599 gespeichert Vierter Bereich Der vierte und letzte Bereich wird von der Funktion create_fourthrow(calc_time) aufgerufen und verhält sich wie der erste, da bei Akkuladung oder Antrieb des Propellers die jeweilige Restlade- oder Restantriebszeit berechnet und ausgegeben wird. Bei Ladung, erscheint für etwa zehn Sekunden die berechnete Restladezeit (Abbildung 5.11) bevor es für die nächsten zehn Sekunden den aktuellen Strom anzeigt. Die Wiederholungsrate kann in der Header-Datei setup.h umgestellt oder ganz abgeschaltet werden. Abbildung 5.11: Vierte Bereich Restladezeit Auch hier werden Teile des statischen Arrays mit übergebenen, berechneten Werten vereint und an die richtigen Stellen im Array screen gespeichert. Die Maÿe des vierten Bereichs liegen bei 160 x 24 Pixel, was 480 Byte entsprechen. Die benutzten Bilder liegen auch hier in der Header-Datei lcdscreens.h. Die 480 Byte sind im Array screen an der Stelle 1600 bis 2079 gespeichert. Das Marc Koraschnigg Diplomarbeit HS München

64 5 Displayausgabe Array ist somit 2080 Byte groÿ und wird im nächsten Schritt an die Wrapper- Funktion write_fullpic() übergeben. 5.3 Datenübergabe an den Displaycontroller Der Displaycontroller verarbeitet die Bilddaten, wie schon vorher im Text erwähnt, im 2 Bit grayscale Format. Das bedeutet, dass normalerweise ein Bild 4160 Byte umfasst und das Array screen mit 2080 Byte nicht richtig angezeigt werden würde. Abbildung 5.12 zeigt das Konzept der Wrapper-Funktion. Das Byte 0xEB wird von der Funktion in zwei einzelne half-bytes geteilt, dann auf jeder der vier Positionen mit 1 überprüft und im Anschluss die vordenierten Werte hinzu addiert. Am Ende ergeben sich zwei neue Bytes die im Display RAM an unterschiedliche Stellen kopiert werden. Da der Controller die Daten spaltenweise auf dem GLCD anzeigt, liegen genau 160 Byte zwischen der oberen und unteren Reihe. Abbildung 5.12: Konzept der Wrapper-Funktion Im Projekt wird das Konzept durch die Funktion write_fullpic() umgesetzt. Jedes Byte wird in 2 x 4 Bit aufgespalten (Zeile 13 & 14) und in der Variable H und L gespeichert. H wird dabei um 4 Positionen nach rechts geschoben (Zeile 15), damit in beiden Fällen nur die ersten vier Bit belegt sind. 1 void w r i t e _ f u l l p i c ( uint8 * p i c t u r e ) Marc Koraschnigg Diplomarbeit HS München

65 5 Displayausgabe 2 { 3 uint8 k, p, c ; 4 uint8 * ptr ; 5 uint8 LcdData [ 2 ] ; /* Pointer to both pages o f one column */ 6 uint8 H = 0x00 ; 7 uint8 L = 0x00 ; 8 9 f o r ( k = 0 ; k < 1 3 ; k++) 10 { 11 f o r ( c = 0 ; c < 1 60; c++) 12 { 13 L = ( p i c t u r e [160 * k+c ] & 0x0F ) ; /* 4 LSB are saved to L */ 14 H = ( p i c t u r e [160 * k+c ] & 0xF0 ) ; /* 4 MSB are saved to H */ 15 H = (H >> 4 ) ; /* s h i f t 4 times r i g h t */ 16 LcdData [ 0 ] = 0x00 ; 17 LcdData [ 1 ] = 0x00 ; Die Variable H wird an den ersten vier Positionen überprüft (Zeile 2, 6, 10, 14). Liegt an der ersten Stelle eine 1 an wird auf das Array LcdData an Position 1 der Wert 0x03 hinzu addiert (Zeile 4). Liegt an zweiter Stelle eine 1 an wird der Wert 0x0C hinzu addiert (Zeile 8) usw. Analog dazu wird auch die Variable L überprüft und konvertiert. Sie wird aber, anders als bei Variable H, in das Array LcdData auf der Position 0 gespeichert. 1 /* Each P i x e l in the H i s converted to 2 B i t s */ 2 i f ( (H & 0x01 ) == 0x01 ) 3 { 4 LcdData [ 1 ] = LcdData [ 1 ] + 0x03 ; 5 } 6 i f ( (H & 0x02 ) == 0x02 ) 7 { 8 LcdData [ 1 ] = LcdData [ 1 ] + 0x0C ; 9 } 10 i f ( (H & 0x04 ) == 0x04 ) 11 { 12 LcdData [ 1 ] = LcdData [ 1 ] + 0x30 ; 13 } 14 i f ( (H & 0x08 ) == 0x08 ) 15 { 16 LcdData [ 1 ] = LcdData [ 1 ] + 0xC0 ; 17 } Marc Koraschnigg Diplomarbeit HS München

66 5 Displayausgabe Die Adressen der beiden Variablen werden an die Funktion GLCD_SendData (Zeile 6) übergeben, bevor sie in den RAM des GLCD geschrieben werden. Zuerst aber, muss die richtige Spalten- und Zeilenadresse (Zeile 3 & 4) übertragen werden. 1 f o r ( p=0; p<2; p++){ /* Font Page S i z e 2 Pages */ 2 ptr = LcdData+p ; 3 GLCD_SetColumnAdress ( 0 x00 + c ) ; 4 GLCD_SetPageAddress (0 x *k + p ) ; 5 6 GLCD_SendData( ptr, 1 ) ; / * send new data to the d i s p l a y */ 7 } 8 } 9 } 10 } Jedes Byte wird also zerlegt, in zwei Bytes konvertiert und an die richtige Stelle auf dem Display RAM übertragen. 5.4 Konvertierung und Anzeige der dynamischen Zahlen Um den Wertebereich von 0 bis 100 abdecken zu können, müssten 100 verschiedene Bilder gespeichert und mit dem übergebenen Prozentwert verglichen werden. Das würde einen enormen Aufwand bei der Erstellung sowie eine erhebliche zusätzliche Datenmenge bedeuten. Die andere und auch hier verwendete Lösung wäre, ein Array gefüllt mit hinterlegten Zahlen von 0 bis 9 (7 Byte pro Zahl), dass je nach übergebenen Wert dynamisch auf den festgelegten Positionen (Abbildung 5.13 rote Kästchen) angezeigt werden würde. Marc Koraschnigg Diplomarbeit HS München

67 5 Displayausgabe Abbildung 5.13: Übersicht der dynamischen Felder Die einzelnen Zahlen werden, bevor sie als Array verwendet werden können, in einem Zeichenprogramm erstellt und mit dem BitFontCreator als Array konvertiert. Die fertigen Zahlen sind in der Datei hmi.c als 7 x 6 Pixel (7 Byte) gespeichert. 1 uint8 numbers_top_2 []= 2 { 3 0x00, 0x7E, 0xA1, 0x99, 0x85, 0x7E, 0x00, / * Number 0 */ 4 0x00, 0x82, 0x82, 0xFF, 0x80, 0x80, 0x00, / * Number 1 */ 5 0x00, 0xC2, 0xA1, 0x91, 0x89, 0x86, 0x00, / * Number 2 */ 6 0x00, 0x42, 0x81, 0x89, 0x89, 0x76, 0x00, / * Number 3 */ 7 0x00, 0x30, 0x2C, 0x22, 0xFF, 0x20, 0x00, / * Number 4 */ 8 0x00, 0x4F, 0x89, 0x89, 0x89, 0x71, 0x00, / * Number 5 */ 9 0x00, 0x7C, 0x8A, 0x89, 0x89, 0x70, 0x00, / * Number 6 */ 10 0x00, 0x01, 0xC1, 0x31, 0x0D, 0x03, 0x00, / * Number 7 */ 11 0x00, 0x76, 0x89, 0x89, 0x89, 0x76, 0x00, / * Number 8 */ 12 0x00, 0x0E, 0x91, 0x91, 0x51, 0x3E, 0x00, / * Number 9 */ 13 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, / * Space */ 14 } ; Um die Zahlen dynamisch ausgeben zu können, wird z. B. die Restladezeit in der Variable time an die Funktion get_number_arraytime(time) übergeben. Dort wird der Zahlenwert als String, also als ASCII-Wert, in dem Array time_array gespeichert (Zeile 7). Wie Abbildung 5.14 zeigt, wird der Wert 16 über die Funktion sprintf(...); als ASCII-Wert auf zwei Elemente des Array gespeichert. Abbildung 5.14: Die Umwandlung der Variable time in einen String Ist die Zeit kleiner als 10 wird der Wert des ersten Elements (0) auf die Position 1 kopiert und diese Position mit 0x00 initialisiert (Zeile 11 & 12). Marc Koraschnigg Diplomarbeit HS München

68 5 Displayausgabe 1 void get_number_arraytime ( uint8 time ) 2 { 3 uint8 a = 0 ; 4 uint8 j ; 5 char time_array [ 2 ] ; 6 7 s p r i n t f ( time_array,"% i ", time ) ; 8 9 i f ( time < 10) 10 { 11 time_array [ 1 ] = time_array [ 0 ] ; 12 time_array [ 0 ] = 0x00 ; 13 } Die anschlieÿende do-while Schleife speichert der Reihe nach den ASCII-Wert in der Variable j (Zeile 4) und übergibt diese zusammen mit der Variable a an die Funktion number_into_arraytime(a, j-48) bis j gleich 0 ist do 3 { 4 j = time_array [ a ] ; 5 number_into_arraytime ( a, j 48); 6 a++; 7 j = time_array [ a ] ; 8 } while ( j! = 0 ) ; 9 } Die Aufgabe der Funktion number_into_arraytime(), mit den übergebenen Werten count und number, liegt darin, sieben Byte aus dem Array numbers_top_2 in das Array number_array2 zu kopieren (Zeile 6). Dabei wird, wie im oben genannten Beispiel, die Zahl 16 als String mit den Werten 49 (entspricht 1) an Position 0 und 54 (entspricht 6) an Position 1 des Array time_array übergeben. Bei der ersten Übergabe ist a (= count) gleich 0 und j-48 (= number) gleich 1 (49-48). Durch die for - Schleife werden dann genau sieben Byte an die Position count*7+j Marc Koraschnigg Diplomarbeit HS München

69 5 Displayausgabe von der richtigen Position number*7+j aus dem Array numbers_top_2 kopiert. j ist dabei die Hochlaufvariable und läuft von 0 bis 6. 1 void number_into_arraytime ( uint8 count, uint8 number ) 2 { 3 uint8 j ; 4 f o r ( j = 0 ; j < 7 ; j++) 5 { 6 number_array2 [ count *7+ j ] = numbers_top_2 [ number*7+ j ] ; 7 } 8 } Das Array number_array2, dass aus 14 Byte mit den oben selektierten Werten besteht, wird dann an die gewünschte Stelle im Array screen kopiert und auf dem GLCD angezeigt. Marc Koraschnigg Diplomarbeit HS München

70 6 Ausblick 6 Ausblick Zum Abschluss dieser Diplomarbeit möchte ich einen Ausblick über die weitere Hardund Softwareentwicklung zu diesem Projekt geben. Hardware Im nächsten Schritt soll eine neue Platine auf SMD-Basis entwickelt und gefertigt werden. Sie sollte kompakt und mit den benötigten Schnittstellen versehen sein. Ein Ansatz wäre z. B. ein Bestücken der Bauteile wie Prozessor, Widerstände, Spulen usw. auf der einen Seite der Platine und das Herausführen der Schalter, Taster sowie das GLCD auf der Anderen. Es müsste sich auÿerdem Gedanken über die Steckverbindungen gemacht werden, damit ein sicherer Betrieb im Flugzeug gewährleistet ist. Software Da die Akkus voraussichtlich erst im September 2010 geliefert werden können, wird ein nächster Schritt die Implementierung der Kommunikation zwischen Mikrocontroller und Batterien sein. Auÿerdem soll das Zusammenspiel von Hard- und Software erweitert und optimiert werden um die Integration der externen Bauteile (Kupplungen, Verbrennungsmotor usw.) zu gewährleisten. Sollte eine andere Hardware verwendet werden, so muss der geschriebene C Code auf dieses neue System portiert werden. Bei der Benutzung eines anderen Compilers, wie den GCC Compiler, müssen ebenso Anpassungen erfolgen. Marc Koraschnigg Diplomarbeit HS München

71 Literaturverzeichnis Literaturverzeichnis [Kri10] Kristl, Prof. Dr. Heribert: Mikrocontroller Vorlesungsskript, [Online; Stand 12. Juni 2010]. [Sch10] Scheffler, Prof. Dr. Klaus: Entwicklung eines hybriden Antriebs für ein Segelugzeug - Präsentation, [Stand Juli 2010]. [wet10] wetterklima.de: Leewellen, [Stand August 2010, [Wik10a] Wikipedia: Controller Area Network Wikipedia, Die freie Enzyklopädie, [Online; Stand 22. July 2010]. [Wik10b] Wikipedia: Multitasking Wikipedia, Die freie Enzyklopädie, [Online; Stand 26. July 2010]. [Wik10c] Wikipedia: Segelug Wikipedia, Die freie Enzyklopädie, [Online; Stand 03. August 2010]. [Wik10d] Wikipedia: Serial Peripheral Interface Wikipedia, Die freie Enzyklopädie, [Online; Stand 03. Mai 2010]. Marc Koraschnigg Diplomarbeit HS München

72 Literaturverzeichnis Wichtige Kontakte Initiator des Projekts Hybrid-Segelugzeug Prof. Dr.-Ing. Klaus Scheer Hochschule München; Fakultät 03: Maschinenbau/Fahrzeugtechnik/Flugzeugtechnik Raum B0.174 Dachauer Straÿe 98b München Tel.: +49 (0) Fax: +49 (0) Projektleiter des Projekts Hybrid-Segelugzeug Steen Moll Christoph-Probst-Straÿe 8 Apt München Tel.: +49 (0) Mobil: +49 (0) steen.moll@ .de Entwicklungsleiter Batterien der Firma Clean-Mobile Dr. John De Roche MChem. Clean Mobile AG Marc Koraschnigg Diplomarbeit HS München

73 Literaturverzeichnis Inselkammerstr München-Unterhaching Tel.: +49 (0) Mobil: +49 (0) john.deroche@clean-mobile.com Ansprechpartner für CAN-Bus der Firma Clean-Mobile Arne Pagel Clean Mobile AG Inselkammerstr München-Unterhaching Tel.: +49 (0) arne.pagel@clean-mobile.com Betreuer meiner Diplomarbeit Prof. Jürgen Plate Hochschule München; Fakultät 04: Elektro- und Informationstechnik Raum R3.058 Lothstr München Tel.: +49 (0) Fax: +49 (0) plate@hm.edu Support Hotline Europe der Firma Keil Keil Bretonischer Ring Grasbrunn Tel.: +49 (0) Support: +49 (0) support.int@keil.com Marc Koraschnigg Diplomarbeit HS München

74 A Aktivierung und Verwendung von µvision 3 A Aktivierung und Verwendung von µvision 3 Die Installationsdatei MDK370.exe bendet sich auf der beigelegten CD im Ordner Software und wird durch einen Doppelklick gestartet. Nach der Installation muss µvision 3 aktiviert werden, um den vollen Funktionsumfang nutzen zu können. Dafür wird das Programm als Administrator gestartet und über den Eintrag File License Management.. aus der Toolbar aufgerufen (Abbildung A.1). Abbildung A.1: Das License Management Den benötigten LIC (License ID Code) erhält man durch die Aktivierung auf der Internetseite mittels der Computer Marc Koraschnigg Diplomarbeit HS München

75 A Aktivierung und Verwendung von µvision 3 ID (CID) und der Personal Serial Number (PSN). Die CID bendet sich im License Manager unter dem Reiter Single-User License (Abbildung A.2 oben), die PSN ist auf der beiliegenden CD im Ordner License zu nden. Ist die Aktivierung erfolgreich durchlaufen, kann der neu erhaltene LIC dem Programm hinzugefügt werden (Abbildung A.2 unten). Abbildung A.2: Single-User License & die Computer ID (CID) Sollten Probleme bei der Installation oder der Aktivierung entstehen, kann der deutsche Keil Support telefonisch erreicht werden. Die Telefonnummern benden sich unter Wichtige Kontakte. Sobald µvision 3 installiert und aktiviert worden ist, kann das Programm gestartet werden. Es besteht aus einer Menu- (1), File- (2) und Build-Bar (3), aus dem Project Workspace (4), Work- (5) und Output-Window (6) (Abbildung A.3). Marc Koraschnigg Diplomarbeit HS München

76 A Aktivierung und Verwendung von µvision 3 Abbildung A.3: Der Arbeitsbereich Das Projekt lässt sich durch ein klicken auf Project Open Project.. aus der Menü Leiste auswählen und önen. Die nale Projektdatei bendet sich auf der beiliegenden CD im Ordner Programmcode. Durch ein klicken auf das Symbol Rebuild all target les (Abbildung A.4 links) aus der Build-Leiste wird der C Code kompiliert und das hex le auf der Festplatte gespeichert. In der Leiste File bendet sich das Symbol, um in den Debug Modus zu gelangen (Abbildung A.4 rechts). Abbildung A.4: Links: Der Rebuild All Button - Rechts: Der Start Debug Button Alle wichtigen Register (wie z. B. PINSELx, PINMODEx oder das SPI) können dann über die Fläche Peripherals aus der Menü Leiste geönet und ausgelesen werden. Marc Koraschnigg Diplomarbeit HS München

77 B Initialisierungsbeschreibung des GLCD B Initialisierungsbeschreibung des GLCD Die Beschreibung der Displayinitialisierung: Set_Com_End_H & L deniert die Anzahl der Pixel-Reihen. Set_LCD_Mapping_Control zeigt Reihen und Spalten im Normal-Modus an (6:00 Blickwinkel). Set_Scroll_Line_LSB & MSB setzt die Displaystartposition auf 0. Set_Panel_Loading setzt Panel Loading auf nf. Set_Pump_Control setzt den internen Vlcd auf 8-Fach. Set_LCD_Bias_Ratio setzt den BIAS auf 1/12. Set_Vbias_Poti_H & L stellt den Kontrast zwischen 0 und 255 ein (aktueller Wert 95). Set_RAM_Address_Control deniert ob beim Daten schreiben automatisch in die nächste Zeile gesprungen wird. Set_Display_Enable aktiviert das Display und ist bereit Bild-Informationen zu empfangen. Wie schon im Text erwähnt, sollte die V LCD - Spannung unter 15 V liegen. Die Spannung setzt sich aus folgenden Komponenten zusammen: Marc Koraschnigg Diplomarbeit HS München

78 B Initialisierungsbeschreibung des GLCD V LCD = (C V 0 + C P M P M) (1 + (T 25) C T %) C V0 & C PM sind Konstanten, die über den Befehl Set_LCD_Bias_Ratio eingestellt werden. PM ist der numerische Wert des Registers V BIAS Potentiometer Registers (Befehl Set_Vbias_Poti_H & L). T ist die Umgebungstemperatur. C T ist der temperaturkompensierte Koezient aus dem TC Register. Mit den im Projekt verwendeten Werten ergibt sich eine Spannung V LCD von 14,2 V bei einer Umgebungstemperatur von 25 C. Weitere mögliche Einstellungen können aus dem Datenblatt uc1610 des Displaycontrollers entnommen werden. Marc Koraschnigg Diplomarbeit HS München

79 C Von der Zeichnung zum Array C Von der Zeichnung zum Array Als erstes werden die Bilder in einem Zeichenprogramm, wie Adobe Photoshop, Paintshop Pro oder GIMP erstellt. Die Gröÿe der Bilder sollte mit der Gröÿe des Displays übereinstimmen. Wir önen ein neues Bild mit 160 x 104 Pixel und wählen als Color Mode Bitmap (1 Bit) aus. Das Bild kann jetzt mit den gewünschten Motiven gezeichnet werden (Abbildung C.1). Abbildung C.1: Im Zeichenprogramm erstellte Motiv Um das Bild in ein Array zu wandeln, benötigen wir das Programm BitFontCreator. Es ist eigentlich zur Konvertierung von Schriften gedacht, kann aber auch bei Bildern genutzt werden. Der Creator liegt in der Version auf der CD in dem Ordner Software bei. Wir erstellen einen neuen Font, indem wir auf File New Font New Font From Scratch.. in der Menüleiste klicken und vergeben als Font Size - Width 160 und als Font Size - Height 104 Pixel. Das gezeichnete Bild wird in dem Zeichenprogramm selektiert, mit STRG + C kopiert und mit STRG + V in den BitFontCreator eingefügt (Abbildung C.2). Marc Koraschnigg Diplomarbeit HS München

80 C Von der Zeichnung zum Array Abbildung C.2: In den BitFontCreator eingefügte Bild Ein klick auf Refresh liefert das gewünschte C Array. Man sollte jedoch die Einstellungen unter Data Format.. überprüfen, da diese sonst nicht korrekt auf dem Display angezeigt werden. Ein klicken auf Data Format.. önet die Einstellungen (Abbildung C.3). Abbildung C.3: Die Einstellungen im BitFontCreator Marc Koraschnigg Diplomarbeit HS München

Microcontroller Kurs. 08.07.11 Microcontroller Kurs/Johannes Fuchs 1

Microcontroller Kurs. 08.07.11 Microcontroller Kurs/Johannes Fuchs 1 Microcontroller Kurs 08.07.11 Microcontroller Kurs/Johannes Fuchs 1 Was ist ein Microcontroller Wikipedia: A microcontroller (sometimes abbreviated µc, uc or MCU) is a small computer on a single integrated

Mehr

Serielle Kommunikation mit dem Arduino. Teil 1: Das Serial Peripheral Interface (SPI)

Serielle Kommunikation mit dem Arduino. Teil 1: Das Serial Peripheral Interface (SPI) Serielle Kommunikation mit dem Arduino Teil 1: Das Serial Peripheral Interface (SPI) Axel Attraktor e.v. 4. Juni 2012 Axel (Attraktor e.v.) 5. Arduino-Stammtisch 4. Juni 2012 1 / 25 Serielle Kommunikation

Mehr

Bedienungsanleitung Version 1.0

Bedienungsanleitung Version 1.0 Botex DMX Operator (DC-1216) Bedienungsanleitung Version 1.0 - Inhalt - 1 KENNZEICHEN UND MERKMALE...4 2 TECHNISCHE ANGABEN...4 3 BEDIENUNG...4 3.1 ALLGEMEINES:...4 3.2 BEDIENUNG UND FUNKTIONEN...5 4 SZENEN

Mehr

Quanton Manual (de) Datum: 20.06.2013 URL: http://wiki:8090/pages/viewpage.action?pageid=9928792 )

Quanton Manual (de) Datum: 20.06.2013 URL: http://wiki:8090/pages/viewpage.action?pageid=9928792 ) Datum: 20.06.2013 URL: http://wiki:8090/pages/viewpage.action?pageid=9928792 ) Inhaltsverzeichnis 1 quanton flight control rev. 1 3 1.1 Anschlüsse für Peripheriegeräte 3 1.1.1 Eingänge / Ausgänge 3 1.1.2

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

Local Control Network

Local Control Network Netzspannungsüberwachung (Stromausfallerkennung) Die Aufgabe Nach einem Stromausfall soll der Status von Aktoren oder Funktionen wieder so hergestellt werden, wie er vor dem Stromausfall war. Die Netzspannungsüberwachung

Mehr

Mikrocontroller Grundlagen. Markus Koch April 2011

Mikrocontroller Grundlagen. Markus Koch April 2011 Mikrocontroller Grundlagen Markus Koch April 2011 Übersicht Was ist ein Mikrocontroller Aufbau (CPU/RAM/ROM/Takt/Peripherie) Unterschied zum Mikroprozessor Unterschiede der Controllerarten Unterschiede

Mehr

EasyWk DAS Schwimmwettkampfprogramm

EasyWk DAS Schwimmwettkampfprogramm EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage

Mehr

LPT1 Anschluss mit PCMCIA Karte

LPT1 Anschluss mit PCMCIA Karte 1. Allgemeines LPT1 Anschluss mit PCMCIA Karte verwendete Hardware: Lenze PC Systembusadapter EMF 2173-V003 PCMCIA Karte Firma QUATECH Typ SPP-100 Auf die Installation der PCMCIA Karte wird hier nicht

Mehr

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition In den nachfolgenden Schritten finden Sie beschrieben, wie Sie in der Entwicklungsumgebung Microsoft Visual Studio 2010 eine Projektmappe, ein Projekt und einen ersten Quellcode erstellen, diesen kompilieren,

Mehr

Aufgabenstellung Praktikum Mikrorechentechnik Sommersemester 2014

Aufgabenstellung Praktikum Mikrorechentechnik Sommersemester 2014 Aufgabenstellung Praktikum Mikrorechentechnik Sommersemester 2014 Aufgabe: Entwurf und Implementierung eines Weckers auf Basis des MSP430 Education Systems Beschreibung: Gegenstand des Praktikums ist der

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie importiere und exportiere ich Daten zwischen myfactory und Outlook? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory Daten aus Outlook importieren Daten aus myfactory nach Outlook

Mehr

Elektrische Logigsystem mit Rückführung

Elektrische Logigsystem mit Rückführung Mathias Arbeiter 23. Juni 2006 Betreuer: Herr Bojarski Elektrische Logigsystem mit Rückführung Von Triggern, Registern und Zählern Inhaltsverzeichnis 1 Trigger 3 1.1 RS-Trigger ohne Takt......................................

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

"Memory Stick" zur Programmierung der comfort 8+ Lichtsteuranlage mit PC Software "scenes editor"

Memory Stick zur Programmierung der comfort 8+ Lichtsteuranlage mit PC Software scenes editor comfort 8+ IRPC "Memory Stick" zur Programmierung der comfort 8+ Lichtsteuranlage mit PC Software "scenes editor" 1: Programmstart, Einstellungen 1.1 Zuerst die Software der beiliegenden CD-ROM auf einem

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX Allgemeines Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX Stand 21.11.2014 Die Yeastar MyPBX Telefonanlagen unterstützen die automatische Konfiguration der tiptel 3010, tiptel 3020 und tiptel 3030

Mehr

Inbetriebnahme Profinet mit Engineer. Inhaltsverzeichnis. Verwendete Komponenten im Beispiel:

Inbetriebnahme Profinet mit Engineer. Inhaltsverzeichnis. Verwendete Komponenten im Beispiel: Verwendete Komponenten im Beispiel: Siemens: CPU: 416F-3 PN/DP FW 5.2 STEP7: 5.4 + SP4 Primary Setup Tool: 4.0 Lenze: 9400: Highline V 7 TA: Stellantrieb Drehzahl FW 3.0.3 Profinet Modul 1.30 MM330 und

Mehr

easyident Türöffner easyident Türöffner Art. Nr. FS-0007 FS Fertigungsservice

easyident Türöffner easyident Türöffner Art. Nr. FS-0007 FS Fertigungsservice easyident Türöffner Art. Nr. FS-0007 Wir freuen uns, das sie sich für unser Produkt easyident Türöffner, mit Transponder Technologie entschieden haben. Easyident Türöffner ist für Unterputzmontage in 55mm

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Die Entwicklungsumgebung. Labor Technische Informatik. Prof. Dr.-Ing. F. Kesel Dipl.-Ing. (FH) A. Reber

Die Entwicklungsumgebung. Labor Technische Informatik. Prof. Dr.-Ing. F. Kesel Dipl.-Ing. (FH) A. Reber Die Entwicklungsumgebung Labor Technische Informatik Prof. Dr.-Ing. F. Kesel Dipl.-Ing. (FH) A. Reber 19.04.2011 Inhalt 1 Das Keil MCB1700 Board...2 2 Keil ARM MDK Toolchain...3 2.1 Projekterstellung...3

Mehr

DOKUMENTATION VOGELZUCHT 2015 PLUS

DOKUMENTATION VOGELZUCHT 2015 PLUS DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP

Mehr

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2)

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2) Kurzbeschreibung: Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2) Beim HSI-88-USB handelt es sich um ein Interface vom s88-rückmeldebus zum Universal Serial Bus

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

Mehr

GeoPilot (Android) die App

GeoPilot (Android) die App GeoPilot (Android) die App Mit der neuen Rademacher GeoPilot App machen Sie Ihr Android Smartphone zum Sensor und steuern beliebige Szenen über den HomePilot. Die App beinhaltet zwei Funktionen, zum einen

Mehr

Thermoguard. Thermoguard CIM Custom Integration Module Version 2.70

Thermoguard. Thermoguard CIM Custom Integration Module Version 2.70 Thermoguard Thermoguard CIM Custom Integration Module Version 2.70 Inhalt - Einleitung... 3 - Voraussetzungen... 3 - Aktivierung und Funktion der Schnittstelle... 3 - Parameter... 4 - NLS-Einfluss... 4

Mehr

Das Omnikey 8751 e-health BCS...1 Auslesen über die LAN-Schnittstelle...1 Auslesen über die serielle Schnittstelle...4

Das Omnikey 8751 e-health BCS...1 Auslesen über die LAN-Schnittstelle...1 Auslesen über die serielle Schnittstelle...4 Das Omnikey 8751 e-health BCS Inhaltsverzeichnis Das Omnikey 8751 e-health BCS...1 Auslesen über die LAN-Schnittstelle...1 Auslesen über die serielle Schnittstelle...4 Auslesen über die LAN-Schnittstelle

Mehr

PCE-USM RS-232 - USB Logger

PCE-USM RS-232 - USB Logger PCE-USM RS-232 - USB Logger Der Logger ermöglicht die Sendedaten der RS-232 Schnittstelle als TXT Format in einen oder mehreren Ordnern mit Zeit und Datum zu speichern. Der Logger kann sowohl Daten empfangen

Mehr

PicKit 3. Programmierung mit dem USB-Programmer PICkit3 (Microchip) AB-2010-04

PicKit 3. Programmierung mit dem USB-Programmer PICkit3 (Microchip) AB-2010-04 PicKit 3 Programmierung mit dem USB-Programmer PICkit3 (Microchip) AB-2010-04 In diesem Dokument wird ein Umbau beschrieben. Für die Funktion des Umbaus gibt es keine Garantie. Für durch diesen Umbau entstandene

Mehr

Funktionsbeschreibung Datenlogger DL28W

Funktionsbeschreibung Datenlogger DL28W Funktionsbeschreibung Datenlogger DL28W Voreinstellungen des Datenloggers: Im Datenlogger sind folgende Aufzeichnungs und Alarmwerte voreingestellt: Aufzeichnung: Raumfühler T1 Verdampferfühler T2 Sollwert

Mehr

10.0 Quick Start mit AT89LP2052 Elliptecmotor Kit

10.0 Quick Start mit AT89LP2052 Elliptecmotor Kit 10.0 Quick Start mit AT89LP2052 Elliptecmotor Kit Dieses Kapitel beschreibt die Inbetriebnahme und den ersten Test mit dem AT89LP2052 Elliptecmotor Kit. Eine einfache Access Software für die Steuerung

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

Stepperfocuser 2.0 mit Bootloader

Stepperfocuser 2.0 mit Bootloader Stepperfocuser 2.0 mit Bootloader Info Für den Stepperfocuser 2.0 gibt es einen Bootloader. Dieser ermöglicht es, die Firmware zu aktualisieren ohne dass man ein spezielles Programmiergerät benötigt. Die

Mehr

GSM Scanner Bedienungsanleitung

GSM Scanner Bedienungsanleitung GSM Scanner Bedienungsanleitung Inhaltsverzeichnis 1. Funktion der Tasten... 3 2. Erste Schritte... 4 2.1. Einschalten -----------------------------------------------------------------------------------

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Qt-Projekte mit Visual Studio 2005

Qt-Projekte mit Visual Studio 2005 Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung

Mehr

Inhaltsverzeichnis WWW.STEMMER-IMAGING.COM

Inhaltsverzeichnis WWW.STEMMER-IMAGING.COM Inhaltsverzeichnis 1 Identifizierung...2 2 Sicherheitshinweise...3 3 Das Anschließen...3 3.1 Für die Nutzung der RS232 Schnittstelle... 3 3.2 Für die Nutzung der USB Schnittstelle... 3 4 Die Inbetriebnahme...3

Mehr

Hier ist die Anleitung zum Flashen des MTK GPS auf der APM 2.0. Prinzipiell funktioniert es auch auf der APM 2.5 und APM 1.

Hier ist die Anleitung zum Flashen des MTK GPS auf der APM 2.0. Prinzipiell funktioniert es auch auf der APM 2.5 und APM 1. Hier ist die Anleitung zum Flashen des MTK GPS auf der APM 2.0. Prinzipiell funktioniert es auch auf der APM 2.5 und APM 1. Vorweg: Die neue MTK Firmware 1.9 (AXN1.51_2776_3329_384.1151100.5_v19.bin) ist

Mehr

Autoradio On Off Schaltung

Autoradio On Off Schaltung Autoradio On Off Schaltung Konzeption, Anleitung und Hinweise Christian Schönig Schöneberger Str. 20 82377 Penzberg Inhalt 1. MOTIVATION... 3 1.1. AKTUELLER STAND BEI HERSTELLER RADIO... 3 1.2. ANSCHLUSS

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

NuVinci Harmony Software und Firmware. Anleitung in deutscher Sprache

NuVinci Harmony Software und Firmware. Anleitung in deutscher Sprache NuVinci Harmony Software und Firmware Anleitung in deutscher Sprache NuVinci Desktop ( Harmony Programmierung ) Software Für Hersteller und Händler Download über eine abgesicherte Internetverbindung http://harmony.fallbrooktech.net/

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Ablaufsteuerung Sequenzer, als Schaltstufen für den Amateurfunk.

Ablaufsteuerung Sequenzer, als Schaltstufen für den Amateurfunk. Ablaufsteuerung Sequenzer, als Schaltstufen für den Amateurfunk. DF1JM Juli 2011 Eine Sequenz ist eine Reihenfolge. Auf den Amateurfunk bezogen sind Sequenzer Schaltstufen, die in einer festgelegten Zeit-

Mehr

Elexis - Afinion AS100 Connector

Elexis - Afinion AS100 Connector Elexis - Afinion AS100 Connector medshare GmbH 27. November 2011 1 1 Einführung Dieses Plugin dient dazu, das Laborgerät Afinion AS100 Analyzer 1 an Elexis anzubinden. Mit diesem Plugin können die, vom

Mehr

Bedienungsanleitung PC-Konfigurationssoftware des ID Inclinometers

Bedienungsanleitung PC-Konfigurationssoftware des ID Inclinometers Bedienungsanleitung PC-Konfigurationssoftware des ID Inclinometers 1. Installation und Programmstart Die Verbindung zum Inclinometer funktioniert nicht unter Windows XP, 2000. 1.1 Installation Zur Installation

Mehr

Für Windows 7 Stand: 21.01.2013

Für Windows 7 Stand: 21.01.2013 Für Windows 7 Stand: 21.01.2013 1 Überblick Alle F.A.S.T. Messgeräte verfügen über dieselbe USB-Seriell Hardware, welche einen Com- Port zur Kommunikation im System zur Verfügung stellt. Daher kann bei

Mehr

Anleitung zur Nutzung des SharePort Utility

Anleitung zur Nutzung des SharePort Utility Anleitung zur Nutzung des SharePort Utility Um die am USB Port des Routers angeschlossenen Geräte wie Drucker, Speicherstick oder Festplatte am Rechner zu nutzen, muss das SharePort Utility auf jedem Rechner

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

icloud nicht neu, aber doch irgendwie anders

icloud nicht neu, aber doch irgendwie anders Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und

Mehr

Projekt 2HEA 2005/06 Formelzettel Elektrotechnik

Projekt 2HEA 2005/06 Formelzettel Elektrotechnik Projekt 2HEA 2005/06 Formelzettel Elektrotechnik Teilübung: Kondensator im Wechselspannunskreis Gruppenteilnehmer: Jakic, Topka Abgabedatum: 24.02.2006 Jakic, Topka Inhaltsverzeichnis 2HEA INHALTSVERZEICHNIS

Mehr

mit SD-Karte SD-Karte Inhalt

mit SD-Karte SD-Karte Inhalt mit mit Kartensteckplatz Der Logger ist optional mit einem Kartensteckplatz für eine micro erhältlich. Die verfügt über ein Vielfaches der Speicherkapazität des internen Logger- Speichers. Inhalt Zeitlicher

Mehr

Bedienungsanleitung Programmiersoftware Save `n carry PLUS. Inhaltsangabe

Bedienungsanleitung Programmiersoftware Save `n carry PLUS. Inhaltsangabe Bedienungsanleitung Programmiersoftware Save `n carry PLUS Mit der Programmiersoftware Save `n carry PLUS lassen sich für die Schaltcomputer SC 08 und SC 88; SC 98 einfach und schnell Schaltprogramme erstellen

Mehr

M a i l C r e d i t. \\Burt\user\Soutschek\FP\Technik\Frankiermaschinen\00_PC Software\MailCredit\Anleitung MailCredit Installation.

M a i l C r e d i t. \\Burt\user\Soutschek\FP\Technik\Frankiermaschinen\00_PC Software\MailCredit\Anleitung MailCredit Installation. M a i l C r e d i t MailCredit ist eine Software, die auf einem PC installiert wird. Diese Software ermöglicht es, dass eine Frankiermaschine über das Internet Portoladungen bzw. Kommunikation mit dem

Mehr

Erstellen einer digitalen Signatur für Adobe-Formulare

Erstellen einer digitalen Signatur für Adobe-Formulare Erstellen einer digitalen Signatur für Adobe-Formulare (Hubert Straub 24.07.13) Die beiden Probleme beim Versenden digitaler Dokumente sind einmal die Prüfung der Authentizität des Absenders (was meist

Mehr

Aufbau und Bestückung der UHU-Servocontrollerplatine

Aufbau und Bestückung der UHU-Servocontrollerplatine Aufbau und Bestückung der UHU-Servocontrollerplatine Hier im ersten Bild ist die unbestückte Platine zu sehen, die Bestückung der Bauteile sollte in der Reihenfolge der Höhe der Bauteile geschehen, also

Mehr

Benutzung der LS-Miniscanner

Benutzung der LS-Miniscanner Benutzung der LS-Miniscanner Seit Januar 2010 ist es möglich für bestimmte Vorgänge (Umlagerungen, Retouren, Inventur) die von LS lieferbaren Miniscanner im Format Autoschlüsselgröße zu benutzen. Diese

Mehr

JetMove 2xx Versions Update von V2.05 auf V2.06

JetMove 2xx Versions Update von V2.05 auf V2.06 JetMove 2xx Versions Update von V2.05 auf V2.06 Auflage 1.00 17. März 2006 / Printed in Germany Versions Update von V2.05 auf V2.06 JetMove 2xx 17.03.2006 Die Firma JETTER AG behält sich das Recht vor,

Mehr

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden. Track in Route umwandeln ACHTUNG: Ein Track kann nur dann in eine Route umgewandelt werden, wenn der Track auf Wegen gefahren wurde. Ein Querfeldein-Track kann nicht in eine Route umgewandelt werden, da

Mehr

Anleitung zur Installation und Nutzung des Sony PRS-T1 ebook Readers

Anleitung zur Installation und Nutzung des Sony PRS-T1 ebook Readers Anleitung zur Installation und Nutzung des Sony PRS-T1 ebook Readers Der neue Sony PRS-T1 ebook-reader ist nicht mehr mit dem Programm Adobe Digital Editions zu bedienen. Es sind daher einige Schritte

Mehr

GSM Scanner Bedienungsanleitung. GSM - Scanner. Bedienungsanleitung. Seite 1 von 10

GSM Scanner Bedienungsanleitung. GSM - Scanner. Bedienungsanleitung. Seite 1 von 10 GSM - Scanner Bedienungsanleitung Seite 1 von 10 Dokumenten Information Revision Date Changes Name Function 1.0 13.09.12 vorläufige Version MB User Manual Copyright information Copyright UNITRONIC AG Alle

Mehr

Anleitung zur Installation und Nutzung des Sony PRS-T1 ebook Readers

Anleitung zur Installation und Nutzung des Sony PRS-T1 ebook Readers Anleitung zur Installation und Nutzung des Sony PRS-T1 ebook Readers Der neue Sony PRS-T1 ebook-reader ist nicht mehr mit dem Programm Adobe Digital Editions zu bedienen. Es sind daher einige Schritte

Mehr

Betriebsanleitung. Mikroprozessorgesteuerter Batterie-Kapazitätstester CAPTEST 1225 und 2425 Für 12V (0,3 A 25 A) oder 24V (0,3 A 25 A)

Betriebsanleitung. Mikroprozessorgesteuerter Batterie-Kapazitätstester CAPTEST 1225 und 2425 Für 12V (0,3 A 25 A) oder 24V (0,3 A 25 A) Betriebsanleitung Mikroprozessorgesteuerter Batterie-Kapazitätstester CAPTEST 1225 und 2425 Für 12V (0,3 A 25 A) oder 24V (0,3 A 25 A) Betriebsanleitung Batterie-Tester - 2 Einsatzgebiet: Dieser mikroprozessorgesteuerte

Mehr

Lernwerkstatt 9 privat- Freischaltung

Lernwerkstatt 9 privat- Freischaltung Was tun, wenn mein Rechner immer wieder die Freischaltung der Lernwerkstatt 9 privat verliert und ich die Ursache dafür nicht finden kann? Normalerweise genügt es, genau eine einzige online-freischaltung

Mehr

S7-Hantierungsbausteine für R355, R6000 und R2700

S7-Hantierungsbausteine für R355, R6000 und R2700 S7-Hantierungsbausteine für R355, R6000 und R2700 1. FB90, Zyklus_R/W Dieser Baustein dient zur zentralen Kommunikation zwischen Anwenderprogramm und dem Modul R355 sowie den Geräten R6000 und R2700 über

Mehr

10. Elektrische Logiksysteme mit

10. Elektrische Logiksysteme mit Fortgeschrittenenpraktikum I Universität Rostock - Physikalisches Institut 10. Elektrische Logiksysteme mit Rückführung Name: Daniel Schick Betreuer: Dipl. Ing. D. Bojarski Versuch ausgeführt: 22. Juni

Mehr

TeamSpeak3 Einrichten

TeamSpeak3 Einrichten TeamSpeak3 Einrichten Version 1.0.3 24. April 2012 StreamPlus UG Es ist untersagt dieses Dokument ohne eine schriftliche Genehmigung der StreamPlus UG vollständig oder auszugsweise zu reproduzieren, vervielfältigen

Mehr

Meine neue CNC-Steuerung mit China CNC Karte. Vorderseite. Rückseite

Meine neue CNC-Steuerung mit China CNC Karte. Vorderseite. Rückseite Meine neue CNC-Steuerung mit China CNC Karte Vorderseite Rückseite Nun die Belegungen der eigenen Anschlüsse Im Folgenden sind diese Anschlüsse für die Achsen und Endschalter zu X, Y, Z und C gleich belegt

Mehr

Wir wünschen Ihnen viel Freude und Erfolg mit Ihrem neuen X-PRO-USB-Interface. Ihr Hacker-Team

Wir wünschen Ihnen viel Freude und Erfolg mit Ihrem neuen X-PRO-USB-Interface. Ihr Hacker-Team Installationsanleitung Hacker X-PRO-USB-Controller V2 Software + Interface Sehr geehrter Kunde, wir freuen uns, dass Sie sich für das X-PRO-USB-V2-Interface aus unserem Sortiment entschieden haben. Sie

Mehr

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten. 1 Einleitung Lernziele automatische Antworten bei Abwesenheit senden Einstellungen für automatische Antworten Lerndauer 4 Minuten Seite 1 von 18 2 Antworten bei Abwesenheit senden» Outlook kann während

Mehr

Installationsanleitung für das KKL bzw. AGV4000 Interface

Installationsanleitung für das KKL bzw. AGV4000 Interface Installationsanleitung für das KKL bzw. AGV4000 Interface Diese Anleitung ist unter Windows XP erstellt worden, ist aber auch übertragbar auf Windows 2000/ Vista / Windows 7. Je nach Einstellungen des

Mehr

Excel-Anwendung Wartungsplan

Excel-Anwendung Wartungsplan Excel-Anwendung Wartungsplan 1. Eigenschaften 2. Installation 3. Makros in Excel 2010 aktivieren 4. Hinweise zur Eingabe der Daten 5. Dateneingabe 6. Suchblatt 7. Autor 1. Eigenschaften (zurück) Wartungsplan

Mehr

FrontDoor/Monitor mehr sehen von FrontDoor

FrontDoor/Monitor mehr sehen von FrontDoor FrontDoor/Monitor mehr sehen von FrontDoor BYTEBAR.EU NEHMEN SIE SICH MEHR HERAUS Haben Sie schon einmal mit Ihrem Laptop direkt den Massenspeicher ausgelesen? FrontDoor/Monitor macht dies noch angenehmer.

Mehr

Folgeanleitung für Fachlehrer

Folgeanleitung für Fachlehrer 1. Das richtige Halbjahr einstellen Folgeanleitung für Fachlehrer Stellen sie bitte zunächst das richtige Schul- und Halbjahr ein. Ist das korrekte Schul- und Halbjahr eingestellt, leuchtet die Fläche

Mehr

Anleitung für den Euroweb-Newsletter

Anleitung für den Euroweb-Newsletter 1. Die Anmeldung Begeben Sie sich auf der Euroweb Homepage (www.euroweb.de) in den Support-Bereich und wählen dort den Punkt Newsletter aus. Im Folgenden öffnet sich in dem Browserfenster die Seite, auf

Mehr

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE-84508 Burgkirchen E-Mail: info@weinzierl.de Web: www.weinzierl.

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE-84508 Burgkirchen E-Mail: info@weinzierl.de Web: www.weinzierl. Installations- und Bedienanleitung DE-84508 Burgkirchen E-Mail: info@weinzierl.de Web: www.weinzierl.de 2013-08-12 Seite 1/6 Inhaltsverzeichnis 1. BESCHREIBUNG... 3 2. SYSTEMVORAUSSETZUNGEN... 3 3. INSTALLATION...

Mehr

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte

Mehr

Öffnen Sie den Internet-Browser Ihrer Wahl. Unabhängig von der eingestellten Startseite erscheint die folgende Seite in Ihrem Browserfenster:

Öffnen Sie den Internet-Browser Ihrer Wahl. Unabhängig von der eingestellten Startseite erscheint die folgende Seite in Ihrem Browserfenster: Schritt 1: Verbinden Sie Ihr wireless-fähiges Gerät (Notebook, Smartphone, ipad u. ä.) mit dem Wireless-Netzwerk WiFree_1. Die meisten Geräte zeigen Wireless-Netzwerke, die in Reichweite sind, automatisch

Mehr

Fingerpulsoximeter. A. Wie führt man einen Echtzeitdatentransfer vom PULOX PO-300 zum Computer durch und speichert diese Messdaten auf dem PC?

Fingerpulsoximeter. A. Wie führt man einen Echtzeitdatentransfer vom PULOX PO-300 zum Computer durch und speichert diese Messdaten auf dem PC? Mini-FAQ v1.5 PO-300 Fingerpulsoximeter A. Wie führt man einen Echtzeitdatentransfer vom PULOX PO-300 zum Computer durch und speichert diese Messdaten auf dem PC? B. Wie nimmt man mit dem PULOX PO-300

Mehr

Technical Note 0302 ewon

Technical Note 0302 ewon Technical Note 0302 ewon Variablen (Tags) aus einer Rockwell Automation Steuerung auslesen - 1 - Inhaltsverzeichnis 1 Allgemeines... 3 1.1 Information... 3 1.2 Hinweis... 3 2 Allen Bradley MicroLogix...

Mehr

Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE

Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE Dezernat 6 Abteilung 4 Stand: 14.Oktober 2014 Inhalt 1. Einleitung 3 2. Räume & gemeinsame Termine finden 3 3. Rüstzeit 8 4. FAQ: Oft gestellte

Mehr

Installation der SAS Foundation Software auf Windows

Installation der SAS Foundation Software auf Windows Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software

Mehr

Local Control Network Technische Dokumentation

Local Control Network Technische Dokumentation Steuerung von Hifi-Anlagen mit der LCN-GVS Häufig wird der Wunsch geäußert, eine Hi-Fi-Anlage in die Steuerung der LCN-GVS einzubinden. Auch das ist realisierbar. Für die hier gezeigte Lösung müssen wenige

Mehr

Anwendertreffen 25./26. Februar. cadwork update

Anwendertreffen 25./26. Februar. cadwork update cadwork update Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt zwei Möglichkeiten, die Dateien aus

Mehr

ISi. ISi Technologie GmbH. MET -Schnittstelle zu Davis WeatherLink Version 5.7

ISi. ISi Technologie GmbH. MET -Schnittstelle zu Davis WeatherLink Version 5.7 ISi ISi Technologie GmbH MET -Schnittstelle zu Davis WeatherLink Version 5.7 Einleitung Die MET -Schnittstelle zur Davis -WeatherLink Software Version 5.7 oder höher erlaubt die Online-Uebernahme der Wetterdaten

Mehr

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep 1. Erstellen Sie ein neues Rechnungsformular Mit book n keep können Sie nun Ihre eigenen

Mehr

Facharbeit Informatik. Thema:

Facharbeit Informatik. Thema: Facharbeit Informatik Thema: Rechneraufbau Mit Locad 2002 1 Inhaltsangabe Inhalt: Seite: 1. Einleitung 3 2. Inbetriebnahme der Schaltung 3 3. Eingabe 4 4. CPU 5 5. RAM/HDD 8 6. Ausgabe 10 7. Auf einer

Mehr

Tageslichtsimulator Easy Time Controll. Bedienungsanleitung

Tageslichtsimulator Easy Time Controll. Bedienungsanleitung Tageslichtsimulator Easy Time Controll Bedienungsanleitung Mit unserem frei programmierbaren Tageslichsimulator Easy Time Controll halten Sie nun ein Gerät in Händen, mit welchem Sie ihre Aquarium-/Terrarium

Mehr

Eine für alles. Die htp Mobil Multicard.

Eine für alles. Die htp Mobil Multicard. Eine für alles. Die htp Mobil Multicard. Die htp Mobil Multicard Inhalt Eine Karte viele Möglichkeiten 4 Aktivierung 5 Standardeinstellungen 6 Individuelle Einstellungen 8 Geräteübersicht 11 Sollten Sie

Mehr

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung The ToolChain Grafisches Debugging mit der QtCreator Entwicklungsumgebung geschrieben von Gregor Rebel 2014-2015 Hintergrund Neben dem textuellen Debuggen in der Textkonsole bieten moderene Entwicklungsumgebungen

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

DIGITALVARIO. Anleitung Bootloader. Ausgabe 0.1 deutsch 29.11.2005. für Direkt-Digital-Vario. Firmware ab 00-06-00 Hardware 01 Seriennummer ab 0003

DIGITALVARIO. Anleitung Bootloader. Ausgabe 0.1 deutsch 29.11.2005. für Direkt-Digital-Vario. Firmware ab 00-06-00 Hardware 01 Seriennummer ab 0003 DIGITALVARIO Anleitung Bootloader Ausgabe 0.1 deutsch 29.11.2005 für Direkt-Digital-Vario Firmware ab 00-06-00 Hardware 01 Seriennummer ab 0003 1. Funktion Der Bootloader dient dazu Updates der Variosoftware

Mehr

MODBUS/TCP und Beckhoff Steuerelemente

MODBUS/TCP und Beckhoff Steuerelemente MODBUS/TCP und Beckhoff Steuerelemente Die 1.7.5 Version wurde zum DOMIQ/Base Modul die Funktion der Bedienung des MOD- BUS/TCP und MODBUS/UDP Protokolls hinzugefügt. Das Base Modul erfüllt die Rolle des

Mehr

Folgeanleitung für Klassenlehrer

Folgeanleitung für Klassenlehrer Folgeanleitung für Klassenlehrer 1. Das richtige Halbjahr einstellen Stellen sie bitte zunächst das richtige Schul- und Halbjahr ein. Ist das korrekte Schul- und Halbjahr eingestellt, leuchtet die Fläche

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Tutorial - www.root13.de

Tutorial - www.root13.de Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk

Mehr

Mailbox Ihr Anrufbeantworter im primacom-netz Anleitung. Inhaltsverzeichnis. 1 Mailbox einrichten. 1.1 Ersteinrichtung. 1.

Mailbox Ihr Anrufbeantworter im primacom-netz Anleitung. Inhaltsverzeichnis. 1 Mailbox einrichten. 1.1 Ersteinrichtung. 1. Sehr geehrter Telefonkunde, wir möchten Ihnen mit dieser Bedienungsanleitung eine Hilfestellung bei der Einrichtung und Bedienung Ihrer Mailbox für Ihren Telefonanschluss geben. Die Mailbox - Ihr Anrufbeantworter

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000 Folgende Anleitung beschreibt, wie Sie ein bestehendes Postfach in Outlook Express, bzw. Microsoft Outlook bis Version 2000 einrichten können. 1. Öffnen Sie im Menü die Punkte Extras und anschließend Konten

Mehr