35
1 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme Arbeitsgruppe EOS Dr. Sebastian Zug Vorlesung Prinzipen und Komponenten Eingebetteter Systeme (PKES) (3) Mikrocontroller I Sebastian Zug Arbeitsgruppe Eingebettete Systeme und Betriebssysteme

Vorlesung Prinzipen und Komponenten Eingebetteter …eos.cs.ovgu.de/wp-content/uploads/2013/10/03_MikrocontrollerI.pdf · ... Beim AVR ist der Programmspeicher und der Arbeitsspeicher

  • Upload
    doandat

  • View
    215

  • Download
    2

Embed Size (px)

Citation preview

1 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Vorlesung Prinzipen und Komponenten Eingebetteter Systeme (PKES) (3) Mikrocontroller I

Sebastian Zug Arbeitsgruppe Eingebettete Systeme und Betriebssysteme

2 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

„Veranstaltungslandkarte“

Sensoren

Mikrocontroller

Anwendungen

Architekturen

Aktoren

Kommunikation Energieversorgung

Scheduling

Arithmetik

Fehlertoleranz, Softwareentwicklung

3 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

M. Mitescu I. Susnea Microcontrollers in Practice Springer, 2012 H. Bähring Anwendungsorientierte Mikroprozessoren Mikrocontroller und Digitale Signalprozessoren Springer, 2010 Atmel Corporation ATmega640/1280/1281/2560/2561 - Datasheet 2012 http://www.avr-asm-tutorial.net/avr_de/index.html http://www.microcontroller.net

Literaturhinweise

4 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

• Erläutern Sie den Unterschied zwischen Mikroprozessor und

Mikrocontroller! • Welche Speichertypen werden bei Mikrocontrollern eingesetzt? • Welcher Idee steht hinter dem „Memory-Mapped-IO“? • An welchen Merkmalen kann der AVR 2560 als RISC Prozessor

identifiziert werden? • Warum haben unterschiedliche Komponenten des Mikrocontrollers

verschiedene Taktraten? • Welche Aufgabe haben die Pull-Up-Widerstände für Pins? • Welche Grundbestandteile hat ein disassembliertes AVR

Mikrocontrollerprogramm? • Was passiert nachdem der Reset-Pin eines AVR Mikrocontrollers auf

GND gezogen wurde?

Fragen an die Veranstaltung

5 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Begriffsbestimmung

to control = steuern/regeln

Ein Controller wird zur Steuerung/Regelung eines physischen

Prozesses eingesetzt.

Die Aufgabe des Controllers besteht in der Abbildung von Eingangs-

informationen auf eine Ausgabeschnittstelle (Black-Box-Modell).

Die Realisierung eines Controllers kann auf viele verschiedene

Arten erfolgen:

• ein analoger Regelkreis

• Relais-Schaltung

• speziell aufgebaute digitale Logikschaltung

• Mikrocontroller

Controller

Sensor

GUI

Netzwerk

Aktor

GUI

Netzwerk

6 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Vorteile • Flexibilität • Flexibilität • Flexibilität • …

Nachteile • Möglicherweise Geschwindigkeits- / Präzisionseinbußen • Materialkosten häufig höher

Programmierbarer Controller

7 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Komponenten des Mikrocontrollers

Microprozessor

Kern

Timer und

Zähler

serielle und

parallele

Schnittstellen Speicher

Takterzeugung

Analog-Digital

Digital- Analog

Wandler

Interrupt

controller

Coprozessoren

FPU, MAC Debug Interface

JTAG

8 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Architektur

Kontrolle Daten on-chip

“Geräte”

9 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Was charakterisiert einen Mikrocontroller?

Innere Werte:

Bauformen:

DIL, SIL

TQFP, LQFP …

Ball Grid

10 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Familien von Mikrocontrollern

11 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

„Unser Controller“

L

D

G[0,1]

C

J

A

K

F E

H

B

G[3,4]

Architecture • 135 Powerful Instructions • 32 × 8 General Purpose

Working Registers • Fully Static Operation • Up to 16 MIPS Throughput

at 16MHz • On-Chip 2-cycle Multiplier High Endurance Non -volatile Memory Segments – 64K/128K/256KBytes of In-System Self-Programmable Flash – 4Kbytes EEPROM – 8Kbytes Internal SRAM – Write/Erase Cycles:10,000 Flash/100,000 EEPROM …

12 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Blockdiagramm und minimale Beschaltung

Quarz als Taktgeber

Spannungs- versorgung

Timer

ADC

Speicher

Taktgeber

13 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

obligatorisch

Wie weiter?

Mikrocontroller

Energie-

versorgung

Takt

generator

Digitale

I/O

Analoge

I/O

Timer

Interrupts

Speicher

Reset-

system

fakultativ

14 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Energieversorgung - Konsequenzen

2.7V x 6mA =16,2mW

4.5V x 18mA =81mW

15 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Energieversorgung - Schlafmodi

Nur solche Komponenten aktiviert lassen, die tatsächlich gebraucht werden!

Selektives Abschalten von ADC, Analogkomparator, WTD, Brown-Out, interner

Spannungsreferenz, Port Pins, usw.

Sleep Mode

Control Register

16 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

• Das Spannungsniveau der Versorgungsspannung bestimmt : - die Performance des Controllers (Taktrate) - die Leistungsaufnahme • Für jede Anwendung sollte geprüft werden, welche Komponenten

des Kontrollers überhaupt gebraucht werden! Die Energieaufnahme lässt sich damit erheblich reduzieren.

• In verschiedenen „Sleep“-Modi kann der Kontroller im Hinblick auf: - Aktive Clocks - Ozcilatoren - Wake-Up Geräte abgestimmt werden.

Energieversorgung - Zusammenfassung

17 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Taktgenerator - AVR-Clock System

Watchdog hat separaten on-Chip

Oszillator. Periode kan zwischen

14ms und 1,9 Sek. eingestellt werden.

Quelle für Clock kann programmiert

werden. Änderungen erfordern ein

“Chip Erase” Befehl.

System-Module

Clock Select

CKSEL 0..3

18 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

• Interne Oszillatoren (RC-osciallators) - Schwingkreis aus Widerstand und Kondensator - standardmäßig als Taktquelle vorkonfiguriert - Frequenzabweichung +/- (3-10) % • Schwinquarze (crystal oscillators) - deutliche geringere Maximalabweichung +/- 0.1 % - Einschwingdauer deutlich höher (10.000 Taktzyklen) - mindestens 3 externe Bauteile (2 Lastkondensatoren + Quarz) • Externes Taktsignal

Taktgeneratort - Mögliche Taktgeber

19 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Speicher - Speichertypen

20 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Speicher - Programmspeicher

16 Bit

Word

0x1FFFF Adressen 17 Bit Breite

PC

Breite eines Befehls 16 oder 32 Bit

-> Maximal 128k x 2-Byte Befehl = 131.072 Befehle abzüglich der Größe des Bootsektors Wie groß ist die minimale Zahl von Befehlen in einem Programm das den Speicher vollständig ausnutzt?

21 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Bei isolierter Adressierung (Isolated IO) ist ein getrennter Adressraum für Speicher und Ein-/Ausgabeeinheiten vorgesehen, bei Memory Mapped IO Ansätzen ein gemeinsamer.

Speicher - Memory Mapped IO

• Vorteile des getrennten Adressraums - klaren Trennung von Speicher- und Ein-/Ausgabezugriffen. - der Speicheradressraum wird nicht durch Ein-/Ausgabe- einheiten reduziert. - Ein-/Ausgabeadressen können schmaler gehalten werden als Speicheradressen. • Vorteile eines gemeinsamen Adressraums - Homogene Befehle und Adressierungsarten

22 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Speicher - Datenspeicher

Register R0-R32

PIN, PORT, SREG

Timer, ADC, RS232

8 Bit

Memory Mapped IO = Datenspeicher und IO – Interfaces überlagern sich in einem gemeinsamen Adressraum.

23 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Speicher - Registertabelle

Beachte: Unterschiedliche Adressangaben ! IN, OUT vs. LDS, STS

24 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Speicher - Einbindung des EEPROM

internes

statisches

RAM

flüchtiger Daten-Sp.

EEPROM

EEPROM

Adress-Reg.

Vollständig getrennter Adressraum über I/O-Register verfügbar.

25 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

• Im Mikrocontroller kommen im wesentlichen 3 Speichertypen zum Einsatz:

- Programmspeicher (persistent) – Flashspeicher (NAND) - Arbeitsspeicher (SRAM) - - EEPROM • Beim AVR ist der Programmspeicher und der Arbeitsspeicher streng

getrennt und durch unterschiedliche Busse an die Controller angeschlossen.

• Die IO-Interfaces der Peripherie sind auf den eigentlichen Speicher gemappt.

Speicher - Zusammenfassung

26 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Resetsystem – Implementierung beim AVR

Quellen für Reset:

1.Power-on Reset

2.External Reset

3.Watchdog Reset

4.Brown-out Reset

5.JTAG AVR Reset

27 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

• Einschwingen des Oszilatoren • Initialisieren des Speichers • Konfiguration der Schlafmodi, Clocks entsprechend den FUSE-Bits • Prozessorstart an der Adresse 0000. An dieser Adresse MUSS ein Sprungbefehl an die Adresse des Hauptprogrammes stehen (RJMP, JMP) • Initialisieren des Stacks • Beginn der Programmabarbeitung

Was passiert beim Reset?

28 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Digitale IO – Schnittstelle zur Umgebung

Decoder

A 15

A 14

A 13

A 2

A 1

A 0

CS

RS1

RS0

Dekoder

DDR

D 7

D 6

D 5

D 4

D 3

D 2

D 1

D 0

PD 7

PD 6

PD 5

PD 4

PD 3

PD 2

PD 1

PD 0

I H IN

Input

Handshake

29 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Digitale IO – AVR Controller

Die Konfiguration der Schnittstelle erfolgt über 2 Register DDRx: 0 = Eingang 1 = Ausgang PORTx: - Eingang 1 = Pullup (GND) 0 = schwebend -Ausgang 1 = High Pegel 0 = Low Pegel

30 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

• Das Latch entkoppelt die Eingangsspannung und deren Erfassung, bewirkt aber eine Verzögerung.

Zeitverhalten digitaler Input-Pins

16.000.000 Hz (x Prescaler) -> t =0.0625 Mikrosekunden (x Prescaler) Worst Case 1.5 x t (x Prescaler) Best Case 0.5 x t (x Prescaler)

31 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Unser Mikrocontroller ist mit Strom versorgt, hat einen Taktgeber, ein Resetsystem, einen Programm- und einen Arbeitsspeicher ... Wartet drauf programmiert zu werden Beispielprogramm in C #include <avr/io.h> int main( void ) { // Led - output DDRB |= (1<<DDA7); // switch on led PORTB &= ~(1<<7); // Endlosschleife while(1); return 0; }

Und nun?

32 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Programmaufbau – Intel Hex Format

:100000000C9472000C947E000C947E000C947E0084 :100010000C947E000C947E000C947E000C947E0068 :100020000C947E000C947E000C947E000C947E0058 … :1000A0000C947E000C947E000C947E000C947E00D8 :1000B0000C947E000C947E000C947E000C947E00C8 :1000C0000C947E000C947E000C947E000C947E00B8 :1000D0000C947E000C947E000C947E000C947E00A8 :1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46 :1000F00000E00CBF0E9480000C9483000C94000070 :0A010000279A2F98FFCFF894FFCF 45 :00000001FF

Byte Count

Adresse

Type (00-Data, 01-EOF, 02- …)

Daten (hier 16 Byte)

Checksumme

33 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

00000000 <__vectors>: 0: 0c 94 72 00 jmp 0xe4 ; 0xe4 <__ctors_end> … e0: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> 000000e4 <__ctors_end>: e4: 11 24 eor r1, r1 e6: 1f be out 0x3f, r1 ; 63 e8: cf ef ldi r28, 0xFF ; 255 ea: d1 e2 ldi r29, 0x21 ; 33 ec: de bf out 0x3e, r29 ; 62 ee: cd bf out 0x3d, r28 ; 61 f0: 00 e0 ldi r16, 0x00 ; 0 f2: 0c bf out 0x3c, r16 ; 60 f4: 0e 94 80 00 call 0x100 ; 0x100 <main> f8: 0c 94 83 00 jmp 0x106 ; 0x106 <_exit> 000000fc <__bad_interrupt>: fc: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>

Beispiel

SREG = 0

Stackpointer am Ende des Speichers

Interrupt-Vektor-Tabelle

Sprung zum Programm

34 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

00000100 <main>: // Led – output DDRB |= (1<<DDA7); 100: 27 9a sbi 0x04, 7 ; 4 // switch on led PORTB &= ~(1<<7); 102: 2f 98 cbi 0x05, 7 ; 5 // Endlosschleife while (1); 104: ff cf rjmp .-2 ; 0x104 <main+0x4> 00000106 <_exit>: 106: f8 94 cli 00000108 <__stop_program>: 108: ff cf rjmp .-2 ; 0x108 <__stop_program>

Beispiel - Fortsetzung

Obligatorische Endlosschleife

cbi – clear bit in register sbi – set bit in register

35 24.10.2013 Prinzipien und Komponenten eingebetteter Systeme

Arbeitsgruppe EOS Dr. Sebastian Zug

Bis zur nächsten Woche …