popis obsluhy přerušení

Download Report

Transcript popis obsluhy přerušení

PZ
Procesor Renesas H8S/2633F
Procesor Renesas H8S/2633F
1
PZ
Procesor Renesas H8S/2633F
Řada procesorů Renesas
2
PZ
Procesor Renesas H8S/2633F
Řada procesorů Renesas H8S
3
PZ
Procesor Renesas H8S/2633F
Blokové schéma procesoru H8S/2633F
4
PZ
Procesor Renesas H8S/2633F
Funkční bloky H8S/2633F
• Interní paměti
– SRAM 16 kB
– Flash 128 kB
• Periferie
–
–
–
–
–
–
–
–
–
–
max. 10  paralelní porty,
8 vstupů pro vnější přerušení
2  DMA řadič (DMAC)
1  přenosová jednotka (DTC)
5  sériové rozhraní (SCI)
6  16bitová časovací a pulsní
jednotka (TPU)
2  8bitový časovač (TMR)
generátor PWM a PPG
16kanálový 10bitový AD převodník
2 kanálový DA převodník
5
PZ
Procesor Renesas H8S/2633F
Mapa paměti
Blok 0
Interní Flash
Blok 1
RAM EVB
Blok 2
Mem_Com_2
Blok 3
Disp_Kbd_1
0x000 000
Blok 4
Blok 5
Blok 6
Blok 7
Interní RAM
0xFFF FFF
6
PZ
Procesor Renesas H8S/2633F
EVB2633F
•
•
•
•
•
Procesor H8S/2633F,
Vnější SRAM 256 kB,
Programátor vnitřní Flash (UFPB),
Rozhraní SCI0 a SCI2,
Monitor pro ladění programů ve Flash.
7
PZ
Procesor Renesas H8S/2633F
Rozšiřující moduly – Mem_Com_2
A0 - A16
D8 - D15
Flash
29C010A
CS2
ROZHRANÍ EVB2633F
• Externí Flash, EEPROM, RTC
SRAM,
• Externí sériová EEPROM,
• CPLD XC9572,
• Rozhraní SCI1 a SCI4.
EEPROM
28C010
RTC
M48T12
GAL
16V8
dekodér
adres
IO porty, SCI3
I2C SRAM
PCF8570
I2C SRAM
PCF8570
SCI1
SPI
EEPROM
93C66
RS232
X11
LED
RS232
SCI4
IO porty
CPLD
XC9536
(XC9572)
RS485
TTL
X14
Rozhraní JTAG
X12
X13
8
PZ
Procesor Renesas H8S/2633F
Rozšiřující moduly – Disp_Kbd_1
• CPLD XC95108,
• Rozhraní maticové klávesnice a LCD.
LED
H1 H2
ROZHRANÍ EVB2 633F
8+4
A0 - A9
D15 - D8
LCD displej
10
8
CPLD
XC9572
(XC95108)
4
4
H3
klávesnice
8
CS3, HWR, RD
H4
8+4
IO porty
H5
Rozhraní JTAG
9
PZ
Procesor Renesas H8S/2633F
Rozšiřující moduly – Disp_Kbd_2
LED
H1
8+4
LCD displej
ROZHRANÍ EVB2633F
• CPLD XC95108.
• Rozhraní maticové a PC
klávesnice.
• Rozhraní grafického LCD
s dotykovou obrazovkou.
• Rozhraní RS232 (SCI1).
• Flash 128 kB.
A0 - A20
21
6
D15 - D8 8
CPLD
XC9572
(XC95108)
CS2, CS3,
HWR, RD
ADS
7845
4
H3
2
4
dotyková
obrazovka
klávesnice PC
H4
8
IO porty
H5
Rozhraní JTAG
Flash
128 kB
H7
RxD1, TxD1
MAX232
SCI1
10
Procesor Renesas H8S/2633F
Rozšiřující moduly – Pwr_2
• CPLD XC9536,
• Výkonové budiče,
• Ochranné obvody AD
převodníků,
• Vstupy pro fototranzistory,
• Rozhraní SCI1.
4
4
4
2
IO
porty
2
spínače
0.6A
CPLD
XC9536
(XC9572)
12
ROZHRANÍ EVB2633 F
PZ
2
H
můstek
2
2
H
můstek
X9
Rozhraní JTAG
AN4 - AN7
4
měření
proudu
můstků
2
2
2
P6
X3
P2
P3
P4
P5
Uref
zdroj
Uref
P1
+12V
AN0 - AN3
4
4
AN8 - AN9
2
2
SCI1
X6
P7
3
H
můstek
H
můstek
X5
RS232
X8
X7
X4
11
PZ
Procesor Renesas H8S/2633F
Ladění programů s EVB2633F
EVB2633F
SRAM
Aplikační program
SCI1
Rozšiřující
modul
PC
COM
Flash
MON6
SCI0
Teraterm
HEW
(C, ASM)
HDI
debugger
COM
12
PZ
Procesor Renesas H8S/2633F
Určení adresy obslužného programu (H8S)
• Na začátku paměti je tabulka s adresami obslužných programů.
• Každé přerušení má pevně přidělenou určitou položku v tabulce.
Přerušovací
vektory
Obslužný
program
Adresa
obslužného
programu
Obslužný
program
000 000
Obslužný
program
Číslo
přerušení
13
PZ
Procesor Renesas H8S/2633F
Obsluha přerušení (1)
• Každé přerušení má přiřazené číslo, které odpovídá pozici
přerušovacího vektoru v paměti.
– adresa = číslo přerušení × 4
• Přerušení se musí povolit v CCR nastavením bitu 7 na hodnotu 0.
– Lze použít standardní proceduru set_imask_ccr .
• Přerušení se musí povolit v registrech příslušné periferie.
set_imask_ccr(0);
/* povoleni preruseni */
14
PZ
Procesor Renesas H8S/2633F
Obsluha přerušení (2)
• Standardně definovaná obslužná procedura přerušení:
– překladač + linker vloží její adresu na správnou pozici v paměti.
• Například pro přerušení č. 0x13 je adresa 0x4C.
• Pro adresy přerušení lze použít konstanty, definované v
ioh82633.h
interrupt [0x4C] void jmeno (void) {
...
}
15
PZ
Procesor Renesas H8S/2633F
Tabulka přerušení H8S
16
PZ
Procesor Renesas H8S/2633F
Standardní obsluha přerušení
00 00 00
Vektory přerušení
INT n
Obslužné
procedury
Hardwarově vyvolaná
obsluha přerušení
Aplikační
program
17
PZ
Procesor Renesas H8S/2633F
Přerušení a monitor HDI Mon (1)
• Přerušovací vektory jsou ve
Flash spolu s HDI monitorem 
nelze je modifikovat.
00 00 00
Monitor
– Vektory jsou pevně nastaveny
na adresu 0x200000 + adresa
vektoru.
• Překladač ukládá přerušovací
vektory od adresy 0x200000.
• Standardní procedura
copy_vects vloží před každý
vektor hodnotu 0x5A (kód
instrukce JMP).
Vektory přerušení
pevně nastavené v monitoru
Hardwarově vyvolaná
obsluha přerušení
Interní Flash
20 00 00
Skoky do obslužných procedur
vložené překladačem
Programově provedený
skok do obslužného
programu
Obslužné
procedury
Aplikační
program
Externí SRAM
18
PZ
Procesor Renesas H8S/2633F
Přerušení a monitor HDI Mon (2)
Příklad: Obsluha IRQ0
• IRQ0 má vektor na adrese 0x40.
• Obslužný program leží na adrese
0x200654 (příklad).
00 00 00
00 00 40
00 20 00 40
Monitor
Interní Flash
20 00 00
20 00 40
5A 20 06 54
JMP 200654
5A 20 06 54
Doplněno procedurou
copy_vect()
Vloženo překladačem
a linkerem
20 06 54
Obslužný
program
Aplikační
program
Externí SRAM
19
PZ
Procesor Renesas H8S/2633F
Příklad: obsluha IRQ0
void main(void) {
copy vects();
/* vlozeni JMP pred vektory */
set_imask_ccr(0); /* povoleni preruseni */
/* nastaveni prerusovaciho systemu pro vnejsi preruseni */
...
}
/* ------------------------------------------------- */
interrupt [0x40] void IRQ0_service (void) {
...
}
20