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 Zaehler
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
..7.4 Cloud
8 OOP
..8.1 Ansatz
..8.2 Uebung
..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 Zufallsgenerator
..9.3 Sensoren
..9.4 Musterloesung
10 Cloud
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

1.4 Sprachwahl

- Welche technische Probleme heutzutage auf der Ebene der Maschinenprogrammierung gelöst werden.
64 schicken in C

Bild 1.4-1: 64 an Port C schicken in C

  • Obiges Programm macht das gleiche, wie das zuvor behandelte Assembler-Programm.
  • Auch hier ist es in der Programm-Entwicklungsumgebung AVR-Studio dargestellt.
  • Die Include-Datei sorgt für eine Vordefinition der Mikrocontroller-Register. hierdurch werden u.a. die Register PORTC und DDRC verfügbar gemacht.
  • Durch Zuweisung eines Wertes von 255 (alle 8 Bit gesetzt) an das Register DDRC wird dafür gesorgt, dass alle Pins des Digitalen Ein- und Ausgangs Port C auf Ausgang geschaltet werden.
  • Erst hiernach ist es möglich durch Zuweisung der 64 an das Register PORTC den Digitalen Ausgang PC6 bei Pin 28 auf 5V zu setzen.
  • Hinweis: Intern werden Zahlen immer binär gespeichert. Zu welcher Zahlenbasis man im Programmcode die Zahlen hinschreibt, ist dabei völlig irrelevant und hängt nur von dem jeweiligen Erfordernis an die Lesbarkeit ab.
  • In diesem Fall korrespondieren die Bits der 8-Bit-Zahlen der unsigned char-Variablen (Register) mit Pins (Beinchen) des AT,ega32.
  • Somit liegt es nahe, die Binärdarstellung im Programm zu verwenden.
  • Es gilt also im Programm: 13 ist das gleiche wie 0x0d, ist das gleiche wie 0b00001101

C oder Assembler ?

  • In jedem Fall ist das C-Programm kompakter und übersichtlicher, bietet also Forteile in Bezug auf Wartbarkeit und Handhabbarkeit.
  • Jedoch kann nicht vorausgesehen werden, was der C-Compiler aus dem Quellcode macht, während man ja beim Assemblerprogramm die Taktzyklen jedes Befehls direkt angeben kann.
  • Ein Programm, bei dem es auf ganz genaues Timing ankommt, kann daher besser mit Assembler geschrieben werden.
  • Das gleiche gilt für Fälle, bei denen der Programmspeicher sehr knapp ist und voll ausgenutzt werden soll.

Entwicklungstrend

  • Mit steigender Leistungsfähigkeit der Mikrocontroller, wird es immer besser möglich, höhere Programmiersprachen einzusetzen.
  • Je höher die Programmiersprache, desto weiter wird von der Rechnerarchitektur abstrahiert und desto näher kommt man dem Ideal der Plattform-unabhängigen Programmierung (z.B. Java).
  • Damit verliert die Kenntnis der Rechnerarchitektur an Bedeutung.
  • Die Erfordernis, die im Mikrocontroller integrierte Peripherie zu kennen und deren Ansteuerung zu beherrschen, bleibt aber bestehen.
  • Darum eben liegt der Fokus dieser Veranstaltung darauf, diese Peripherie kennen- und programmieren zu lernen.
  • Und damit schließt sich der Bogen dieser ersten Einführung für diese Lehrveranstaltung, deren genauerer Titel lautet:
Konfiguration und Programmierung der in einem Mikrocontroller integrierten Peripherie
  • Das nun folgende Kapitel vermittelt die ersten Schritte bei der Mikrocontroller-Programmierung