E Mikrocontroller-Programmierung

Ähnliche Dokumente
J Mikrocontroller-Programmierung

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

Einführung in die Welt der Microcontroller

Name : Klasse : Punkte : Note :

U5-2 Register beim AVR-µC

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

Der Mikrocontroller beinhaltet auf einem Chip einen kompletten Mikrocomputer, wie in Kapitel

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

Atmel AVR für Dummies

Grundlagen Rechnerarchitektur und Betriebssysteme

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

BLIT2008-Board. Uwe Berger

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1


Tutorial. Microcontroller. Grundlagen µc. Kapitel 1

Inhaltsverzeichnis VII.

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Mikrocontroller. eine Einführung. Florian Schmitt / 34

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

2

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

U5 Fortgeschrittene AVR-Programmierung

Die Mikroprogrammebene eines Rechners

Fachbereich Medienproduktion

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

ATmega169 Chip: Pin-Layout

Software ubiquitärer Systeme

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

MikroController der 8051-Familie

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Ein und Ausgabe. von Neumann Konzept enthält folgende Komponenten: Rechenwerk Steuerwerk Speicher Eingabewerk Ausgabewerk (siehe 1.

Parallel-IO. Ports am ATmega128

Wer möchte, kann sein Programm auch auf echter Hardware testen

Speicheraufbau des AT89C5131

TBE332 Controller. Produktbeschreibung

Assembler und Hochsprachen

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

AVR-Mikrocontroller mit dem GCC programmieren

Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G & 18.

Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 -

Microcontroller Kurs Programmieren Microcontroller Kurs/Johannes Fuchs 1

Timer. Funktionsprinzip

D.1 Vorbereitung. Teil D Analog-Digital-Wandler 1

Elektrische Schnittstelle Signal

Eclipse. für die kleinen Dinge des (modernen) Lebens

Grundlagen der Rechnerarchitektur. Ein und Ausgabe

Das Attiny-Projekt Der Bootloader 1

Bootvorgang des DSM-Systems Systems Plurix

Aufgabe 2 - Erweiterung um PIC und Interrupts

AVR-Mikrocontroller in BASCOM programmieren, Teil 2

Prozesse vs. Threads

ZENTRALEINHEITEN GRUPPE

Teach-Dongle Rev 1.1. Teach-Dongle. Rev 1.1 Stand Okt

SPI Serial Peripheral Interface

Betriebssysteme Vorstellung

Erzeugen von PWM-Signalen mit dem Atmel AVR-Mikrocontroller

Ein- Ausgabeeinheiten

Autonome Mobile Systeme. Dr. Stefan Enderle

Mikrocontrollerprogrammierung in Assembler und C

Aufgabe 2 - Erweiterung um PIC und Interrupts

Tag 2 Eingabe und Interrupts

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

2.2 Rechnerorganisation: Aufbau und Funktionsweise

Was ist ein µ-controller?

AVR-8-Bit-Mikrocontroller Bootloader

Prozessorarchitektur. Kapitel 1 - Wiederholung. M. Schölzel

Johannes Kelper Universität Linz. Institut für Elektrische Messtechnik. Dokumentation. ATmeag8-USB Modul. Bernd R. Arminger ATmega8-USB Modul 1

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Interrupts. Inhalt. Interrupts. Synchronisation

Überlegungen beim Entwurf eines Betriebssystems

Grundlagen der Rechnerarchitektur

UART-Kommunikation mit dem Atmel AVR

Rechner Architektur. Martin Gülck

Ergänzungen zum Manual OS V 2.05/2.06

AVR Web Server. Version 1.1. erstellt von. Ulrich Radig

Einführung in Mikrokontroller Benutzung mit dem Arduino Board. Ramon Hofer ICVR

Serielle Datenübertragung mit dem Schnittstellenbaustein 8251

Handout zum Vortrag: Einfache integrierte digitale Schaltungen von Andreas Bock

simline Technische Beschreibung simcontrol5 Version 1.07 Modulbeschreibung Eigenschaften

Schaltungshinweise zum Linux Control System mit DIL/NetPC DNP/7520

Vortrag zur Seminarphase der PG Solar Doorplate MSP430 Wichtigste Grundlagen von David Tondorf

Fachhochschule Kaiserslautern Fachbereich Angewandte Ingenieurwissenschaften WS2010/11. Zeitpunkt der Prüfung: Beginn: 10.

Bedienung des Infineon Evaluationboards XC167

B1 Stapelspeicher (stack)

RGB-Sequenzer RS232 RS485 MDX512 AD / IO Platine

Anwendungen der Prozessdatenverarbeitung (Liste V) Leitung: Prof. Dr. Linn. Microcontroller Programmierung

Teil VIII Von Neumann Rechner 1

SPS S90U. 1. Grundlagen SPS Funktion

Instruktionssatz-Architektur

Serielle Kommunikation mit dem Arduino. Teil 1: Das Serial Peripheral Interface (SPI)

C und C++ für Embedded Systems

BOOTLOADER für AVR-Entwicklungsmodule

Einführung in AVR-Assembler

GRUNDLAGEN DER INFORMATIONSTECHNIK. Übungen TEIL 1 RECHNER

Konzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P

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

Zähler- und Zeitgeber-Baugruppen

Maschinenorientierte Programmierung

Quanton Manual (de) Datum: URL: )

Vorlesung Rechnersysteme II

Transkript:

E Mikrocontroller-Programmierung E Mikrocontroller-Programmierung E.1 Überblick Mikrocontroller-Umgebung Prozessor am Beispiel AVR-Mikrocontroller Speicher Peripherie Programmausführung Programm laden starten Fehler zur Laufzeit Interrupts Grundkonzepte Nebenläufigkeit Umgang mit Nebenläufigkeit E.1 1 Mikrocontroller-Umgebung E.1 Überblick Programm läuft "nackt" auf der Hardware Compiler und Binder müssen ein vollständiges Programm erzeugen keine Betriebssystemunterstützung zur Laufzeit Funktionalität muss entweder vom Anwender programmiert werden oder in Form von Funktionsbibliotheken zum Programm dazugebunden werden Umgang mit "lästigen Programmierdetails" (z. B. bestimmte Bits setzen) wird durch Makros erleichtert Es wird genau ein Programm ausgeführt Programm kann zur Laufzeit "niemanden stören" Fehler betreffen nur das Programm selbst keine Schutzmechanismen notwendig ABER: Fehler ohne direkte Auswirkung werden leichter übersehen E.2

1 Architektur 00-44 Interrupt-Vektor 0x0046 main-funktion... Speicher für Anwendungs- Code Boot-Code 0xFFFF Programmadressraum (8-128 kb) 2 Byte pro Adresse Recheneinheit 32 Register 00-1F 64 I/O Register 20-5F 160 Ext. I/O Reg. 60 - FF 0100 Interner Speicher 10FF 1100 Externer Speicher Datenadressraum (8-128 kb) FFFF Getrennter Speicher für Programm (Flash-Speicher) und Daten (SRAM) Register des Prozessors und Register für Ein-/Ausgabe-Schnittstellen sind in Adressbereich des Datenspeichers eingebettet E.3 1 Architektur(2) Peripherie-Bausteine werden über I/O-Register angesprochen bzw. gesteuert (Befehle werden in den Bits eines I/O-Registers kodiert) mehrere Timer (Zähler, deren Geschwindigkeit einstellbar ist und die bei einem bestimmten Wert einen Interrupt auslösen) Ports (Gruppen von jeweils 8 Anschlüssen, die auf 0V oder V cc gesetzt, bzw. deren Zustand abgefragt werden kann) Output Compare Modulator (OCM) (zur Pulsweitenmodulation) Serial Peripheral Interface (SPI) Synchrone/Asynchrone serielle Schnittstelle (USART) Analog-Comparator A/D-Wandler EEPROM (zur Speicherung von Konfigurationsdaten) E.4

2 In Speicher eingebettete Register (memory mapped registers) Je nach Prozessor sind Zugriffe auf I/O-Register auf zwei Arten realisiert: spezielle Befehle (z. B. in, out bei x86) in den Adressraum eingebettet, Zugriff mittels Speicheroperationen Bei den meisten Mikrocontrollern sind die Register in den Speicheradressraum eingebettet Zugriffe auf die entsprechende Adresse werden auf das entsprechende Register umgeleitet sehr einfacher und komfortabler Zugriff E.5 3 I/O-Ports Ein I/O-Port ist eine Gruppe von meist 8 Anschluss-Pins und dient zum Anschluss von digitalen Peripheriegeräten Die Pins können entweder als Eingang oder als Ausgang dienen als Ausgang konfiguriert, kann man festlegen, ob sie eine logische "1" oder eine logische "0" darstellen sollen Ausgang wird dann entsprechend auf V CC oder GND gesetzt als Eingang konfiguriert, kann man den Zustand abfragen Manche I/O Pins können dazu genutzt werden, einen Interrupt (IRQ = Interrupt Request) auszulösen (externe Interrupt-Quelle) Die meisten Pins können alternativ eine Spezialfunktion übernehmen, da sie einem integrierten Gerät als Ein- oder Ausgabe dienen können z. B. dienen die Pins 0 und 1 von Port E (ATmega128) entweder als allgemeine I/O-Ports oder als RxD und TxD der seriellen Schnittstelle E.6

4 Programme laden generell bei Mikrocontrollern mehrere Möglichkeiten Programm ist schon da (ROM) Bootloader-Programm ist da, liest Anwendung über serielle Schnittstelle ein und speichert sie im Programmspeicher ab spezielle Hardware-Schnittstelle "jemand anderes" kann auf Speicher zugreifen Beispiel: JTAG spezielle Hardware-Komponente im AVR-Chip, die Zugriff auf die Speicher hat und mit der man über spezielle PINs kommunizieren kann E.7 5 Programm starten Reset bewirkt Ausführung des Befehls an Adresse 0x0000 dort steht ein Sprungbefehl auf die Speicheradresse einer start-funktion, die nach einer Initialisierungsphase die main-funktion aufruft alternativ: Sprungbefehl auf Adresse des Bootloader-Programms, Bootloader lädt Anwendung, initialisiert die Umgebung und springt dann auf main-adresse 6 Fehler zur Laufzeit Zugriff auf ungültige Adresse es passiert nichts: Schreiben geht in s Leere Lesen ergibt zufälliges Ergebnis ungültige Operation auf nur-lesbare / nur-schreibbare Register/Speicher hat keine Auswirkung E.8

1 Motivation An einer Peripherie-Schnittstelle tritt ein Ereignis auf Spannung wird angelegt Zähler ist abgelaufen Gerät hat Aufgabe erledigt (z. B. serielle Schnittstelle hat Byte übertragen, A/D-Wandler hat neuen Wert vorliegen) Gerät hat Daten für die Anwendung bereit stehen (z. B. serielle Schnittstelle hat Byte empfangen)? wie bekommt das Programm das mit? Zustand der Schnittstelle regelmäßig überprüfen (= Polling) Schnittstelle meldet sich von sich aus beim Prozessor und unterbricht den Programmablauf (= Interrupt) E.9 1 Motivation (2) Polling vs. Interrupts: Vor und Nachteile Polling + Pollen erfolgt synchron zum Programmablauf, Programm ist in dem Moment auf das Ereignis vorbereitet Interrupts unterbrechen den Programmablauf irgendwo (asynchron), sie könnten in dem Augenblick stören durch die Interrupt-Bearbeitungentsteht Nebenläufigkeit Pollen erfolgt explizit im Programm und meistens umsonst Rechenzeit wird verschwendet E.10

1 Motivation (3) Polling vs. Interrupts: Vor und Nachteile Interrrupts + Interrupts melden sich nur, wenn tatsächlich etwas zu erledigen ist + Interrupt-Bearbeitung ist in einer Funktion kompakt zusammengefasst Polling-Funktionalität ist in den normalen Pragrammablauf eingestreut und hat mit der "eigentlichen" Funktionalität dort meist nichts zu tun E.11 2 Implementierung typischerweise mehrere Interrupt-Quellen Interrupt-Vektor Speicherbereich (Tabelle), der für jeden Interrupt Informationen zur Bearbeitung enthält Maschinenbefehl (typischerweise ein Sprungbefehl auf eine Adresse, an der eine Bearbeitungsfunktion steht) oder Adresse einer Funktion (Interrupt-Handler) feste Position im Speicher ist im Prozessorhandbuch nachzulesen Maskieren von Interrupts Bit im Prozessor-Statusregister schaltet den Empfang aller Interrupts ab zwischenzeitlich eintreffende Interrupts werden gepuffert (nur einer!) die Erzeugung einzelner Interrupts kann am jeweiligen Gerät unterbunden werden E.12

3 Ablauf ➀ Gerät löst Interrupt aus, Ablauf des Anwendungsprogramms wird unmittelbar unterbrochen ➁ weitere Interrupts werden deaktiviert ➂ aktuelle Position im Programm und Registerinhalte werden im Datenspeicher gesichert ➃ Eintrag im Interrupt-Vektor ermitteln ➄ Befehl wird ausgeführt bzw. Funktion aufrufen ➅ am Ende der Bearbeitungsfunktion bewirkt ein Befehl "Return from Interrupt" die Fortsetzung des Anwendungsprogramms und die Reaktivierung der Interrupts ➁ ➀ ➂ ➃ Interrupt-Handler ➅ ➄ E.13 4 Pegel- und Flanken-gesteuerte Interrupts Beispiel: Signal eines Tasters V cc GND Taster drücken loslassen Flanken-gesteuert Interupt wird durch die Flanke (= Wechsel des Pegels) ausgelöst welche Flanke einen Interrupt auslöst kann bei manchen Prozessoren konfiguriert werden Pegel-gesteuert solange ein bestimmter Pegel anliegt (hier Pegel = GND) wird immer wieder ein Interrupt ausgelöst E.14