kramann.info
© Guido Kramann

Login: Passwort:










Mikrocontroller
1 Einfuehrung
..1.1 Entwicklungsgeschichtliches
..1.2 Maschinensprache
..1.3 Assemblerbeispiel
..1.4 Sprachwahl
..1.5 Praxis
....1.5.1 Digital_IO
....1.5.2 Byteoperationen
....1.5.3 AVR_Studio
....1.5.4 Testboard
....1.5.5 Aufgaben
....1.5.6 Do_it_yourself
......1.5.6.1 Ampel
......1.5.6.2 Programmierer
..1.6 Literatur
..1.7 Programmierer
....1.7.1 Bauverlauf
....1.7.2 KurzreferenzLow
....1.7.2 Kurzreferenz_16PU
..1.8 Uebung1
..1.9 BoardAtHome
....1.9.1 Software
....1.9.2 Hardware
....1.9.3 Knoppix
....1.9.4 Aufbau
....1.9.5 LED
2 Oszillator
..2.1 Assembler
..2.2 Interner_RC
..2.3 Quarz
..2.4 Taktgenerator
3 DigitalIO
..3.1 Elektrische_Eigenschaften
..3.2 Pullup_Widerstaende
..3.3 Bitmasken_Eingang
..3.4 Bitmasken_Ausgang
..3.5 Tic_Tac_Toe
....3.5.1 DuoLEDs
....3.5.2 Schaltplan
....3.5.3 Spielfeld
....3.5.4 Anwahl
....3.5.5 Kontrolle
..3.6 Laboruebung2
..3.7 Laboruebung2_alt
4 PWM
..4.1 Prinzip
..4.2 Nutzen
..4.3 Generierung
..4.4 Programmierung
..4.5 Servos
..4.7 Laboruebung3
..4.8 LoesungUE3
..4.9 Uebung6
5 LichtKlangKugeln
..5.1 LED
..5.2 RGB
..5.3 Sensoren
..5.4 lautsprecher
..5.5 tonerzeugung
6 UART
..6.1 Bussysteme
..6.2 UART
..6.3 RS232
..6.4 Hardware
..6.5 Senden
..6.6 Hyperterminal
..6.7 Empfangen
..6.8 Broadcast
..6.9 Uebung4
7 Infrarot
..7.1 schalten
..7.2 seriell
..7.3 Uebung
8 OOP
..8.1 Probleme
..8.2 Konzept
..8.3 Statisch
..8.4 Datentypen
..8.5 RS232
....8.5.1 Prozedural
....8.5.2 Analyse
....8.5.3 Umsetzung
....8.5.4 Vererbung
....8.5.5 Statisch
....8.5.6 Performance
..8.6 Fahrzeug
9 ADW
..9.1 ADW
..9.2 Zaehler
10 Peripherie
..10.1 RS232Menue
..10.2 ASCIIDisplay
..10.3 Tastenmatrix
..10.4 Schrittmotor
..10.5 Zaehler
..10.6 Uebung7
11 SPI
..11.1 Testanordnung
..11.2 Register
..11.3 Test1
..11.4 Test2_Interrupt
..11.5 Test3_2Slaves
..11.6 Laboruebung
12 EEPROM
13 I2C
..13.1 MasterSendByte
..13.2 MasterSend2Bytes
..13.3 MasterReceiveByte
..13.4 MasterReceive2Bytes
14 Anwendungen
..14.1 Mechatroniklabor
....14.1.1 Biegelinie
....14.1.2 Ausbruchsicherung
....14.1.3 Einachser
....14.1.4 AV
....14.1.5 Vierradlenkung
....14.1.6 Kommunikation
..14.2 Sinuserzeugung
....14.2.1 Variante1
....14.2.2 Variante2
....14.2.3 Variante3
....14.2.4 Variante4
..14.3 Laboruebung8
..14.4 Loesung_Ue8
..14.5 SPI_Nachtrag
20 Xubuntu
kramann.info
© Guido Kramann

Login: Passwort:




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.
UML-Klassendiagramm

Bild 0-2: UML-Klassendiagramm für den Entwurf einer geeigneten Klassenstruktur bei allen verwendeten Klassen.