Besondere Anforderungen bei der Verwendung der in den Mikrocontroller integrierten Peripherie
- Timer können z.B. sowohl benutzt werden, um PWM-Signale zu erzeugen, als auch dazu die Dauer von Ereignissen zu stoppen.
- Der AD-Wandler kann beim ATmega32 an acht verschiedenen Pins Spannungsverläufe messen.
- Manchmal ist es erforderlich Ressourcen dieser Art auf mehrfache Weise in einer bestimmten zeitlichen Abfolge zu benutzen.
- Wie eine Ressource benutzt wird, wird über Registereinstellungen auf dem Mikrocontroller gesteuert.
- Ein sinnvolles Konzept sollte die Möglichkeit vorsehen, diese Registereinstellungen nach Verwendung einer Ressource auch wieder zurücksetzen zu können.
|
Wiederverwendbarkeit: Verwendung von Klassen
- Grundsätzlich bietet die objektorientierte Programmierung bessere Möglichkeiten an, Teilprogramme voneinander zu kapseln und gegenseitige Störungen zu vermeiden.
- Eine große Gefahr geht in der prozeduralen Programmoierung von globalen Variablen und Funktionen aus.
- Werden zwei Programmteile getrennt entwickelt, wie die Verwendung der RS232-Schnittstelle und die des AD-Wandlers, erfordert es Mühe beide prozeduralen Programme miteinander zu verschmelzen, wenn man beide Features gleichzeitig einsetzen will.
- Methoden und Attribute in Klassen sind eindeutig den von der Klasse gebildeten Objekten zugeordnet.
- Bei konsequenter Anwendung der OOP können somit solche Schwierigkeiten nicht auftreten.
- Die Konfiguration des Mikrocontrollers und die Verwendung einzelner Peripherie soll deshalb in Klassen mit entsprechenden Methodne verborgen werden.
|
Reversibilität: start- und stop-Methoden
- Der derzeitige Compiler ist erst gar nicht in der Lage Objekte dynamisch zu erzeugen und wieder zu zerstören, wenn sie nicht gebraucht werden.
- Hier wäre, wie oben beschrieben, der Speicherbedarf nicht immer vorhersehbar und es kann zu Programmabstürzen durch Speicherüberschreitung kommen.
- Der benötigte Speicher für alle benötigten Variablen und Objekte wird deshalb beim Start festgesetzt.
- Statt dessen sollen die notwendigen Konfigurationen und deren Zurücksetzung durch eine start- und eine stop-Methode realisiert werden, die nach Erzeugung eines Objektes für dieses beliebig oft benutzt werden können, z.B. Festlegen des Pins auf dem ein ADW arbeitet, RS232 aktivieren und deaktivieren etc.
|
UML Klassendiagramm
- Mit UML ist es u.a. möglich Klassen unabhängig von der Programmiersprache grafisch darzustellen.
- Eine Klasse hat einen Namen und beinhaltet Methoden und Attribute.
- Genau dies ist in den drei übereinanderliegenden Kästen des UML-Klassendiagramms zu sehen.
- Mit der private-Variablen i ist angedeutet, dass z.B. der Speicherplatz für in den Anwendungsmethoden benötigte Laufvariablen schon beim Erzeugen des Objekts allokiert werden könnten, indem sie als Objektvariablen auftreten.
- Der start(...)-Methode werden die notwendigen Parameter übergeben, um eine bestimmte Peripherie den Bedürfnissen entsprchend zu starten.
- Die stop()-Methode soll nur die für die verwendete Peripherie relevanten Bits in den betroffenen Registern zurücksetzen. Denken Sie an die |= und &= - Methode, um einzelne Bits in Registern zu setzen, bzw. Zurückzusetzen.
|
Bild 0-2: UML-Klassendiagramm für den Entwurf einer geeigneten Klassenstruktur bei allen verwendeten Klassen.