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:




Unsere zuerst behandelte Peripherie: Digitale Ein- und Ausgänge

Stromlaufplan

Bild 0-1: Stromlaufplan entsprechend Testboard

  • Obiges Bild zeigt den für uns heute wichtigen Teil des Stromlaufplans auf dem Testboard.
  • Port C wird komplett mit einem weiteren Mikrocontroller und dort für eine dezimale Sieben-Segment-Anzeige aufbereitet.
  • An Bit 0 (PB0) und Bit 1 (PB1) des Ports B sind je ein Taster angeschlossen.
  • Mit diesem Teil der Hardware-Anordnung soll über C-Programme experimentiert werden.

Ports Hardware-Sicht

  • Wie dem Stromlaufplan zu entnehmen ist, werden vier Ports nach außen an die Pins des Mikrocontrollers geführt: Port A, Port B, Port C und Port D.
  • Es ist keinesfalls selbstverständlich, dass alle Bits eines Ports als Pins nach außen geführt werden.
  • Vielmehr werden dem durch die verhältnismäßig kleine Anzahl verfügbarer Pins Grenzen gesetzt.
  • Insbesondere gibt es auch Bausteine mit nur 20 Pins (z.B. ATmega 8) oder 8 Pins (z.B. ATiny 13) des gleichen Herstellers.
  • Bei den für die meisten Mikrocontrollern auch verfügbaren SMD-Varianten, werden oft mehr Pins herausgeführt und die Ports vollständiger verfügbar gemacht.
  • Insbesondere die großen Typen (z.B. AT90CAN128), liegen oft nur noch als SMD-Variante vor, da sie so mit Peripherie vollgepackt sind, dass sie mit den maximal 40 Pins gar nicht verwendungsfähig wären.
  • Was an dem Stromlaufplan noch nicht sichtbar ist: Jeder Pin hat zumeist nicht nur eine Funktion, sondern mehrere, zwischen denen durch entsprechende Programm-seitige Konfiguration ausgewählt werden kann.
  • So sind die Pins 33 bis 40 nicht nur verwendbar als Port A, sondern auch als mögliche Eingänge für einen integrierten Analog-Digital-Wandlers.
  • Doch diese vielgestaltige weitere integrierte Peripherie soll an dieser Stelle erst einmal ausgeblendet bleiben.

Die Taster

  • Betrachten Sie die Taster für PB0 und PB1.
  • Auffällig sind die zusätzlich gegen Masse geschalteten Widerstände von 10kΩ.
  • Wären diese nicht vorhanden, so wäre nicht eindeutig das Potential der Eingänge auf 0Volt gewährleistet und damit intern nicht, dass am Eingang bei nicht gedrücktem Taster eine logische Null ankommt.
  • Was passiert, wenn der Taster gedrückt wird?
  • Dann steigt das Potential am digitalen Eingang auf nahezu 5 Volt. Warum?
  • Betrachten Sie den geschlossenen Schalter als sehr niederohmigen Widerstand, wogegen die 10kΩ sehr hochohmig sind. Weitaus die meiste Spannung fällt dann am großen 10kΩ Widerstand ab und läßt das Potential am Eingangspunkt nahe an 5 Volt herangehen.

Die LEDs

  • Das LED vom vorangegangenen Stromlaufplan war gegen Masse (GND) geschaltet.
  • D.h. es leuchtet, wenn das Potential am verbundenen digitalen Ausgang positiv wird.
  • Somit leuchtet es, wenn intern eine logische 1 vorliegt.
  • Genauso wäre es möglich, das LED gegen +5Volt zu schalten. Dann invertiert sich das Verhalten.

Ports aus Software-Sicht

DDRA, DDRB, DDRC, DDRD

  • Intern kann jedes Bit eines Ports als Eingang (z.B. Anschluß eines Tasters), oder Ausgang (z.B. Anschluß einer LED) geschaltet werden.
  • Dies geschiet für Port A mit Hilfe des Registers DDRA, analog für die anderen Ports mit DDRB, DDRC, DDRD.
  • Bei diesen Registern bedeutet ein Bit auf 1 gesetzt, dass der korrespondierende Pin als Ausgang fungiert.
  • Wird das Bit dagegen auf 0 gesetzt, fungiert der Pin als Eingang.
  • DDRB = 0b11111100; heißt: Setze PB0 und PB1 als Eingang und PB2, PB3, PB4, PB5, PB6 und PB7 als Ausgang.

PORTA, PORTB, PORTC, PORTD

  • Das Register PORTA dient dazu die korrespondierenden Pins auf 5Volt oder 0Volt zu setzen.
  • PORTA = 0b00000011 bedeutet: Setze PA0 und PA1 auf 5Volt und alle anderen auf 0Volt.
  • Analoges gilt für PORTB, PORTC und PORTD.

PINA, PINB, PINC, PIND

  • Das Programm-seitige Lauschen danach, welche Potentiale an einem Port außen anliegen (Taste gedrückt oder nicht), geschieht nicht mit den PORTX-Registern, sondern mit PINA bis PIND.
  • akku = PINA; holt beispielsweise die aktuell außen anliegende Potentiale bei PA0 bis PA7 als digitale Zustände in die Varable akku.