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

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

Atmel AVR für Dummies

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

Parallel-IO. Ports am ATmega128

Einführung in die Welt der Microcontroller

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Tag 2 Eingabe und Interrupts

Einführung in AVR Assembler

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

C.1 Serielle Schnittstelle, erstes Testprogramm (a)

Microcontroller Kurs Programmieren Microcontroller Kurs/Johannes Fuchs 1

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

Lösungen zum Kurs "Mikrocontroller Hard- und Software

C++ mit dem Arduino (Uno und Mega2560)

Lotto. eine Projektarbeit in DVT. von Sven Schwab

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

Embedded Systems

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

Serie 8: Microcontroller 17./

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Interrupt-Programmierung

8.3 Taster am µcontroller

Rechnerarchitektur, Einführung in die Laborübungen

Produktinformationen. Basis Set Atmel Atmega8 & ISP Programmer. Lieferumfang :

Mikrocontroller - Schnelleinstieg

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

B1 Stapelspeicher (stack)

Einführung in AVR-Assembler

Technische Informatik 2: Addressierung und Befehle

AVR UART. ELV Modul: ch=&marke=

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

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

Ein erstes Assembler-Projekt

C4 Die SPI Schnittstelle

CCS Compiler Tutorial mit Beispielen

b) Was bewirken folgende Programmanweisungen? uint8_t x = 42; x ^= x;

8.1 Grundsätzlicher Aufbau der Beispiele

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

Autonome Mobile Systeme. Dr. Stefan Enderle

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

Assembler für BASIC Programmierer

Richtung durch Taster während des Ablaufs umschaltbar

The amforth Cookbook angefangen

AVR-Mikrocontrollertechnik

Interrupts & I/O-Ports

Mikrocontroller stromsparend. Uwe Berger

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

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

myavr Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg für myavr Board MK3

Multitasking / virtuelle Maschinen mittels Atmel AVR- Mikrocontrollern (Simple & Stupid)

Was unterscheidet Microcontroller von einem PC ( Laptop ) oder einem Handy

Circuit. Open JP1 while programming. ST2: power input. Heinz, G. GFaI Berlin GFaI

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Projektarbeit: Roulette Spiel

Making the Internet of Things

MB-Diplom (4. Sem.) / MB-Bachelor (Schwerpunkt Mechatronik, 5. Sem.) Seite 1 von 8. Wintersemester 2014/15 Elektronik

ATmega169 Chip: Pin-Layout

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Installation & Verwendung. Version 1.0. WinAVR

myavr Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg für myavr Board MK3

Prinzipien und Komponenten eingebetteter Systeme

1 Assembler. 2 LED-Steuerung

AVR-8-Bit-Mikrocontroller Bootloader

Mikrocontroller. eine Einführung. Florian Schmitt / 34

Zähler- und Zeitgeber-Baugruppen

Zahlendarstellung Logikfunktionen Register Eingänge Infrarot senden TSOP-Effekte Weiterführendes U Abend 3:

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein:

9.3 Eingebettete Peripheriekomponenten

UART-Kommunikation mit dem Atmel AVR

Speicheraufbau des AT89C5131

Tutorial. Microcontroller. Grundlagen µc. Kapitel 1

Core und Speicher des ATmega16

Wintersemester 08/09. Anwendungen der Prozessdatenverarbeitung Inverses Pendel

Aufgaben zur Attiny-Platine

Prinzipien und Komponenten eingebetteter Systeme

Universita t Koblenz/Landau Studienarbeit

AVR-Mikrocontroller in BASCOM programmieren, Teil 3

3.14 Die Programmieroberfläche Programmierung

Befehlssatz AVR RISC Controller

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

Assembler in der Arduino-IDE: ein Einblick

AVR-Mikrocontroller in BASCOM programmieren, Teil 2

Bau einer Alarmanlage PSS

Rechnerarchitektur und Betriebssysteme (CS201): Peripheriebausteine, IO, Interrupts und Timer

Microcontroller Programmierung. Ein PDV-Vertiefungsprojekt von: Chr. Schulz, P. Simon und D. Stein Sommersemester 2005 Version 1.0

Einführung in das Programmieren in der Sekundarstufe 1. mit einem Arduino und der Physical-Computing-Plattform

Entwicklung einer mobilen Kleinstroboterplattform für die Anwendung in der Lehre und Forschung

Leseprobe myavr Lehrbuch Microcontrollerprogrammierung Laser & Co. Solutions GmbH

Zuse-Computer: Z1. erster Rechner mit binären Zahlen. Entwicklung der computergerechten. (Grundlage für IEEE-754) funktionierte leider nie zuverlässig

Addieren und Subtrahieren mit Mikrocontroller Atmega AT90162USB

Arduino für FunkAmateure

Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg am Beispiel myethernet-projekt

Kurs "Mikrocontroller Hard- und Software

Alkoholsensor MQ135, Time-Delay, Mailbox und LCD

Gliederung Hardware fuer die Zeitmessung Zeitmanagement auf Uniprozessorsystemen. Timing Measurements. Timo Schneider. 4.

Ausgewählte Kapitel eingebetteter Systeme Die Atmel AVR Mikrocontrollerfamilie

BLIT2008-Board. Uwe Berger

Aufgabe I: Im einzelnen soll das Hauptprogramm:

Dies und das zu atmega und amforth

Installation & Verwendung. Version 1.0. WinAVR & AVR Studio 4

Transkript:

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

Inhaltsverzeichnis Vorbereitung Was Sind Interrupts Interruptvektoren Software Interrupts Hardware Interrupts Quellen 2

Vorbereitung Rechner haben manchmal die Aufgabe mit Ihrer Umgebung zu kommunizieren: Empfang und Übertragung von Daten Messdaten Verarbeitung Knopfdruck Abwarten Zu bestimmten Schwellenwerten reagieren... Ein gutes Beispiel wäre die Strg+Alt+Entf Tastenkombinition Die (BS abhängig) der Rechner neustartet, abgestürtzte Programme beendet, oder Programme mit hoher Priorität öffnet (Wie der Task-Manager). 3

Wie kann der Rechner Sinnvollerweise diese Ereignisse abhandeln? 4

Was Sind Interrupts Interrupts ermöglichen dem Microcontroller auf bestimmte Ereignisse zu reagieren In diesem Prozess wird den Programmablauf angehalten, der Microcontroller führt einen Codeblock aus der zu diesem Ereignis vorprogrammiert ist. Nachdem dieses Ereignis abgehandelt wurde, springt das Programm zurück zu der Stelle wo es angehalten wurde. 5

In Detail : 1. Sobald ein Interrupt scharf ist, führt der Prozessor den aktuellen Befehl bis zum Ende aus. 2. Die Adresse des nächsten Befehls, die sich jetzt in Befehlszähler befindet, wird im Stack gespeichert. 3. Der Prozessor lädt die Adresse des Interrupt-Vectors in Befehlszähler und führt die entsprechende Befehle aus. 4. Der Prozessor lädt die Adresse aus dem Stack wieder und führt die nachfolgende Befehle aus. 6

Interruptvektoren Beim auftreten eines Interrupts wird an die Adresse des entsprechenden Interruptsvektors gesprungen. An dieser Stelle steht die Interrupt Service-Routine (ISR) die den Interrupt beantwortet. Atmega16 hat 17 interne- und 4 externe Interrupts : 7

Software Interrupts AVR Mikrocontroller besitzen 17 interne Interruptverktoren Interne Interrupts sind durch interne Funktionen des MCs realisiert, Wie z.b Timer und ADC. Atmega16 hat zwei 8-bit Timer und einen 16-bit Timer. 8

Beispiel : (16-bit Timer) #include <avr/io.h> #include <avr/interrupt.h> ISR(TIMER1_COMPA_vect){ PORTB ^= 1<<PINB0; //die LED blinkt in 1 Sekunde takt } int main(void){ sei(); // Interrupts zur Verfügung stellen DDRB = 1 << PINB0; // PIN 0 von Port B als Ausgang definieren TIMSK = 1<< OCIE1A; // Timer Interrupt aktivieren //hier wird der interne Timer skaliert : 1000000/64 = 15625 TCCR1B = 1<<CS10 1<<CS11 1<<WGM12; //Timer frequenz = 15625 -> wenn Timer = OCR1A an Interrupt springen } OCR1A = 15624; //nach 15624 Ticks ist eine Sekunde vegangen und Timer = //OCR1A-> springen while (1){ } 9

Hardware Interrupts Der Atmega16 besitzt 4 Interruptvektoren die Hardware Interrupts realisieren. In dem folgenden Beispiel werde ich an INT0 ein Schalter anschließen. Wenn betätigt wird die LED an PIN0 von PORTA an-/ausgeschaltet. Ein Pull down Widerstand wird eingesetzt. 10

11

Wichtige Register : GISR : MCUCR: 12

Programm Code in C : #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> ISR(INT0_vect){ PORTA ^= 1<<PINA0; //die LED wird umgeschaltet } int main(void){ sei(); // Globale Interrupts zur Verfügung stellen DDRA = 1 << PINA0; // PIN 0 von Port A als Ausgang setzen GICR =(1<<INT0); //INT0 bereitstellen. MCUCR =(3<<ISC00); //INT0 für steigende Flanken einstellen } while (1){ } 13

Programm Code in Assembler:.include "m8def.inc".def temp = r16.org 0x000 rjmp main ; Reset Handler.org INT0addr rjmp int0_handler ; IRQ0 Handler main: ; hier beginnt das Hauptprogramm ldi temp, LOW(RAMEND) out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp ldi temp, 0x00 out DDRD, temp ldi temp, 0xFF out DDRB, temp ldi temp, (1<<ISC01) (1<<ISC00) ; INT0 auf steigende Flanke konfigurieren out MCUCR, temp ldi temp, (1<<INT0) ; INT0 aktivieren out GICR, temp sei ; Interrupts allgemein aktivieren loop: rjmp loop ; eine leere Endlosschleife int0_handler: sbi PORTB, 0 reti 14

Quellen http://www.engineersgarage.com http://www.protostack.com YouTube Channel von Patrick Hood-Daniel (MCU Tutorial) http://www.youtube.com/user/anajonesr www.mikrocontroller.net Das Atmega16 Datenblatt 15

Vielen Dank für die Aufmerksamkeit! 16