Prinzipien und Komponenten eingebetteter Systeme

Ähnliche Dokumente
Prinzipen und Komponenten Eingebetteter Systeme (PKES) Sebastian Zug Arbeitsgruppe Eingebettete Systeme und Betriebssysteme

Prinzipen und Komponenten Eingebetteter Systeme (PKES) Sebastian Zug Arbeitsgruppe Eingebettete Systeme und Betriebssysteme

Prinzipien und Komponenten eingebetteter Systeme

Atmega Interrupts. Rachid Abdallah Gruppe 3 Betreuer : Benjamin Bös

Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega

Prinzipien und Komponenten eingebetteter Systeme

Interruptsystem AVR. Interrupt-Quellen: Extern, Timer, ADC, USART usw. (siehe IVT im Anhang) Rücksprungadresse automatisch am Stack.

Aufbau eines Assembler-Programms

Tag 3 Timer, ADC und PWM

Timer. Funktionsprinzip

Unter einem Interrupt kann man sich einen durch Hardware ausgelösten Unterprogrammaufruf vorstellen.

Prinzipien und Komponenten eingebetteter Systeme

Mikrocomputertechnik

2.1 Atmega-Peripherie/Interrupts

Atmel AVR für Dummies

Mikrocontrollerplatine vorbereiten

Name : Klasse : Punkte : Note :

myavr Programmierung in C

WS 2017/18 Viel Erfolg!!

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Implementierung von Interruptbehandlungen. Interrupts

Inhaltsverzeichnis 1 Ein-Bit-Rechner Mikrorechentechnik-Grundlagen Das Mikrocontrollersystem ein Überblick am Beispiel MSP430F1232

IR NEC Empfänger mit 4x7 LED Anzeige (ATtiny2313)

8. Beschreibung des Prozessors MSP 430

E Mikrocontroller-Programmierung

Einführung in die Welt der Microcontroller

WS 2016/17 Viel Erfolg!!

16-Bit PCA Timer/Counter

Rechnerarchitektur Atmega Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7

Übung "Struktur von Mikrorechnern" (CBS)

Embedded Systems

Die Technik hinter IoT: Arduino, Raspberry Pi & Co.

Lösungen zum Kurs "Mikrocontroller Hard- und Software

U Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer

Prinzipen und Komponenten Eingebetteter Systeme (PKES) Sebastian Zug Arbeitsgruppe Eingebettete Systeme und Betriebssysteme

2

The amforth Cookbook angefangen

Einführung in die Programmierung von Mikrocontrollern mit C/C++

Interrupt-Programmierung

U5 Fortgeschrittene AVR-Programmierung

Erzeugen von PWM-Signalen mit dem Atmel AVR-Mikrocontroller

ATmega169 Chip: Pin-Layout

Name : Klasse : Punkte : Note :

U2 Fortgeschrittene AVR-Programmierung. U2-1 Externe Interrupts des AVR-μC. 1 Flanken-/Pegel-Steuerung. 1 Flanken-/Pegel-Steuerung (2) 2 Maskieren

Tag 2 Eingabe und Interrupts

Arduino Kurs Timer und Interrupts. Stephan Laage-Witt FES Lörrach

Für den CTC-Mode kann demnach TCCR1A komplett auf 0 gesetzt werden, weil WGM11 und WGM10 in diesem Register liegen und beide laut Tabelle 0 sind:

Projekt: Kaffeemaschinensteuerung mit ATMega128RFA1

4.0 Der Atmel AT89LPx052 Mikrocontroller

d) Was passiert, wenn das folgende Programmstück übersetzt und ausgeführt

U5-2 Register beim AVR-µC

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014

Analog-Digital-Converter

Mikrocontrollertechnik C2 Timer. Einführung

Ein-Bit-Rechner 15. Mikrorechentechnik-Grundlagen 29

Mikrocontrollertechnik

AVR-8-bit-Mikrocontroller Gruppe Technologie der AVR-8-bit-Mikrocontroller Teil SPI

U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung. Synchronisation mit Unterbrechungsbehandlungen

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm

MikroController der 8051-Familie

MSP 430. Einführung. Was kann er? Hauptthemen. Wie sieht er aus? 64 / 100 polig. Was kann er? MSP 430 1

C.1 Serielle Schnittstelle, erstes Testprogramm (a)

Übungen zu Systemnahe Programmierung in C (SPiC)

Assembler-Unterprogramme

Autonome Mobile Systeme. Dr. Stefan Enderle

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil VI: Programmieren an weiteren Beispielen

Inhaltsverzeichnis VII

Embedded Systems

Einführung Microcontroller

Die AVR Mikrocontrollerfamilie

Mikrocontroller. eine Einführung. Florian Schmitt / 34

Einführung DIP & AVR EVK1100

Serielle Schnittstelle, erstes Testprogramm (a)

Parallel-IO. Ports am ATmega128

Microcontroller Selbststudium Semesterwoche 9

LabView mit der myavr Produktfamilie. Andreas Düring

a) Welche Aussage zu Zeigern ist richtig? Die Übergabesemantik für Zeiger als Funktionsparameter ist callby-value.

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

Prozessoren für mobile und. eingebettete Systeme II: Die AVR-Architektur. EMES: Eigenschaften mobiler und eingebetteter Systeme

E.1 Einleitung. Teil E Pulsweitenmodulation (PWM) 1


Lotto. eine Projektarbeit in DVT. von Sven Schwab

Prinzipien und Komponenten eingebetteter Systeme

Studiengang Maschinenbau, Schwerpunkt Mechatronik (früher: Automatisierungstechnik) Seite 1 von 8

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer

C++ mit dem Arduino (Uno und Mega2560)

AVR Ein/Ausgabe. Inhaltsverzeichnis

5 Funktionsbibliothek für den Controller XMC1100

Mikrocontroller vs. Mikroprozessor 1/3

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Klasse, Name : Datum : Rad l/r Linienfolger l/r Laderaum ATMEGA 128

UART und Interrupts. Versuch Nr. 7

Interrupt. Externe Interrupts 0 und 1

Mikrocontroller - Tipps & Tricks

Vorlesung HSMT (MRT - Teil) ab WS2011/2012

Aufgabe 1: Transistor, Diode (ca. 15 Punkte)

Inhaltsverzeichnis VII.

Transkript:

1 Prinzipen und Komponenten Eingebetteter Systeme (PKES) (7) Ansteuerung von Motoren Sebastian Zug Arbeitsgruppe: Embedded Smart Systems

2 Veranstaltungslandkarte Fehlertoleranz, Softwareentwicklung Mikrocontroller Architekturen Sensoren Scheduling Arithmetik Anwendungen Aktoren Kommunikation Energieversorgung

3 Literaturhinweise Bücher Hans-Rolf Tränkler, Sensortechnik: Handbuch für Praxis und Wissenschaft Springer, 1998 Jens Steffen Gutmann, Robuste Navigation autonomer mobiler Systeme Dissertation Webseiten http://www.ermicro.com/blog/?p=1971 (PWM)

4 Fragestellungen dieser Vorlesung Erläutern Sie, warum Elektromotoren die wichtigste Antriebsform für Aktuatoren darstellen? Vergleichen Sie die grundlegende Funktion eines Schrittmotors und eines Servomotors. Welche Vorteile ergeben sich aus der unipolaren/bipolaren Bauform eines Schrittmotors? Für welche Aufgaben werden die Timerfunktionen des Mikrocontrollers herangezogen? Wie sind ein Timer grundlegend aufgebaut (Capture&Compare)? Was ist PWM? Welche Arten der PWM Generierung gibt es? Welche Schritte werden bei der Abarbeitung von Interrupts durchlaufen? Welche Folgen können verpasste Interrupts haben? Beziehen Sie sich dabei insbesondere auf verschiedene Sensortypen, mit denen Sie in der Übung gearbeitet haben. Woraus ergibt sich die Prioritätenfolge der Interrupts beim AVR? Nennen Sie Interruptquellen beim AVR? Wie viele Interrupts können sich bei Atmega 2560 stauen, ohne dass einer verloren geht?

5 Übergreifendes Beispiel - Gleichstrommotor Beispiel: Permanenterregter Gleichstrommotor +Energieeinsparung durch statisches Magnetfeld +Einfacher Aufbau +Großes Einsatzspektrum Bürstenkontakte Keine Anpassung des Magnetfeldes möglich Source: http://de.wikipedia.org/wiki/gleichstrommaschine Varianten: Bürstenlose Gleichstrommotoren

6 Beispiel Gleichstrommotor - Kennlinie Leerlaufdrehzahl Anlaufstrom P U I Drehzahlkennlinie (blau) N=f(U,M) Stromkennlinie(schwarz) N=f(U,M) Wirkungsgrad(grün) Anlaufmoment P U I M N Source: http://www.dunkermotoren.de/default.asp?id=18&lang=1

7 Schittmotor Schrittweise Bewegung des Stators - diskrete Positionierung Varianten: Bipolar, Unipolar Source: Wikipedia.de

8 Servomotoren Interner Regelkreis zur Positionierung über Potentiometer Pulsbreitendefinierte Richtungsvorgabe Unterscheidung digitaler oder analoger Servomotor Source: http://rn-wissen.de/wiki/index.php/servos, oberallgeier

9 PWM(100) == konstante Geschwindigkeit? Unterschiedliches Verhalten der Treiber und Motoren Variable Radgrößen Veränderlicher Untergrund (Neigung, Reibung) = konstante Rotationsgeschwindigkeit als Herausforderung

10 Aufbau des Systems Einfache Odometriescheibe Gleichstrommotor Getriebe Fragen: 1.Wie steuere ich den Gleichstrommotor aus dem Mikrocontroller heraus an? 2.Welche Aufgaben kann ich auf einen Treiberbaustein auslagern? 3.Wie erfasse ich die Messungen der Odometrie im Controller effektiv? 4.Wie bilde ich die Odometrieticks auf eine Bewegung ab?

11 Ansteuerung Gleichstrommotor Richtungsorientierung über H-Brücke M + - + - + M - M + - - +

12 Ansteuerung Gleichstrommotor Geschwindkeitsdefinition über PWM M + - Periode + - Spannung am Motor 50% ma 90% 10%

13 Beispiel LED https://www.youtube.com/watch?v=zhirryhfhlm Üblicherweise ist die mit PIN 13 verbundene LED an einem PWMfähigen Port angebunden.

14 Leistungstreiber L298P PWM vom Controller Source: Arduino Homepage STMicroelectronics, Datenblatt L298P

15 PWM in Software? #include <avr/io.h> #define F_CPU 16000000UL #include <util/delay.h> void setup() { DDRB = _BV(DDB0); } void loop() { PORTB = _BV(PB0); _delay_ms (10); PORTB &=~ _BV(PB0); _delay_ms (90); } Busy-Waiting Nachteil der Implementierung: Die Verzögerung der Verarbeitung wird nicht berücksichtigt. Der Prozessor läuft permanent mit voller Leistung. Timerfunktionen sollten soweit wie möglich in Hardware umgesetzt werden.

16 Aufgaben der Timer Zählen von Ereignissen Messen von Zeiten, Frequenzen, Phasen, Perioden Erzeugen von Intervallen, Pulsfolgen, Interrupts Überwachen von Ereignissen und Definition von Zeitstempeln Source: Mikrocontroller und Mikroprocessoren, Brinkschulte

17 Capture-and-Compare Einheit interrupt request system clock Capture-Register edge select 2 n Port internal timers timer select MUX Counter external timing sources activate Counter Controller interrupt request Min / Max Capture Funktionalität: Generation von Zeitstempeln

18 Capture-and-Compare Einheit system clock Compare-Register 2 n match Digital Comparator Port internal timers timer select MUX Counter external timing sources activate Counter Controller interrupt request Min / Max Compare Funktionalität: Generation von Zeitintervallen, PWM

19 Anwendung: Timerinterrupts Compare-Register 12 Digital Comparator Clock 0...16 Counter Controller 0/ 16 interrupt request Periode p=16 Timerinterrupt: pw=12 match/clear Zähler<pw Zähler pw match/clear Zähler<pw Zähler pw match/clear Zähler<pw p p Overflow Interrupt Compare Interrupt

20 Anwendung: Pulsweitenmodulation Compare-Register 12 Digital Comparator match Port Clock 0...16 Counter Controller 0/ 16 interrupt request Signalverlauf: Periode p=16 Pulsweite: pw=12 Tastverhältnis: a:b = 12:4 match/clear Zähler<pw Zähler pw match/clear Zähler<pw Zähler pw match/clear Zähler<pw a b a b p p

21 Umsetzung im AVR Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode Four 16-bit Timer/Counter with Separate Prescaler, Compare- and Capture Mode Four 8-bit PWM Channels Twelve PWM Channels with Programmable Resolution from 2 to 16 Bits

22 Modi des 8-Bit Timers I Clear on Compare Match (CTC) f 2 N f clk _ I / O (1 OCRnx ) Variable Periode! Fast PWM f N f clk _ I / O 256

23 Timer Modi des 8-Bit Timers II Phase Correct PWM f N f clk _ I / O 510

24 Abfragen der Sensoren Lies Messwert Lies Messwert 1 Taktperiode Transformation, Filterung, Detektor, Abstraktion Berechnung Reglerverhalten Idle Messwert verfügbar Busy Waiting bis zum Ende der Periode Schreibe Ausgabe Lies Messwert Idle Timerinterrupt Schreibe Ausgabe Idle Timerinterrupt Schreibe Ausgabe

25 Interruptbasierte Programmierung normale Programmabarbeitung Beenden der aktuelle Instruktion eventl. Interrupts deaktiviert Registersatz auf den Stack Zeitpunkt des Interrupts indirekter Sprung über die Interrupt-Einsprungtabelle zur Interrupt-Behandlungs- Routine Ausführung der Interrupt- Einsprung- Routine Ausführung der Interrupt- Behandlungs- Routine RTI: Rückkehr vom Interrupt normalen Programmabarbeitung Wiederherstellung des Prozessorzustands Holen der Register vom Stack

26 Praktische Umsetzung Single Device Multi Devices Daisy Chaining

27 Vektorisierte Interupts Hauptspeicher IVT Programmzähler CPU Vektor-Basis-Reg. IRQ IACK IBR BUS IACK IRQ Peripheres Gerät IACK Vektor IRQ IACK Vektor IRQ Peripheres Gerät

28 Vektorisierte Interrupts IMR Interrupt Masken Register IRR Interrupt Request Register PSN - Prioritätenschaltnetz Source: Mikrocontroller, Wüst

29 Interrupts beim AVR 8 Interruptvektoren für externe Interrupts an Port INT 0...7 25 Interruptvektoren für interne Ereignisse (Timer, ADC, Comm, Memories) 1 Reset Interruptvektor Die Priorität der Interrupts ist durch die Position in der Interrupt- Vektor-Map (0000 16 0044 16 ) festgelegt. Diese wird im Programmspeicher (Flash) angelegt. Es kann gewählt werden, ob sie am Anfang (0000 16 ) stehen soll oder vor der Boot-Loader Sektion. Prioritäten: Reset ext.interrupts 0-7 Timer (hohe Prio) Kommunikation ADC Analog-Komparator Timer (niedrigere Prio) Kommunikation (niedrigere Prio)

30 Interrupt-Vektortabelle des AVR

31 Interrupts beim AVR Ausführung eines Interupts wenn: generelle Aktivierung über Status Bit (I-Bit) individuelle Aktivierung der externen Interrupts (Maske) Interrupt Auftritt Verschachtelte Interrupts sind nicht vorgesehen können aber erzwungen werden globale Sperrung der Interrupts, keine Verdrängungsmodelle! Stau von Interrupts: 1. Ein Interrupt tritt auf, während Interrupts gesperrt sind. 2. Setzen des individuelle Interruptflags 3. Soweit ein weiterer Interrupt gleichen Typs auftritt, wird der vorhergehende Interrupt überschrieben. 4. Nach dem Verlassen der ausgeführten Interruptroutine werden die zwischenzeitlich eingetroffenen Interrupts abgearbeitet.

32 Darstellung im Assembler-Code 00000000 < vectors>: 0: 0c 94 72 00 jmp 0xe4 ; 0xe4 < ctors_end> 4: 0c 94 93 00 jmp 0x126 ; 0x126 < bad_interrupt> 44: 0c 94 95 00 jmp 0x12a ; 0x12a < vector_17> 000000e4 < ctors_end>: e4: 11 24 eor r1, r1 ; Init R1 e6: 1f be out 0x3f, r1 ; Setzen des SREG e8: cf ef ldi r28, 0xFF ; Initialisieren des Stack 00000126 < bad_interrupt>: 126: 0c 94 00 00 jmp 0 ; 0x0 < vectors>

33 Darstellung im Assembler-Code 0000012a < vector_17>: ISR(TIMER1_COMPA_vect) { 12a: 1f 92 push r1 12c: 0f 92 push r0 12e: 0f b6 in r0, 0x3f ; 63 130: 0f 92 push r0 132: 11 24 eor r1, r1 134: 8f 93 push r24 counter_trigger=1; 136: 81 e0 ldi r24, 0x01 ; 1 138: 80 93 0a 02 sts 0x020A, r24 } 13c: 8f 91 pop r24 13e: 0f 90 pop r0 140: 0f be out 0x3f, r0 ; 63 142: 0f 90 pop r0 144: 1f 90 pop r1 146: 18 95 reti SREG sichern r1=0 r24 sichern Counter_trigger =1 Rücksprung

34 Zeitverhalten des Interrupts normale Programmabarbeitung aktuelle Instruktion wird zu Ende geführt Mindestens Interrupts werden 1 Clock Zyklus deaktiviert Zeitpunkt des Interrupts indirekter Sprung über die Interrupt-Einsprungtabelle zur Interrupt-Behandlungs- Routine Ausführung der Interrupt- Einsprung- Routine Mindestens 5 Clock Zyklen Ausführung der Interruptn Clock Zyklen Behandlungs- Routine Fortsetzung der normalen Programmabarbeitung Continue Mindestens RTI: Rückkehr vom Interrupt 5 Clock Zyklen Wiederherstellung des Prozessorzustands

Source: Atmega 2560 Handbuch Prinzipien und Komponenten eingebetteter Systeme 35 AVR zwei Varianten externer Interrupts INTn bei INT0 kannst du auf die positive bzw. negative Flanke einen Interrupt auslösen. individuelle Interruptroutinen Teilweise asynchron und damit zum Restart des Prozessors aus verschiedenen Sleep-modi geeignet PCINTn Keine Triggerung auf bestimmte Signalzustände eine allgemeine Interruptfunktion Pattern matching über 8 Bit PCINT0:7 und PCINT8:15 (konfigurierbar über PCMSK1:2) Beide Varianten können als Softwareinterrupts benutzt werden!

36 Bis zur nächsten Woche!