Interrupt-Quellen haben alle ein eigenes Maskenregister, ein eigenes Anzeigeregister und einen eigenen Einsprungpunkt (in dieser Speicheradresse ist der Bedinn der ISR gespeichert) im Programm ab Adresse 0x0000.

Eine Adresse einer Quelle ist immer vier Byte lang.

Eine Aufstellung der Interruptquellen ist im Datenblatt zu finden.

In diesem Kurs wird zunächst nur auf die externen Interrupts INT0 und INT1 eingegangen

Interrupt-Quellen-Verzeichnis

Vektor-nummer

Programm-adresse

Quelle

Definition

1

0x0000

RESET

External Pin, Power-on Reset, Brown-out Reset and Watchdog System Reset

2

0x0002

INT0

External Interrupt Request 0

3

0x0004

INT1

External Interrupt Request 1

4

0x0006

PCINT0

Pin Change Interrupt Request 0

5

0x0008

PCINT1

Pin Change Interrupt Request 1

6

0x000A

PCINT2

Pin Change Interrupt Request 2

7

0x000C

WDT

Watchdog Time-out Interrupt

8

0x000E

TIMER2_COMPA

Timer/Counter2 Compare Match A

9

0x0010

TIMER2_COMPB

Timer/Counter2 Compare Match B

10

0x0012

TIMER2_OVF

Timer/Counter2 Overflow

11

0x0014

TIMER1_CAPT

Timer/Counter1 Capture Event

12

0x0016

TIMER1_COMPA

Timer/Counter1 Match A

13

0x0018

TIMER1_COMPB

Timer/Counter1 Match B

14

0x001A

TIMER1_OVF

Timer/Counter1 Overflow

15

0x001C

TIMER0_COMPA

Timer/Counter0 Match A

16

0x001E

TIMER0_COMPB

Timer/Counter0 Match B

17

0x0020

TIMER0_OVF

Timer/Counter0 Overflow

18

0x0022

SPI STC

SPI Serial Transfer Complete

19

0x0024

USART_RX

USART RX Complete

20

0x0026

USART_UDRE

USART Data Register Empty

21

0x0028

USART_TX

USART TX Complete

22

0x002A

ADC

ADC Conversion Complete

23

0x002C

EE READY

EEPROM Ready

24

0x002E

ANALOG COMP

Analog Comparator

25

0x0030

TWI

2-wire Serial Interface

26

0x0032

SPM READY

Store Program Memory Ready


Die einzelnen Interrupts haben Prioritäten bzgl. ihres Aufrufes. Die Priorität nimmt mit steigender Vektornummer (siehe Tabelle) ab. Sind beispielsweise INT 0 und INT1 gesetzt (jeweiligen IRB ist 1), so wird INT0 zuerst bearbeitet.

Wenn die Interrupts nicht benötigt werden, kann der dafür vorgesehene Speicherbereich für Programmcode genutzt werden.

Standardinterrupts sind zum Beispiel:

Timerinterrupt

Ein Timerinterrupt wird verwendet, wenn sich eine bestimmte Funktion periodisch wiederholen soll.


UART Empfangsinterrupt

Ein UART Empfangsinterrupt wird, wie der Name bereits sagt, zum Empfangen von Daten verwendet. Hier wird ein kontinuierliches Empfangen von Daten realisiert. Dazu wird programmtechnisch periodisch ein Interrupt angefordert. Der Interrupt veranlasst das Einlesen des empfangenen Bytes. Das empfangene Datenbyte wird meist (je nach Controller) in einen Puffer kopiert. Anschließend wird das neue Datenbyte bitweise empfangen und in das Empfangsschieberegister des UART geschrieben. Hierbei muss darauf geachtet werden, dass das Byte von der CPU schnell genug ausgelesen wird, da es sonst überschrieben wird. Dieser Fehler nennt sich Überlauf und wird durch das Statusregister im UART signalisiert.


Zuletzt geändert: Mittwoch, 18. September 2019, 19:12