109
Mikrocontroller-Kurs Mikrocontroller-Kurs DARC - Ortsverband H13 DARC - Ortsverband H13 Gerrit Buhe, DL9GFA Mai 2012 – Juni 2013

Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

  • Upload
    vophuc

  • View
    248

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

Mikrocontroller-KursMikrocontroller-KursDARC - Ortsverband H13DARC - Ortsverband H13

Gerrit Buhe, DL9GFAMai 2012 – Juni 2013

Page 2: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

2 MC-Kurs H13 DL9GFA

Inhalt Mikrocontroller-KursInhalt Mikrocontroller-Kurs

● Mikrocontroller● Einsatz, Aufbau und Funktionsweise● Zahlendarstellung und Binärarithmetik● Programmiermodell (Kern, Register, Speicher)

● Programmierung● Assembler, 'C' und Maschinensprache● Übersetzung Mensch → Maschine

● Einführung in die Programmiersprache 'C' (in Übungen)● Aufbau eines Programms● Variablen und Datentypen● Operanden und Boolesche Algebra● Ablaufsteuerung● Funktionen

● Programmierung einfacher Peripherie● Digitale Ein- und Ausgänge (LED-Blinker, Taster, Würfel)● Darstellung von Buchstaben (LC-Display)

Page 3: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

3 MC-Kurs H13 DL9GFA

Inhalt Mikrocontroller-KursInhalt Mikrocontroller-Kurs

● Spezialgebiet Energiesparen● Stromspararchitektur● Taktsystem● Energiesparmodi – Low Power Modes● Ereignisorientierung - Interrupts● Programmablauf mit Ereignisorientierung

● Programmierung erweiterter Peripherie● Timer / Counter (Uhr, PWM, Servo)● Digital-Analog-Wandler durch PWM● Analog-Digital-Wandler (Poti, NTC-Thermometer)● Multiplexen / Charlieplexen mit Timer● Timer im Capture-Modus (Ultraschallabstandssensor)● Timer als Frequenzzähler bis 30MHz● Serielle Schnittstelle USCI (SPI, I²C, UART)

● Embedded Software Architekturen● Round-Robin● Round-Robin mit Interrupts● Function Queue Scheduling● Real-Time Operating System● Vergleich

Page 4: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

4 MC-Kurs H13 DL9GFA

EinführungEinführung

● Was sind Mikrocontroller (auch μC, MCU, MC) ?● Kleine programmierbare Halbleiterchips, die neben einem Prozessor auch

Peripheriefunktionen beinhalten, wie z.B.● Analog-Digital- und Digital-Analog-Wandler● Timer, Counter● LCD-Controller● Serielle Schnittstellen (USB, UART, IIC, SPI)● Ethernet-Schnittstelle● Programm- und Arbeitsspeicher (ROM, RAM)

● MCs sind quasi Ein-Chip-Computersysteme

● Wo werden sie eingesetzt?● Heutzutage fast überall und oft unbemerkt

● Radio, TV, CD-/DVD-Player, IR-Fernbedienungen● Handy, Uhr, Chip-Karte (Telefon-, Geldkarte)● Auto: Steuergeräte für Airbag, ABS, ESP, Motor, Instrumente, Sitz, Fensterheber,...● Tastatur, Maus, Drucker, Monitor, Scanner● u.v.m

● Da MCs oft kostengünstiger sind als Elektromechanik, verdrängen sie sogar einfache elektromechanische Lösungen

● Bimetall zur Temperaturregelung im Bügeleisen● Entprellen von Tastern, um diese mechanisch einfacher aufzubauen

Page 5: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

5 MC-Kurs H13 DL9GFA

DigitaltechnikDigitaltechnik

● Mikrocontroller sind digitale Bausteine

● Digital (lat. digitus, „Finger“)● Abgestufter und begrenzter Wertevorrat● Digitalsignale sind wert- und zeitdiskret● Anwendungen:

● Abakus (Rechenmaschine)● Schrift und Sprache (diskrete Symbole,

begrenzter Zeichenvorrat)● Geld (es wird kein Gold mehr aufgewogen)● Erbgut ist diskret kodiert

● Alle Signale im MC liegen digital vor, ggf. muß Analog-Digital-gewandelt werden● Verarbeitung der Informationen erfolgt binär (Binär-, Dual- oder Zweiersystem)

● 1 oder 0● High oder Low (H/L, Spannung)● Relais oder Transistor ist offen oder geschlossen● Vorteil: hohe Störsicherheit!

● Erste Computer wurden mechanisch gebaut (1937, Zuse1) und dann mit Relais (1939, Zuse2)

Page 6: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

6 MC-Kurs H13 DL9GFA

ZahlendarstellungZahlendarstellung

● Dezimale Darstellung von Zahlen

● Binäre Darstellung

● Hexadezimale Darstellung

214=2⋅1021⋅1014⋅100

214=1⋅271⋅260⋅251⋅24

0⋅231⋅221⋅210⋅20

214=1101 0110b

214=D6h=0xD6

23 22 21 20 Dez Hex

0 0 0 0 0 0

0 0 0 1 1 1

0 0 1 0 2 2

0 0 1 1 3 3

0 1 0 0 4 4

0 1 0 1 5 5

0 1 1 0 6 6

0 1 1 1 7 7

1 0 0 0 8 8

1 0 0 1 9 9

1 0 1 0 10 A

1 0 1 1 11 B

1 1 0 0 12 C

1 1 0 1 13 D

1 1 1 0 14 E

1 1 1 1 15 F

Page 7: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

7 MC-Kurs H13 DL9GFA

Binäre ArithmetikBinäre Arithmetik

● Addition                  11  0001     1         0011      3 +1100   +12        +1011    +11  1101    13         1110     14

● Multiplikation

     0011       3   x 0101     x 5     0011    0000   0011  0000  0001111  8+4+2+1=15

(n bits) mal (m bits) ergeben bis zu (n+m) bits!

23 22 21 20 Dez Hex

0 0 0 0 0 0

0 0 0 1 1 1

0 0 1 0 2 2

0 0 1 1 3 3

0 1 0 0 4 4

0 1 0 1 5 5

0 1 1 0 6 6

0 1 1 1 7 7

1 0 0 0 8 8

1 0 0 1 9 9

1 0 1 0 10 A

1 0 1 1 11 B

1 1 0 0 12 C

1 1 0 1 13 D

1 1 1 0 14 E

1 1 1 1 15 F

Page 8: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

8 MC-Kurs H13 DL9GFA

Aufbau MC - CPUAufbau MC - CPU● Zentrale Recheneinheit (Central Processing Unit – CPU)

● Bekommt Takt (MCLK) als Herzschlag - Holt sich über Adress- und Datenbus Befehle aus Programmspeicher - Holt sich zu verarbeitende Daten in Register - Verarbeitet Daten inALU (Arithmetic Logic Unit), Schreibt Ergebnis wieder zurück in Register oder Speicher-bereich, Hält Statusinformationen in Register, Greift über Adress- und Datenbus auf alle anderen peripheren Einheiten zu (In/Out-Schnittstellen=Ports, AD/DA-Wandler, Timer, Speicher)

MCLK

Register

Page 9: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

9 MC-Kurs H13 DL9GFA

Aufbau MC - CPU-RegisterAufbau MC - CPU-Register

● 16 Register je 16 Bit Wortbreite

● R0...R3 haben Spezialfunktionen● Programm Counter● Stack Pointer● Status Register● Constant Generator für häufig nötige

Konstanten wie 0, 1, -1, 2, 4, 8

● R4...R15 können frei verwendet werden● Jedes kann als Quelle oder Ziel dienen

MA

B –

Mem

o ry

Add

ress

Bus

MD

B –

Mem

o ry

Dat

a B

us

. . . . . . .

. . . . . . .

. . . . . . .

Page 10: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

10 MC-Kurs H13 DL9GFA

Befehle der MSP430-CPUBefehle der MSP430-CPU

● RISC - Architektur (Reduced Instruction Set Computer)● CPU kennt nur 27 Grundbefehle● 24 weitere werden durch Grund-

befehle emuliert

● Ein binärer Maschinenbefehl setzt sich wie in Tabelle unten zusammen

● Op-Code – Befehl aus der Tabelle● S-Reg – Quellregister (Source)● As – Adressierungsart Quellregister● D-Reg – Zielregister (Destination)● Ad – Adressierungsart Zielregister● BW – Byte oder Wort (8bit/16bit)

Format IQuelle,

Ziel

Format IIEinzel-operant

Format III+/- 9bit Offset

add(.b) call jmp

addc(.b) swpb jc

and(.b) sxt jnc

bic(.b) push(.b) jeq

bis(.b) reti jne

bit(.b) rra(.b) jge

cmp(.b) rrc(.b) jl

dadd(.b) jn

mov(.b)

sub(.b)

subc(.b)

xor(.b)

15

14

13

12

11

10

9 8 7 6 5 4 3 2 1 0 Bit imBefehl

Op-Code S-Reg Ad

Bw

As D-Reg I

0 0 0 1 0 0 Op-Code

Bw

Ad D-Reg II

0 0 1 Condition 10bit PC Offset III

Page 11: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

11 MC-Kurs H13 DL9GFA

Befehle der MSP430-CPUBefehle der MSP430-CPU

● Befehle werden unverlierbar in den (Flash-)ROM programmiert und von CPU dort abgeholt

● Einige Beispielbefehle (Quelle und Ziel können Register oder Speicheradressen sein):

CPU-Befehl Erklärung

ADD Quelle, Ziel Addiert Quelle zum Ziel (-Register)

CMP Quelle, Ziel Vergleicht Quelle mit Ziel, Ergebnis in Status-Flags

JNE Ziel Springe zur Adresse Ziel, wenn wenn nicht gleich

MOV Quelle, Ziel Schreibe Quelle in Ziel

BR Ziel Springe an Adresse Ziel

CALL Ziel Rufe Subroutine bei Adresse Ziel auf

RET Springe zurück von Subroutine (zur alten Adresse)

RLA Ziel Rotiere Bits von Ziel links herum arithmetisch (mal 2)

XOR Quelle, Ziel Bitweise Exklusiv-ODER-Operation von Quelle mit Ziel

Page 12: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

12 MC-Kurs H13 DL9GFA

Aufbau MSP430G2553Aufbau MSP430G2553

Page 13: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

13 MC-Kurs H13 DL9GFA

Memory MappingMemory Mapping

● Adressbereiche über die auf Register und Speicher zugegriffen wird

● Startadresse des Flash und End-adresse des RAM ist abhängig von Größe (MSP430-Derivat)

● Informationsspeicher enthält Kalibrier-daten des Oszillators (DCO) und Temperatur-sensors

● Anmerkung:● Linker kümmert sich nach Angabe

des Derivates automatisch darum● Insbesondere bei C-Programmierung

muß man keine Adresse selbst kennen(aber endliche Größe!)

● Beim Debuggen ggf. wichtig

Interupt Vector Table

Flash

InformationMemory

RAM

16-bitPeripherals

8-bitPeripherals

8-bit Special FunctionRegisters

0Fh

0h

0FFh010h

01FFh0100h

03FFh0200h

FFDFh0C000h

0FFFFh0FFE0h

MSP430G2553

010FFh01000h

Page 14: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

14 MC-Kurs H13 DL9GFA

Pinbelegung MSP430G2553Pinbelegung MSP430G2553

● Die meisten Pins können mehrere verschiedene Funktionen haben● Sehr hohe Flexibilität● Kann bei Schaltungsdesign verwirren (Fehlerquelle!)● Müssen vor Verwendung in Software konfiguriert werden

● Minimalbeschaltung (Vcc=1.8V...3.6V):

47k

Vcc

1n5

Vcc

100n

Debug

Page 15: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

15 MC-Kurs H13 DL9GFA

Zugriff auf Peripherie – PortsZugriff auf Peripherie – Ports● Konfiguration und Nutzung der Peripherie erfolgt über spezielle Funktionsregister

● Diese sind über definierte Namen/Adressen lese- und schreibbar● Funktion oder Bedeutung jedes Bits muß nachgeschlagen werden

● Allgemeine digitale Ein- und Ausgänge - Ports● Unabhängig Pin für Pin programmierbar (In, Out, Interrupteingang mit wählbarer Flanke)● Individuell programmierbare integrierte pull-up- und pull-down-Widerstände● Die meisten Pins sind als kapazitiver Touch-Sensor betreibbar (Pin-Oszillator)

● Beispiel: paralleler Port 1 – 8 Bit pro Register, jedes steht für das zugehörige IO-Pin

Register Adresse Erklärung

P1IN 20h Zeigt Zustand der Eingangs-Pins (0/1 bei low/high-Pegel am Pin)

P1OUT 21h Hier schreibt man gewünschten Ausgangszustand hinein (0/1 → L/H)

P1DIR 22h Gibt Richtung der Pins an, 0 → Eingang, 1 → Ausgang

P1IFG 23h Zeigt Interrupt-Flags an

P1IES 24h Steuert Interrupt-Reaktion bei steigender oder fallender Flanke

P1IE 25h Aktiviert Interrupt-Funktion für jedes Pin einzeln

P1SEL 26h Wählt alternative Funktion des Pins (z.B. AD-Wandler, Timer-input)

P1SEL2 41h Wählt ebenfalls altern. Funktion des Pins (wg. vieler Möglichkeiten)

P1REN 27h Aktiviert Pull-up oder Pull-down-Widerstand pro Pin

Page 16: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

16 MC-Kurs H13 DL9GFA

Programmierung - AssemblerProgrammierung - Assembler

● Programm beschreibt Ablauf von Aktionen, um ein Ziel zu erreichen● Der MC versteht nur Befehle aus Nullen und Einsen: 0101 0011 0111 0101b● Mit Assembler kann etwas lesbarer sehr Hardware-nah programmiert werden

● Architektur des MC und der konkrete Befehlssatz müssen sehr gut bekannt sein● Hohe Anforderungen an Wissen um numerische Methoden (z.B. Wurzelziehen, Sinus)● Relativ mühsam

Page 17: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

17 MC-Kurs H13 DL9GFA

Programmierung – 'C'Programmierung – 'C'

● Hochsprache 'C' erlaubt abstrakteres Programmieren● Gut lesbare und strukturierte Programme● Sehr gute Wiederverwendung von fertigem Code (Portierbarkeit von/auf andere Plattformen)● Bereits viele Funktionen in Bibliotheken mitgeliefert (z.B. mathematische: sin(), cos(), sqrt())

Page 18: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

18 MC-Kurs H13 DL9GFA

Übersetzung für den MCÜbersetzung für den MC

● Das Übersetzen von in Assembler und/oder 'C' geschriebenen Programmen in für den MC verständliche Maschinensprache übernimmt der Compiler und Assembler

● Das Einbinden fertiger Bibliotheksfunktionenund Platzieren der Maschinen-Code-Befehlein den MC-Speicher erfolgt durch den Linker

● Den Aufruf dieser Werkzeuge mit den korrekten Parametern nimmt uns die Entwicklungsumgebung ab (IDE, hier CCS)

● Das Ausführen des generierten Programms zur Fehlersuche (ggf. im Einzelschritt) nennt man Debuggen (engl. entwanzen)

Page 19: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

19 MC-Kurs H13 DL9GFA

Unser erstes ProgrammUnser erstes Programm

● LaunchPad kann direkt über USB an Notebook angeschlossen werden

● Starte die Entwicklungsumgebung Code Composer Studio (CCS)● Lege ein neues Projekt an (z.B. mit dem Namen Blinky)

● Aufgabe:

● Programmiere ein Blinklicht mit der LED1 an Port 1.0 in Assembler

● Variiere die Blinkfrequenz● Programmiere das gleiche in 'C'● Modifiziere zum Wechselblinker mit LED2

LEDs

Page 20: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

20 MC-Kurs H13 DL9GFA

Blinky.cBlinky.c

Page 21: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

21 MC-Kurs H13 DL9GFA

Datentypen in 'C'Datentypen in 'C'

● Nicht alle „Arbeitsdaten“ können gleichzeitig in Registern gehalten werden → sie werden als Variablen im RAM gespeichert

● Der Wertebereich von Variablen muß vor der ersten Verwendung definiert werden, damit die Speichergröße im RAM festgelegt werden kann (Deklaration des Datentyps)

Datentyp Kleinster Wert Größter Wert Größe in Bit

bool 0 1 8

(signed) char -128 127 8

unsgined char 0 255 8

(singed) int -32.768 32.767 16

unsigned int 0 65.535 16

(signed) long -2.147.483.648 2.147.483.647 32

unsigned long 0 4.294.967.295 32

float 3.4E-38 3.4E+38 32

double 1.7E-308 1.7E+308 64

Page 22: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

22 MC-Kurs H13 DL9GFA

Boolesche AlgebraBoolesche Algebra

● In Mikrocontrollern werden oft nur einzelne Bits abgefragt (Status) oder zum Steuern manipuliert

● Dazu werden logische Operationen mit Hilfe von Bitmasken bitweise angewendet

NOT    0111    Bsp. 'C'  P1OUT = ~P1OUT;           Wechselt alle Bits     = 1000               //P1OUT vorher 11010010b

//     nachher 00101101b

       0101    Bsp. 'C'  P1OUT = P1OUT & 11001111b;       Löscht BitsAND    1001                                 //P1OUT vorher 11010010b     = 0001                //     nachher 11000010b

       0101 Bsp. 'C'  P1OUT = P1OUT | 00100100b;        Setzt BitsOR     0011               //P1OUT vorher 11010010b     = 0111              //     nachher 11110110b

       0101    Bsp. 'C'  P1OUT = P1OUT ^ 00000011b;  Schaltet Bits umXOR    0011               //P1OUT vorher 11010010b     = 0110               //     nachher 11010001b

Page 23: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

23 MC-Kurs H13 DL9GFA

ÜbungenÜbungen

● Optimiere Blinky.c durch Einsatz Boolescher Algebra

● Erstellung eigener Funktionen und Programmablauf (PC, SP)

● Auslagerung eigener wiederverwendbarer Funktionen in separate Datei

● Auswertung von Tastern

● Entwickle einen elektronischen Würfel

Page 24: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

24 MC-Kurs H13 DL9GFA

Elektronischer WürfelElektronischer Würfel

Page 25: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

25 MC-Kurs H13 DL9GFA

Darstellung von BuchstabenDarstellung von Buchstaben

● Prozessoren verstehen nur (binäre) Zahlen

● ASCII Code ist die numerische Darstellung von Buchstaben und Steuerzeichen

● Dabei wird für jeden Buchstaben genau ein Byte (Datentyp char ) verwendet (2^8 → 0...255)

● Beispiel● Ein großes 'A' wird wird durch das

Datenbyte 65 bzw. 41h repräsentiert

● Wörter und Sätze werden als String bezeichnet und in Anführungszeichen angegeben:

char MeinText [26]=“das ist meine Zeichenkette“;

● Die Zeichen von 0...127 sind genormt, aber bei 128...255 gibt es gelegentlich Abweichungen

Page 26: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

26 MC-Kurs H13 DL9GFA

LC-DisplayLC-Display

● LCDs werden unterschieden für Darstel-lung von

● Text (Zeichensatz intern vorhanden)● Grafik (jedes Pixel anzusteuern)

● Industriestandard-LCD mit HD44780-Controller ist sehr verbreitet weil einfach zu benutzen

● Interner MC kümmert sich um Ansteuerung jedes einzelnen Pixels

● Anschluß über ● 4 od. 8 Datenleitungen● Enable● Read/Write● Register Select● Kontrastspannung● Betriebsspannungen

Page 27: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

27 MC-Kurs H13 DL9GFA

LCD-AnschlußLCD-Anschluß

P2.0...P2.3P1.4 P1.5

5V

10k

Mikrocontroller-Kurs bei H13

● Wir wollen das LC-Display im 4-Bit-Mode betreiben

● Da nur schreibend zugegriffen werden muß, kann R/W fest auf GND gelegt werden

● Damit umgehen wir auch das Problem 5V → 3.3V

● Interne Steckbrettverdrahtung beachten!

Page 28: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

28 MC-Kurs H13 DL9GFA

LCD-AnschlußLCD-Anschluß

P2.0...P2.3P1.4 P1.5

5V

10k

Mikrocontroller-Kurs bei H13

● 5V von USB-Buchse (auf eigene Gefahr!, alternativ ext. Netzteil einsetzen)

Page 29: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

29 MC-Kurs H13 DL9GFA

LCD-BefehleLCD-Befehle

Page 30: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

30 MC-Kurs H13 DL9GFA

LCD-FunktionsbibliothekLCD-Funktionsbibliothek

● Fertige LCD-Bibliothek erspart „das Neuerfinden des Rades“● Nach dem Einbinden können die fertigen Funktionen verwendet werden

#include „lcd.h“

vLCD_init( maxX); //Initialisiert und stellt Anzahl Zeichen pro Zeile ein

vLCD_clear(); //löscht Display, Cursor auf 0,0vLCD_gotoxy( X, Y); //setzt Cursor in Spalte/Zeile

vLCD_putchar( X); //schreibt Zeichen an aktuelle Pos.vLCD_puts( Strg_adr); //schreibt String an aktuelle Pos.vLCD_putui( X); //schreibt Zahl 0...65535vLCD_puti( X); //schreibt Zahl -32768...32767

Page 31: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

31 MC-Kurs H13 DL9GFA

LCD – Hello World!LCD – Hello World!

Page 32: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

32 MC-Kurs H13 DL9GFA

Energiesparer MSP430 Energiesparer MSP430 II

● Geringe Betriebsspannung (1.8V...3.6V)

● Jede Subeinheit auf MC ab- und zuschaltbar

● Performance des AD-Wandlers zugunsten der Energieeffizienz skalierbar

Page 33: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

33 MC-Kurs H13 DL9GFA

Energiesparer MSP430 Energiesparer MSP430 IIII

● Flexibles Taktsystem (geringerer Takt → weniger Energie)

● Konfigurierbarer RC-Oszillator integriert (kalibrierte Werte für 1, 8, 12, 16 MHz hinterlegt)

Page 34: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

34 MC-Kurs H13 DL9GFA

Energiesparer MSP430 Energiesparer MSP430 IIIIII

● Fünf Stromspar-Modi (Low Power Modes - LPM)

● Super schnelles „Aufwachen“ < 1us!

Page 35: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

35 MC-Kurs H13 DL9GFA

Energiesparer MSP430 Energiesparer MSP430 IVIV

● Starke Ereignisorientierung durch viele Interrupts mit verschiedenen Prioritäten

● Analoge Komparatoren für Interrupts bei bestimmten Sensordaten (ohne AD-Wandlung!)

Page 36: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

36 MC-Kurs H13 DL9GFA

InterruptInterrupt

● Unterbricht die Abarbeitung des „normalen“ Programms, um Interrupt-Service-Routine (ISR) sofort auszuführen

● Nach Abschluß der ISR wird das vorherige Programm an unterbrochener Stelle fortgesetzt

● Zur Reaktion auf zeitkritische Ereignisse geeignet, z.B. seriell empfangenes Byte

Page 37: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

37 MC-Kurs H13 DL9GFA

Polling vs. InterruptsPolling vs. Interrupts

● Es gibt verschiedene Strategien, auf Ereignisse, z.B. Eingaben, zu reagieren● Polling: MC prüft regelmäßig, z.B. in einer Schleife, ob sich etwas getan hat

+ Einfach zu implementieren und zu debuggen- Ineffizient, insbesondere wenn Ereignisse selten stattfinden

● Interrupts: MC wird unterbrochen (wobei auch immer) durch ein Ereignis+ Sehr zeiteffizient, weil nicht andauernd nachgesehen werden muß, obwohl nichts passiert ist+ Sehr energieeffizient, weil MC „schlafen“ kann, solange nichts passiert- manchmal schwerer zu debuggen

Interrupt

Polling

Page 38: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

38 MC-Kurs H13 DL9GFA

Interrupt - AblaufInterrupt - Ablauf

● Interrupt-Latenz ist 6 CPU-Zyklen vom Request bis zum Start der ISR

● Interruptlogik zu Beginn● Aktuelle Instruktion wird zu ende bearbeitet● Programm Counter PC, der auf nächste Instruktion zeigt, wird auf

Stack gelegt● Status Register SR wird auf den Stack kopiert● Interrupt mit höchster Prio wird ausgewählt, wenn mehrere warten● Interrupt Request Flag wird automatisch zurückgesetzt

(nur Single-Source Flags, Multiple-Source bleiben gesetzt)● SR wird gelöscht → Low Power Modes beendet, alle Interrupts

gesperrt (GIE=0)● Adresse von Interrupt Vektor wird in PC geladen → Routine wird nun

abgearbeitet

● Interruptlogik nach Abarbeitung● Interrupt Service Routine beendet mit RETI (Return from ISR)● Benötigt 5 CPU-Zyklen (3 bei CPUx)● SR wird wieder vom Stack auf alten Inhalt gesetzt → LPM, GIE

alles wie zuvor● PC wird wieder vom Stack geladen → Abarbeitung ab Befehl zu dem

Unterbrechung erfolgte

WhileInterrupt

BeforeInterrupt

AfterInterrupt

Page 39: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

39 MC-Kurs H13 DL9GFA

Interrupt - QuellenInterrupt - Quellen

Page 40: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

40 MC-Kurs H13 DL9GFA

Interrupt Vektor TabelleInterrupt Vektor Tabelle

● Hauptprogramm steht im Flash ab Adresse C000h

● Verschiedenen Interrupt-Quellen sind jeweils feste Speicheradressen in Vektortabelle zugeordnet

● Vektoren (Zeiger) zeigen auf Interrupt-Service-Routine im Flash, die abgearbeitet werden soll, wenn Interrupt auftritt

Interupt Vector Table

Flash

InformationMemory

RAM

16-bitPeripherals

8-bitPeripherals

8-bit Special FunctionRegisters

0Fh

0h

0FFh010h

01FFh0100h

03FFh0200h

FFDFh0C000h

0FFFFh0FFE0h

MSP430G2553

010FFh01000h

Interrupt

Page 41: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

41 MC-Kurs H13 DL9GFA

Typische SW-ArchitekturTypische SW-Architektur

Page 42: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

42 MC-Kurs H13 DL9GFA

Timer / CounterTimer / Counter

3x

Page 43: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

43 MC-Kurs H13 DL9GFA

Timer – Continuous ModeTimer – Continuous Mode

Wenn konfiguriert, werden Interrupts ausgelöst.

Page 44: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

44 MC-Kurs H13 DL9GFA

Timer – Up ModeTimer – Up Mode

Wenn konfiguriert, werden Interrupts ausgelöst.

Page 45: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

45 MC-Kurs H13 DL9GFA

Timer – Up/Down ModeTimer – Up/Down Mode

Wenn konfiguriert, werden Interrupts ausgelöst.

Page 46: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

46 MC-Kurs H13 DL9GFA

Timer – Anwendung UhrTimer – Anwendung Uhr

Page 47: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

47 MC-Kurs H13 DL9GFA

Uhr – Strom über ZeitUhr – Strom über Zeit

● Strom mit Oszi über 1kOhm-Widerstand gemessen: 100mV entspricht daher 100uA

● Im Mittel werden 130uA bei 2.8V benötigt (0.364mW, nur bei Verwendung DOG-Display!)

Page 48: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

48 MC-Kurs H13 DL9GFA

Timer – Ein- und Ausgangs-PinsTimer – Ein- und Ausgangs-Pins

● Timer kann ohne CPU direkt externe Pins einlesen bzw. ansteuern(Zweitfunktion der entsprechenden Pins wählen!)

MSP430G2553

Page 49: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

49 MC-Kurs H13 DL9GFA

Timer – Output ModesTimer – Output Modes

● Pins werden automatisch gesetzt, zurückgesetzt oder gekippt (toggle) je nach „Outmode“

● Auf diese Weise kann PWM – Puls-Weiten-Modulation – ohne CPU(!) erzeugt werden

Page 50: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

50 MC-Kurs H13 DL9GFA

Timer – ServoTimer – Servo

● Servo-Motoren werden über eine PWM gesteuert

● Stellbereich von 1ms bis 2ms, Mittelstellung bei 1.5ms (oft erweiterte Grenzen 0.7...2.5ms)

● Max. Drehwinkel und Zeiten weichen je nach Modell ab

PWM - orange5V - rot

GND - braun

Anschluß

Page 51: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

51 MC-Kurs H13 DL9GFA

Timer – PWMTimer – PWM

● Timer erzeugt PWM – Puls-Weiten-Modulation – und CPU aktualisiert nur Register

● Mit einem folgendem Tiefpaß können einfach analoge Signale (grün) generiert werden

Page 52: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

52 MC-Kurs H13 DL9GFA

ADC10 des MSP430ADC10 des MSP430

Sample-Takt

Interner ADC-Takt

Page 53: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

53 MC-Kurs H13 DL9GFA

ADC-FunktionsbibliothekADC-Funktionsbibliothek

● Nach Einbinden der Bibliothek muß man nur noch die Funktionen aufrufen (Bsp.-Bibliothek unterstützt bei weitem nicht alle Möglichkeiten!)

#include „ADC10.h“

vADC_init( ucADC_ch); //Initialisiert ADC10 für Einzelmessungen und stellt angegebene Pins als Analogeingang ein

uiADC_read( uiCH); //Führt AD-Wandlung durch und gibt Ergebnis zurück

Page 54: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

54 MC-Kurs H13 DL9GFA

Aufgabe AD-WandlerAufgabe AD-Wandler● Wandle die Werte eines analogen Potentiometers mit dem AD-Wandler

und stelle den Wert auf dem LC-Display dar!

TXD/RXD-Jumper an J3 entfernen,

wenn A1 oder A2 verwendet wird!

Page 55: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

55 MC-Kurs H13 DL9GFA

Thermometer mit NTCThermometer mit NTC

● NTC - Negative Temperature Coefficient● Mit steigender Temperatur nimmt Widerstand ab● Spannungsabfall kann daher als

Maß für Temperatur verwendet werden● Linearisierung durch Spannungsteiler + Software

Untc zum ADC

100kOhm

100kOhm @25°C

Page 56: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

56 MC-Kurs H13 DL9GFA

Thermometer mit NTCThermometer mit NTC

● Kennlinie kann als Tabelle abgelegt, oder z.B. mit Geradengleichung angenähert werden

Page 57: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

57 MC-Kurs H13 DL9GFA

Thermometer mit NTCThermometer mit NTC

Page 58: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

58 MC-Kurs H13 DL9GFA

Multiplexen von EingängenMultiplexen von Eingängen

● Erlaubt Einsparung von vielen Eingangs-Pins

● Tastenmatrix: 2n Pins erlauben Auswertung von n² Tasten – (hier 8 für 16)

● Auswertung:● Spalten treiben LOW, Zeilen sind Eingänge (Interrupts aktiviert)● Taster gedrückt → Interrupt auf einer Zeile● Spalten werden nun reihum einzeln

auf LOW geschaltet, um gedrückte Taster auf Zeile zu identifizieren

● Es können mehrere gleichzeitig gedrückte Taster unterschieden werden

Page 59: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

59 MC-Kurs H13 DL9GFA

Multiplexen von Ausgängen Multiplexen von Ausgängen

Gegen GND

Geg

en P

ull-

up

● Ist wie bei Eingängen möglich, durch zeitlichen Versatz der Ansteuerung einzelner LEDs

● LED-Matrix: 8 Pins erlauben Ansteuerung von 16 LEDs – (Pins: 2n, LEDs: n²)

● Ablauf:● Eine Zeile (A-D) nach der anderen wird kurz HIGH geschaltet● Wenn eine LED dieser Zeile leuchten soll, wird Spalte zeitgleich auf LOW durchgeschaltet

● Einschaltzeit bestimmt Helligkeit → je mehr LEDs in Matrix, desto dunkler ● 100Hz Aktualisierungsrate ist guter Richtwert gegen Flackern

Page 60: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

60 MC-Kurs H13 DL9GFA

Mux von 7-Segment-Anzeigen Mux von 7-Segment-Anzeigen

● 7-Segmentanzeigen bestehen aus LEDs mit gemeinsamer Anode ODER gem. Kathode

● Gemeinsamer Anschluß wird oft per Transistor geschaltet, um mehr Strom zu treiben

● Helligkeitsverlust durch geringere ON-Zeit wird durch höhere Stromimpulse kompensiert

Page 61: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

61 MC-Kurs H13 DL9GFA

CharlieplexingCharlieplexing

● 1995 von Charlie Allen (Fa. Maxim) vorgeschlagene Technik, die mit noch weniger Pins zum Ansteuern von LED-Matrizen auskommt – n Pins für n(n-1) LEDs

● Trick ist die Nutzung der Sperrrichtung von LEDs und des Tri-States der MC-Pins

2 P

ins

– 2

LE

Ds

3 P

ins

– 6

LE

Ds

5 P

ins

– 20

LE

Ds

Pins LEDs

1 0

2 2

3 6

4 12

5 20

6 30

7 42

8 56

9 72

10 90

n n²-n

Page 62: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

62 MC-Kurs H13 DL9GFA

Übung: Charlieplexing n=3Übung: Charlieplexing n=3

● Realisiere ein Lauflicht mit nur 3 Pins Ansteuerung (nutze P2.0, P2.1 und P2.2)

● Folgende Bedingungen führen zum Leuchten der jeweiligen LED:

P2.0

P2.1

P2.2

LED P2.0DIR P2.1DIR P2.2DIR P2.0OUT P2.1OUT P2.2OUT

A out out in 1 0 x

B out out in 0 1 x

C out in out 1 x 0

D out in out 0 x 1

E in out out x 1 0

F in out out x 0 1

Page 63: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

63 MC-Kurs H13 DL9GFA

Übung: Charlieplexing SchleifeÜbung: Charlieplexing Schleife

Page 64: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

64 MC-Kurs H13 DL9GFA

Übung: Charlieplexing TimerÜbung: Charlieplexing Timer

Page 65: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

65 MC-Kurs H13 DL9GFA

Ultraschall-Sensor SR04Ultraschall-Sensor SR04

8 x 40kHz-Burst

Laufzeit

Achtung, ohne 10k Zerstörung möglich!

P1.1P1.7

10k

● Mißt die Laufzeit des Schalls bei 40kHz zur Ermittlung der Distanz

● Technische Daten:● Spannungsversorgung 5V / <2mA ● Beam-Breite <15° (3dB)● Entfernung 2cm...5m● Auflösung 3mm

● Schnittstelle des Sensors● 1 – Vcc● 2 – Trigger● 3 – Echo● 4 – GND

Page 66: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

66 MC-Kurs H13 DL9GFA

Ultraschall-Sensor - SchleifeUltraschall-Sensor - Schleife

8 x 40kHz-Burst

Laufzeit

Page 67: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

67 MC-Kurs H13 DL9GFA

Timer - Capture-ModusTimer - Capture-Modus

3x

Trigger

Übernahme TAR-Kopie zum Triggerzeitpunkt

Externes Ereignis

Takt

Page 68: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

68 MC-Kurs H13 DL9GFA

Timer – Ein- und Ausgangs-PinsTimer – Ein- und Ausgangs-Pins

● Timer kann ohne CPU direkt externe Pins einlesen bzw. ansteuern(Zweitfunktion der entsprechenden Pins wählen!)

MSP430G2553

Page 69: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

69 MC-Kurs H13 DL9GFA

Ultraschall-Sensor - TimerUltraschall-Sensor - Timer

8 x 40kHz-Burst

Laufzeit

Interrupt Service Routine

Initialisierung

Page 70: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

70 MC-Kurs H13 DL9GFA

Timer/Counter als FrequenzzählerTimer/Counter als Frequenzzähler

● Zählt Anzahl der Perioden pro Zeitintervall → Frequenz f = n / t

● Beobachtungszeitraum heißt Tor-Zeit oder Gate-Zeit● Bestimmt die Genauigkeit; je mehr Perioden beobachtet werden, desto genauer die

Messung

● Im SW-Beispiel wird ACLK mit 32.768kHz als Referenz für Tor-Zeit verwendet und wahlweise der DCO-Takt mit 16MHz, oder ein extern angelegter an P1.0 gemessen

Page 71: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

71 MC-Kurs H13 DL9GFA

Watch Dog Timer - WDTWatch Dog Timer - WDT

● WDT kann auch als Interval-Timer eingesetzt werden

● Damit spart man oft einen wertvollen TimerA/B mit viel flexiblerer Funktionalität

● Im SW-Beispiel wird ACLK mit 32.768kHz und eine Tor-Zeit von 250ms (f_in>900kHz) oder 1s (f_in<800kHz) verwendet

Page 72: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

72 MC-Kurs H13 DL9GFA

Timer – Ein- und Ausgangs-PinsTimer – Ein- und Ausgangs-Pins

● Meßsignal gelangt als TA0CLK (Zweitfunktion P1.0) zum TimerA und inkrementiert dort den Zähler TAR mit jeder Periode

● WDT getaktet von ALCK (32.768kHz Quarz) startet und stoppt das Zählen (Tor-Zeit)

MSP430G2553

Page 73: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

73 MC-Kurs H13 DL9GFA

FrequenzzählerFrequenzzähler

● TimerA kann im Capture-Modus die Perioden des Meßsignals zählen, während Watch Dog Timer (WDT) als Interval-Timer die lange Tor-Zeit bestimmt (250ms oder 1s)

Page 74: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

74 MC-Kurs H13 DL9GFA

Serielle Schnittstellen - SPISerielle Schnittstellen - SPI

● Haben große Bedeutung wegen geringen Hardware-Aufwandes

● Es gibt synchrone (z.B. SPI, I²C) und asynchrone (z.B. UART) serielle Schnittstellen

● Einige unterstützen mehrere Teilnehmer über eine Verbindung, andere nur zwei

● SPI - Serial Peripheral Interface

● SPI-Signale● MOSI – Master Out Slave In● MISO – Master In Slave Out● SCLK – Serial Clock● Mehrere /SSx – Slave Selects

● Eigenschaften SPI● Kann sehr schnell betrieben werden● Serieller Bit-Strom kann als Kette

über/durch mehrere Slaves geleitet werden● Sehr einfache Interface-Software

Page 75: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

75 MC-Kurs H13 DL9GFA

Serielle Schnittstellen - I²CSerielle Schnittstellen - I²C

● I²C – Inter Integrated Circuit Bus von Philips/NXP, heute von viele HL-Herstellern unterstützt (mit anderem Namen, aber kompatibel)

● I²C-Signale (bi-directional!)● SDA – Serial Data ● SCL – Serial Clock

● Eigenschaften:● Multimasterfähig mit Bus-Arbitrierung● Geschwindigkeitsklassen 100kHz, 400kHz, 1MHz● Bus-Leitungen benötigen Pull-up und alle arbeiten mit Open-Drain-Anschlüssen am Bus● Bei voller geforderter Funktionalität aufwändige Interface-Software Vcc

Page 76: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

76 MC-Kurs H13 DL9GFA

Serielle Schnittstellen - UARTSerielle Schnittstellen - UART

● UART – Universal Asynchronous Receiver Transmitter

● UART-Signale● RXD – Receiver Data (mit TXD auf Gegenseite verbunden)● TXD – Transmitter Data (mit RXD auf Gegenseite verbunden)● Weitere optionale zur Flußkontrolle (DTR, RTS, CTS)

● Eigenschaften:● Einsatz bei RS232 mit zusätzlichen Pegelwandlern, Voll-Duplex-fähig● Standard-Geschwindigkeiten [bit/s]: 1k2, 2k4, 9k6, 19k2, 38k4, 57k6, 115k2, …● Es gibt auch Multi-Point Abwandlungen mit Auto-Baud-Detection usw.

Achtung, logische Pegel vor und nach Pegelwandler invertiert!

Page 77: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

77 MC-Kurs H13 DL9GFA

USCI - USCI - Universal Serial Communication InterfaceUniversal Serial Communication Interface

RXD

TXD

● Unterstützt verschiedene serielle Schnittstellen

● Zwei USCI-Typen: USCI_Ax und USCI_Bx (x=0,1,... je nach Anzahl vorhandener Module)

● USCI_Ax-Module unterstützen● UART mit autom. Baudraten für LIN● IRDA● SPI

● USCI_Bx-Module unterstützen● I²C● SPI

Page 78: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

78 MC-Kurs H13 DL9GFA

UART_HW - FunktionsbibliothekUART_HW - Funktionsbibliothek

● Nach Einbinden der Bibliothek muß man nur noch die Funktionen aufrufen (DCO @ 1MHz!)

#include „UART_HW.h““

vUART_HW_init( ); //Initialisiert HW-UART,9600Bd,8N1 TXD an P1.2 (UCA0TXD) RXD an P1.1 (UCA0RXD)

vUART_HW_putc( char); //Sendet Einzelzeichen über UARTvUART_HW_puts(„Hallo“); //Sendet „Hallo“ über UARTvUART_HW_puts(cText); //Sendet Inhalt von cText[] über UART (char cText[20] definieren!)

Page 79: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

79 MC-Kurs H13 DL9GFA

USCI - USCI - Universal Serial Communication InterfaceUniversal Serial Communication Interface

● Achtung! ● Die Pins für RXD und TXD des MSP430G2553 vertauschen sich, wenn zwischen HW-

und SW-Implementierung der UART gewechselt wird!● Beachte die Jumper auf J3! (SW-UART 1+2 und 3+4, HW-UART 1+3 und 2+4)

● Das hängt mit den Timer-Eingängen zusammen, die für die geschickte Software-Implementierung verwendet werden

PC-Seite Launchpad-Seite

Page 80: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

80 MC-Kurs H13 DL9GFA

UART_SW - FunktionsbibliothekUART_SW - Funktionsbibliothek

● Nach Einbinden der Bibliothek muß man nur noch die Funktionen aufrufen (DCO @ 1MHz!)

#include „UART_SW.h“

vUART_SW_init( ); //Initialisiert SW-UART,9600Bd,8N1 TXD an P1.1 (Timer0_A.OUT0) RXD an P1.2 (Timer0_A.CCI1A)

vUART_SW_putc( char); //Sendet Einzelzeichen über UARTvUART_SW_puts(„Hallo“); //Sendet „Hallo“ über UARTvUART_SW_puts(cText); //Sendet Inhalt von cText[] über UART (char cText[20] definieren!)

Page 81: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

81 MC-Kurs H13 DL9GFA

UART-TestprogrammUART-Testprogramm

Page 82: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

82 MC-Kurs H13 DL9GFA

Embedded-SW-ArchitekturenEmbedded-SW-Architekturen

● Wichtigste Kriterien● Wie viele verschiedene Ereignisse müssen verarbeitet werden?● Welchen Verarbeitungsaufwand erfordern die einzelnen Ereignisse?● Welche Reaktionszeiten sind nötig?● Welche Ressourcen stehen zur Verfügung (Rechenkapazität u. Geschwindigkeit MC)?● Wie kritisch ist mein Energie-Budget?

Bild: Willert Software Tools

Page 83: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

83 MC-Kurs H13 DL9GFA

Round-Robin Round-Robin (RR)(RR)

● Merkmale● Hauptschleife fragt alle Zustände/Peripherie der Reihe nach ab (polling) und bearbeitet die,

die etwas zu bearbeiten haben● Keine Interrupts

● Vorteil● Einfachste denkbare Architektur

● Nachteil● Wenn ein Device schnellere Behandlung

benötigt als die maximale Durchlaufzeit A-Z inkl. Bearbeitung, dann funktioniert es nicht mehr zuverlässig!

● Aber: Ungleiche Aufruffrequenz möglich: Device A, C, B, C, D, C, E, C, F, ...

● Beispiele● Nur geeignet für sehr einfache Geräte wie

Multimeter, Digitaluhr, Mikrowellenofen

Page 84: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

84 MC-Kurs H13 DL9GFA

Round-Robin Round-Robin (RR)(RR)

● Beispiel Multimeter

Page 85: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

85 MC-Kurs H13 DL9GFA

Round-Robin mit Interrupts Round-Robin mit Interrupts (RRI)(RRI)

● Merkmale● Interrupts bearbeiten die zeitkritischen Ange-

legenheiten der HW und setzen Flags● Hauptschleife fragt Flags ab und nimmt Nach-

bearbeitung vor● Effektiv hat alle Bearbeitung in den Interrupt-

Routinen höhere Prio gegenüber Hauptschleife● Prioritäten unter den Interrupts erlauben

weitere Prioritätsebenen● Vorteil

● Schnelle Reaktionszeit auf Ereignisse● Guter Einfluß auf Prioritäten der Abarbeitung

● Nachteil● Shared-Data-Problem wenn Interrupt-Routinen

und Hauptschleife gleichzeitig auf gemein-same Daten zugreifen (z.B. Ints sperren!)

● Alle Main-Tasks auf selber Priorität● Beispiel

● Interrupt holt seriell empfangenes Byte und schreibt in Queue, um Überlauf zu vermeiden

● Hauptroutine verarbeitet Daten aus Queue

Page 86: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

86 MC-Kurs H13 DL9GFA

Round-Robin mit Interrupts Round-Robin mit Interrupts (RRI)(RRI)

Page 87: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

87 MC-Kurs H13 DL9GFA

Function-Queue-Scheduling Function-Queue-Scheduling (FQS)(FQS)

● Merkmale● Interrupt-Routinen bearbeiten zeitkritische

Angelegenheiten und legen Funktions-vektoren in eine Queue

● Hauptschleife liest diese Queue und ruft Funktionen auf

● Aufruf muß dabei nicht in Reihenfolge der Interrupts erfolgen

● Scheduler sortiert Queue nach Prio, oder Interrupts selbst legen Aufruf „vorn“ hinein

● Vorteil● Hohe Flexibilität ● Sehr guter Einfluß auf Prioritäten

● Nachteil● Max. Reaktionszeit höchst-priorer Task ist

durch längste Task von allen gegeben → in mehrere Sub-Tasks zerlegen die jeweils die nächste wieder in Queue eintragen

● Reaktionszeit von nieder-prioren Tasks kann sehr lang (bis unendlich) werden

Page 88: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

88 MC-Kurs H13 DL9GFA

Real-time Operating System Real-time Operating System (RTOS)(RTOS)

● Merkmale● Interrupt-Routinen bearbeiten zeitkritische

Angelegenheiten und signalisieren, daß Arbeit für Task anliegt

● Signalisierung wird von RTOS behandelt (keine gemeinsamen Variablen dazu)

● Keine Hauptschleife entscheidet mehr über zu erledigende Arbeit, sondern RTOS

● RTOS kennt Tasks und deren Prio, kann jederzeit eine Task stoppen, um eine andere laufen zu lassen

● Vorteil● Reaktionsgeschwindigkeit von Tasks und

Interrupts frei wählbar● Worst-case Wartezeit der höchst-prioren

Task quasi Null● Reaktionszeiten auch nach Erweiterung des

Programms sehr stabil (vgl. RR, RRI, FQS)● RTOS frei und käuflich zu erwerben →

„Programmierer hat all seine Probleme gelöst“● Nachteil

● RTOS benötigt auch Ressourcen

Page 89: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

89 MC-Kurs H13 DL9GFA

Embedded-SW-ArchitekturenEmbedded-SW-Architekturen

● Zusammenfassung● Anforderungen an die Reaktionszeit bestimmen oft die nötige SW-Architektur● Generell sollte immer die einfachste geeignete Architektur verwendet werden● Manchmal macht eine hybride Architektur zwischen den aufgeführten Sinn

(z.B. Polling von langsamer Peripherie trotz RRI-Architektur)

Priorisierung vorhanden?

Schlechteste Reaktionszeit für Task

Stabilität der Reaktionszeit nach Code- Änderungen

Komplexität

Round-Robin Nein Ausführzeit aller Tasks

Schlecht Sehr einfach

Round-Robin mit Interrupts

Interrupts in Prio-Reihenfolge, dann alle Tasks mit selber Prio

Ausführzeit aller Tasks+Interrupt-Routinen

Gut für Interrupt-Routinen, schlecht für Tasks

Shared-data-Problem zwischen Ints und Tasks zu lösen

Function-Queue-Scheduling

Interrupts in Prio-Reihenfolge, dann Tasks in Prio-Reihenfolge

Ausführzeit der längsten Einzel-Task+Interrupt-Routinen

Relativ gut Shared-data-Problem zu lösen, kleveres FQS zu schreiben

Real-Time Operating System

Interrupts in Prio-Reihenfolge, dann Tasks in Prio-Reihenfolge

Null+Interrupt-Routinen

Sehr gut Am höchsten, aber vieles davon in OS selbst

Page 90: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

Praktische BeispielePraktische Beispielezur Lösung typischer Aufgabenzur Lösung typischer Aufgaben

Page 91: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

91 MC-Kurs H13 DL9GFA

Inhalt – Praktische BeispieleInhalt – Praktische Beispiele

● Erzeugung von Tönen und Melodien● Wiederholung Timer● Wie Töne und Melodien entstehen (Bsp. 17)

● Tasteneingaben auswerten wie ein Profi● Entprellen per Timer-Interrupt● Auswertung von kurzem und langem Drücken, sowie

Auto-Wiederholung (Bsp. 18)

● Zustandsautomaten zur Realisierung zeitlicher Abläufe● Funktion und Implementierung endlicher Automaten● Beispiel Einstellen einer Uhr● Beispiel Multiplexen von 7-Segment-Anzeigen

● Praktische Anwendung von Tönen, Tasten und Automaten ● Uhr / Wecker mit Setup-Funktion (Bsp. 19)● Elbug - Elektronische Morsetaste (Bsp. 20)

Page 92: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

92 MC-Kurs H13 DL9GFA

Timer / CounterTimer / Counter

3x

2 Timer-Interrupts: #1 für TACCR0#2 für alle anderen (TAI, TACCR1, TACCR2)

Page 93: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

93 MC-Kurs H13 DL9GFA

Timer – Continuous ModeTimer – Continuous Mode

Wenn konfiguriert, werden Interrupts ausgelöst.

Page 94: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

94 MC-Kurs H13 DL9GFA

Timer – Up ModeTimer – Up Mode

Wenn konfiguriert, werden Interrupts ausgelöst.

Page 95: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

95 MC-Kurs H13 DL9GFA

Timer – Output ModesTimer – Output Modes

● Pins werden automatisch gesetzt, zurückgesetzt oder gekippt (toggle) je nach „Outmode“

● Auf diese Weise kann PWM – Puls-Weiten-Modulation – ohne CPU(!) erzeugt werden

Page 96: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

96 MC-Kurs H13 DL9GFA

Noten und Melodien ausgebenNoten und Melodien ausgeben

● Um bestimmte Noten zu „treffen“, muß deren Frequenz so genau wie möglich mit demTimer realisiert werden

● Je höher der Eingangstakt des Timers, desto feiner ist die mögliche Tonfrequenzauflösung

● RTTTL – Ring Tone Text Transfer Language – Textformat zum Beschreiben von Klingeltönen

● Viele Melodien im Internet verfügbar: JingleBell:d=8,o=5,b=112:32p,a,a,4a,a,a,4a,a,c6, ...

Bsp. 17

Page 97: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

97 MC-Kurs H13 DL9GFA

Wdh. Entprellung beim WürfelWdh. Entprellung beim Würfel

Page 98: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

98 MC-Kurs H13 DL9GFA

Entprellung von Tasten wie ProfiEntprellung von Tasten wie Profi

● Portiert von „Tasten entprellen – Bulletproof“ (Peter Dannegger)● Gesamter Port wird geschickt mit Timer-Interrupts entprellt (8 Tasten!)● Nach dem Einbinden können die fertigen Funktionen verwendet werden

#include „keys.h“

get_key_press( uiKey_mask); //Basisroutine die Druck einer Taste anzeigt, wird von folgenden genutzt

get_key_short( uiKey_mask); //zeigt kurzen Tastendruck nach(!) Lösen an

get_key_long( uiKey_mask); //zeigt langen Tastendruck nach„Lang“-Zeit, vor Lösen, an

get_key_rpt( uiKey_mask); //ermöglicht automatischesWiederholen, nicht gleich-zeitig mit get_key_long()!

Page 99: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

99 MC-Kurs H13 DL9GFA

Zustandsmaschine / -automatZustandsmaschine / -automat

● Eine Zustandsmaschine ist keine verrückte Maschine, sondern eine bestimmte Art, Programme zu schreiben

● Sie dient der Umsetzung von zeitlichen Abläufen

● Besteht aus Zuständen, Z.-Übergängen und Aktionen● Zustand

● Speichern Information über Vergangenheit (reflektiert Änderung der Eingabe seit Systemstart bis zum aktuellen Zeitpunkt)

● Zustandsübergang● Zeigt Änderung des Zustandes und wird durch

logische Bedingungen beschrieben● Aktionen

● Eingangsaktion wird beim Eintreten in Zustand ausgeführt

● Ausgangsaktion wird beim Verlassen des Zustandes ausgeführt

● Eingabeaktion abhängig von aktuellem Zustand und Eingabe

● Übergangsaktion abhängig vom Zustandsübergang

Page 100: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

100 MC-Kurs H13 DL9GFA

Zustandsmaschine / -automatZustandsmaschine / -automat

● Implementierung ● Erstellen einer Zustandsvariable zum

Speichern des aktuellen Zustands● Definition der verschiedenen auf-

tretenden Zustände● Zuordnen der verschiedenen

Aktionen zu den Zuständen● Definition der Reihenfolge der Zu-

stände und Bedingungen zum Übergang

● Dekodieren der Zustandsvariable, um in Zustände zu kommen

● Programmierung mit Switch-Case-Konstrukt

Page 101: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

101 MC-Kurs H13 DL9GFA

Bsp. Mux von 7-SegmentanzeigenBsp. Mux von 7-Segmentanzeigen

● TimerA1-Interrupt kümmert sich um das Zuschalten der vier Digits reihum

● Die ON-Zeiten sowie die Umlaufzeitbestimmen Helligkeit der Anzeigen

● Anwendung muß nur anzuzeigende Zeichen in ucDisplayData[ ] schreiben

● Gemeinsamer 7-Seg-Anschluß wird i.d.R. über Transistor geschaltet und Serien-Rs sind nicht unbedingt nötig (quasi PWM-Dimmung)

Page 102: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

102 MC-Kurs H13 DL9GFA

Bsp. Mux von 7-SegmentanzeigenBsp. Mux von 7-Segmentanzeigen

Page 103: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

103 MC-Kurs H13 DL9GFA

Watch Dog Timer für UhrWatch Dog Timer für Uhr

● WDT kann auch als Interval-Timer eingesetzt werden

● Damit spart man oft einen wertvollen TimerA/B mit viel flexiblerer Funktionalität

● Nun soll der WDT als Sekunden-Zähler für eine Uhr verwendet werden

Page 104: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

104 MC-Kurs H13 DL9GFA

Watch Dog Timer für UhrWatch Dog Timer für Uhr

Page 105: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

105 MC-Kurs H13 DL9GFA

Übung: Setup für UhrÜbung: Setup für Uhr

● Uhrzeit soll manuell eingestellt werden können

● Verwende dazu mindestens 2, oder besser 3 Tasten● KeySetup, KeyUp und ggf. KeyDown● Nutze die Timer-Entprellung aus „keys.c“

● Markiere die zu verstellende Zahl durch Blinken

● Erweitere die Uhr zum Wecker

● Implementiere als Alarm eine Melodie

● Erweitere den Wecker um eine Snooze-Funktion(wiederholtes Wecken z.B. nach 4 Minuten)

● Achte bei allem auf das Energie-Budget!!!

Page 106: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

106 MC-Kurs H13 DL9GFA

Software-Architektur EAG WeckerSoftware-Architektur EAG Wecker

Page 107: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

107 MC-Kurs H13 DL9GFA

Übung: ElbugÜbung: Elbug

● Squeeze-Taste mit automatischer Erzeugung vonPunkten, Strichen und alternierenden Sequenzen

● Ausgang schaltet Transistor gegen GND (open Collector)

● Mithörton zum Üben

● Über 2 Taster soll Geschwindigkeit verstellbar sein

● Achte bei allem auf das Energie-Budget!!!

C Q D E D L 9 G F A

Page 108: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

108 MC-Kurs H13 DL9GFA

Übung: ElbugÜbung: Elbug

Page 109: Mikrocontroller-Kurs - unidsp56.deunidsp56.de/misc/MC-KursH13_130623a.pdf · 3 MC-Kurs H13 DL9GFA Inhalt Mikrocontroller-Kurs Spezialgebiet Energiesparen Stromspararchitektur Taktsystem

EndeEnde