Upload
stephan-schnetzler
View
111
Download
3
Tags:
Embed Size (px)
Citation preview
2592009Embedded Systems Seite 1
04EI
164CL
XTAL
C166-CoreC166-Core
Port 5 Port 3
CPU
Dua
l Por
t
RAM
2 KByte
Interrupt Controller
Watchdog
Peripheral Data
External InstrData
InstrData
USART
ASC
BRG
GPT1
16
16
16
1632
PEC
64 K ROM
(C164 CI-8RM)or
OTP(C164CI-8EM)
Interrupt Bus
Data
Data
Port 8
BRG
SSC
Sync Channel(SPI)
PLL-Oscillatorprog Multiplier
05 1 15 225 3 4 5
XB
US
(16-
bit N
ON
MU
X D
ata
Add
ress
es)
T2
T4
T3
13 ext IR
Full-CANInterfaceV20Bactive
RTC
10-BitADC
Tim
er 7
Tim
er 8
Port 1
Tim
er 1
3
1 CompChannel
36 CAPCOMChannels
CAPCOM6 Unit forPWM Generation
8 9 4 16
6
16
Port 4
8-Channels
External Bus816 bit
MUX onlyamp
XBUSControl
CAPCOM 2
8-Channel
C164CI Blockschaltbild
P46 CAN TxD
P45 CANRxD
Port
0
2592009Embedded Systems Seite 2
04EI
On-Chip(EP)ROM
SP
STK OV
STK UV
CPU - Blockschaltbild
CPUCPU
MDL
MDH
Barrel-Shifter
ALU
16-bit
MulDiv-HW
Bit-Mask Gen
Code SegPtr
On-ChipStaticRAM
R15
R0
STK OV
STK UV
4-StagePipeline
32
16
16
Exec Unit
Instr Ptr
Instr Reg
SYSCON
BUSCON 0
BUSCON 1
BUSCON 2
BUSCON 3
BUSCON 4
ADDRSEL 1
ADDRSEL 2
ADDRSEL 3
ADDRSEL 4
Context PtrData Page Pointer
SFR
PSW
General
R15
R0
Purpose
Registers
2592009Embedded Systems Seite 3
04EI
Fetch
Decode
Execute
Write Back
1 Instr 2 Instr 3 Instr 4 Instr
Time
1 Machine Cycle = 100 ns at 20 MHz CPU clock
Vierstufige Befehls-Pipeline
100ns effektive Befehlsausfuumlhrungszeit (20 MHz fCPU) Drei Pre-Fetch-Schritte in Wortbreite (Bus Controller) zur Unterstuumltzung
der Pipeline Optimierte Sprungausfuumlhrung
ndashFuumlr Sprungbefehle (Jump Cond Jump Call Return) wird normaler Weise nur ein zusaumltzlicher Maschinenzyklus benoumltigt um den Befehl an der Zieladresse zu holen
Jump Cache
ndashFuumlr die Ausfuumlhrung von Schleifen ist kein zusaumltzlicher Maschinenzyklus erforderlich
2592009Embedded Systems Seite 4
04EI
Arithmetic Logic Unit
ALU
A B
Z
Cin
op
Cout
flags
Arithmetic Operations
Logic Operations
Shift Rotate
add subinc decneg
and nandor norexor exnornot
sll srlsla srarol ror
sro shiftrotatelr leftrightla logic (unsigned)arithmetic (signed)
2592009Embedded Systems Seite 5
04EI
Barrel Shifter
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
D0
D1
D2
D3
D15
S0 S1 S14
Q0
Q1
Q2
Q3
Q15
2592009Embedded Systems Seite 6
04EI
General Purpose Register (GPR)
16 GPRs bilden eine Registerbankbestehend aus maximal
ndash 8 Word-Registern und
ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte
Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM
angeordnet werden Der Platz der aktiven Registerbank wird durch den
Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere
Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl
2592009Embedded Systems Seite 7
04EI
0F600
R8R9R10R11R12R13R14R15
RH0RH1RH2RH3RH4RH5RH6RH7
RL0RL1RL2RL3RL4RL5RL6RL7
Context pointer
0FDFE
2KBytesinternal RAM
R6
R0R1R2R3R4R5
R7
STKOV
STKUV
R15
R0
0FC00
Stackpointer UnderflowStackpointer
Stackpointer Overflow
STKUV
STKOV
2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
SP
2592009Embedded Systems Seite 8
04EI
Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum
ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages
ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist
Interner Adressraumndash 2 KByte RAM
ndash 64 KBytes FlashOTP ROM (C164CI-8FM)
Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)
ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)
ndash 5 voumlllig unabhaumlngige Konfigurations-Register
ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden
Adressraum
2592009Embedded Systems Seite 9
04EI
Interner und externer Adressplan des C164CI
Bit-adressierbarer Bereich
X-Bus Peripheral
Segment 0 beinhaltet den internen Speicher
Internes RAM
512 BytesSFRrsquos
2kInternes
RAM
ExternerSpeicher
InternesROM
Flash Esup2PROM(kann auf Segm 1 liegen)
512 BytesESFRrsquos
0x000000
0x008000
0x00FE00
0x00FA00
0x00F600
0x00F200
0x0100007 0
32k
05k
Reserviert
Bis zu 4 MBytes
Code Segmente Daten Pages
0
1
2
3
3
2
1
0
7
6
5
4
11
10
9
8
15
14
13
12
InternalROMFLAS
H232k0x010000
0x020000
0x030000
0x040000
Full -CANFull -CAN0x00F000
0x00E800Reserviert
05k
0x000000
2592009Embedded Systems Seite 10
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166
Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen
C166-Bezeichnung Erlaumluterung
memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge
sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie
sbit Deklaration von Bits innerhalb von SFRs
bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein
bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 2
04EI
On-Chip(EP)ROM
SP
STK OV
STK UV
CPU - Blockschaltbild
CPUCPU
MDL
MDH
Barrel-Shifter
ALU
16-bit
MulDiv-HW
Bit-Mask Gen
Code SegPtr
On-ChipStaticRAM
R15
R0
STK OV
STK UV
4-StagePipeline
32
16
16
Exec Unit
Instr Ptr
Instr Reg
SYSCON
BUSCON 0
BUSCON 1
BUSCON 2
BUSCON 3
BUSCON 4
ADDRSEL 1
ADDRSEL 2
ADDRSEL 3
ADDRSEL 4
Context PtrData Page Pointer
SFR
PSW
General
R15
R0
Purpose
Registers
2592009Embedded Systems Seite 3
04EI
Fetch
Decode
Execute
Write Back
1 Instr 2 Instr 3 Instr 4 Instr
Time
1 Machine Cycle = 100 ns at 20 MHz CPU clock
Vierstufige Befehls-Pipeline
100ns effektive Befehlsausfuumlhrungszeit (20 MHz fCPU) Drei Pre-Fetch-Schritte in Wortbreite (Bus Controller) zur Unterstuumltzung
der Pipeline Optimierte Sprungausfuumlhrung
ndashFuumlr Sprungbefehle (Jump Cond Jump Call Return) wird normaler Weise nur ein zusaumltzlicher Maschinenzyklus benoumltigt um den Befehl an der Zieladresse zu holen
Jump Cache
ndashFuumlr die Ausfuumlhrung von Schleifen ist kein zusaumltzlicher Maschinenzyklus erforderlich
2592009Embedded Systems Seite 4
04EI
Arithmetic Logic Unit
ALU
A B
Z
Cin
op
Cout
flags
Arithmetic Operations
Logic Operations
Shift Rotate
add subinc decneg
and nandor norexor exnornot
sll srlsla srarol ror
sro shiftrotatelr leftrightla logic (unsigned)arithmetic (signed)
2592009Embedded Systems Seite 5
04EI
Barrel Shifter
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
D0
D1
D2
D3
D15
S0 S1 S14
Q0
Q1
Q2
Q3
Q15
2592009Embedded Systems Seite 6
04EI
General Purpose Register (GPR)
16 GPRs bilden eine Registerbankbestehend aus maximal
ndash 8 Word-Registern und
ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte
Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM
angeordnet werden Der Platz der aktiven Registerbank wird durch den
Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere
Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl
2592009Embedded Systems Seite 7
04EI
0F600
R8R9R10R11R12R13R14R15
RH0RH1RH2RH3RH4RH5RH6RH7
RL0RL1RL2RL3RL4RL5RL6RL7
Context pointer
0FDFE
2KBytesinternal RAM
R6
R0R1R2R3R4R5
R7
STKOV
STKUV
R15
R0
0FC00
Stackpointer UnderflowStackpointer
Stackpointer Overflow
STKUV
STKOV
2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
SP
2592009Embedded Systems Seite 8
04EI
Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum
ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages
ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist
Interner Adressraumndash 2 KByte RAM
ndash 64 KBytes FlashOTP ROM (C164CI-8FM)
Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)
ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)
ndash 5 voumlllig unabhaumlngige Konfigurations-Register
ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden
Adressraum
2592009Embedded Systems Seite 9
04EI
Interner und externer Adressplan des C164CI
Bit-adressierbarer Bereich
X-Bus Peripheral
Segment 0 beinhaltet den internen Speicher
Internes RAM
512 BytesSFRrsquos
2kInternes
RAM
ExternerSpeicher
InternesROM
Flash Esup2PROM(kann auf Segm 1 liegen)
512 BytesESFRrsquos
0x000000
0x008000
0x00FE00
0x00FA00
0x00F600
0x00F200
0x0100007 0
32k
05k
Reserviert
Bis zu 4 MBytes
Code Segmente Daten Pages
0
1
2
3
3
2
1
0
7
6
5
4
11
10
9
8
15
14
13
12
InternalROMFLAS
H232k0x010000
0x020000
0x030000
0x040000
Full -CANFull -CAN0x00F000
0x00E800Reserviert
05k
0x000000
2592009Embedded Systems Seite 10
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166
Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen
C166-Bezeichnung Erlaumluterung
memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge
sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie
sbit Deklaration von Bits innerhalb von SFRs
bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein
bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 3
04EI
Fetch
Decode
Execute
Write Back
1 Instr 2 Instr 3 Instr 4 Instr
Time
1 Machine Cycle = 100 ns at 20 MHz CPU clock
Vierstufige Befehls-Pipeline
100ns effektive Befehlsausfuumlhrungszeit (20 MHz fCPU) Drei Pre-Fetch-Schritte in Wortbreite (Bus Controller) zur Unterstuumltzung
der Pipeline Optimierte Sprungausfuumlhrung
ndashFuumlr Sprungbefehle (Jump Cond Jump Call Return) wird normaler Weise nur ein zusaumltzlicher Maschinenzyklus benoumltigt um den Befehl an der Zieladresse zu holen
Jump Cache
ndashFuumlr die Ausfuumlhrung von Schleifen ist kein zusaumltzlicher Maschinenzyklus erforderlich
2592009Embedded Systems Seite 4
04EI
Arithmetic Logic Unit
ALU
A B
Z
Cin
op
Cout
flags
Arithmetic Operations
Logic Operations
Shift Rotate
add subinc decneg
and nandor norexor exnornot
sll srlsla srarol ror
sro shiftrotatelr leftrightla logic (unsigned)arithmetic (signed)
2592009Embedded Systems Seite 5
04EI
Barrel Shifter
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
D0
D1
D2
D3
D15
S0 S1 S14
Q0
Q1
Q2
Q3
Q15
2592009Embedded Systems Seite 6
04EI
General Purpose Register (GPR)
16 GPRs bilden eine Registerbankbestehend aus maximal
ndash 8 Word-Registern und
ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte
Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM
angeordnet werden Der Platz der aktiven Registerbank wird durch den
Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere
Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl
2592009Embedded Systems Seite 7
04EI
0F600
R8R9R10R11R12R13R14R15
RH0RH1RH2RH3RH4RH5RH6RH7
RL0RL1RL2RL3RL4RL5RL6RL7
Context pointer
0FDFE
2KBytesinternal RAM
R6
R0R1R2R3R4R5
R7
STKOV
STKUV
R15
R0
0FC00
Stackpointer UnderflowStackpointer
Stackpointer Overflow
STKUV
STKOV
2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
SP
2592009Embedded Systems Seite 8
04EI
Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum
ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages
ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist
Interner Adressraumndash 2 KByte RAM
ndash 64 KBytes FlashOTP ROM (C164CI-8FM)
Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)
ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)
ndash 5 voumlllig unabhaumlngige Konfigurations-Register
ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden
Adressraum
2592009Embedded Systems Seite 9
04EI
Interner und externer Adressplan des C164CI
Bit-adressierbarer Bereich
X-Bus Peripheral
Segment 0 beinhaltet den internen Speicher
Internes RAM
512 BytesSFRrsquos
2kInternes
RAM
ExternerSpeicher
InternesROM
Flash Esup2PROM(kann auf Segm 1 liegen)
512 BytesESFRrsquos
0x000000
0x008000
0x00FE00
0x00FA00
0x00F600
0x00F200
0x0100007 0
32k
05k
Reserviert
Bis zu 4 MBytes
Code Segmente Daten Pages
0
1
2
3
3
2
1
0
7
6
5
4
11
10
9
8
15
14
13
12
InternalROMFLAS
H232k0x010000
0x020000
0x030000
0x040000
Full -CANFull -CAN0x00F000
0x00E800Reserviert
05k
0x000000
2592009Embedded Systems Seite 10
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166
Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen
C166-Bezeichnung Erlaumluterung
memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge
sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie
sbit Deklaration von Bits innerhalb von SFRs
bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein
bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 4
04EI
Arithmetic Logic Unit
ALU
A B
Z
Cin
op
Cout
flags
Arithmetic Operations
Logic Operations
Shift Rotate
add subinc decneg
and nandor norexor exnornot
sll srlsla srarol ror
sro shiftrotatelr leftrightla logic (unsigned)arithmetic (signed)
2592009Embedded Systems Seite 5
04EI
Barrel Shifter
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
D0
D1
D2
D3
D15
S0 S1 S14
Q0
Q1
Q2
Q3
Q15
2592009Embedded Systems Seite 6
04EI
General Purpose Register (GPR)
16 GPRs bilden eine Registerbankbestehend aus maximal
ndash 8 Word-Registern und
ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte
Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM
angeordnet werden Der Platz der aktiven Registerbank wird durch den
Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere
Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl
2592009Embedded Systems Seite 7
04EI
0F600
R8R9R10R11R12R13R14R15
RH0RH1RH2RH3RH4RH5RH6RH7
RL0RL1RL2RL3RL4RL5RL6RL7
Context pointer
0FDFE
2KBytesinternal RAM
R6
R0R1R2R3R4R5
R7
STKOV
STKUV
R15
R0
0FC00
Stackpointer UnderflowStackpointer
Stackpointer Overflow
STKUV
STKOV
2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
SP
2592009Embedded Systems Seite 8
04EI
Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum
ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages
ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist
Interner Adressraumndash 2 KByte RAM
ndash 64 KBytes FlashOTP ROM (C164CI-8FM)
Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)
ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)
ndash 5 voumlllig unabhaumlngige Konfigurations-Register
ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden
Adressraum
2592009Embedded Systems Seite 9
04EI
Interner und externer Adressplan des C164CI
Bit-adressierbarer Bereich
X-Bus Peripheral
Segment 0 beinhaltet den internen Speicher
Internes RAM
512 BytesSFRrsquos
2kInternes
RAM
ExternerSpeicher
InternesROM
Flash Esup2PROM(kann auf Segm 1 liegen)
512 BytesESFRrsquos
0x000000
0x008000
0x00FE00
0x00FA00
0x00F600
0x00F200
0x0100007 0
32k
05k
Reserviert
Bis zu 4 MBytes
Code Segmente Daten Pages
0
1
2
3
3
2
1
0
7
6
5
4
11
10
9
8
15
14
13
12
InternalROMFLAS
H232k0x010000
0x020000
0x030000
0x040000
Full -CANFull -CAN0x00F000
0x00E800Reserviert
05k
0x000000
2592009Embedded Systems Seite 10
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166
Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen
C166-Bezeichnung Erlaumluterung
memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge
sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie
sbit Deklaration von Bits innerhalb von SFRs
bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein
bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 5
04EI
Barrel Shifter
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
D0
D1
D2
D3
D15
S0 S1 S14
Q0
Q1
Q2
Q3
Q15
2592009Embedded Systems Seite 6
04EI
General Purpose Register (GPR)
16 GPRs bilden eine Registerbankbestehend aus maximal
ndash 8 Word-Registern und
ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte
Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM
angeordnet werden Der Platz der aktiven Registerbank wird durch den
Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere
Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl
2592009Embedded Systems Seite 7
04EI
0F600
R8R9R10R11R12R13R14R15
RH0RH1RH2RH3RH4RH5RH6RH7
RL0RL1RL2RL3RL4RL5RL6RL7
Context pointer
0FDFE
2KBytesinternal RAM
R6
R0R1R2R3R4R5
R7
STKOV
STKUV
R15
R0
0FC00
Stackpointer UnderflowStackpointer
Stackpointer Overflow
STKUV
STKOV
2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
SP
2592009Embedded Systems Seite 8
04EI
Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum
ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages
ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist
Interner Adressraumndash 2 KByte RAM
ndash 64 KBytes FlashOTP ROM (C164CI-8FM)
Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)
ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)
ndash 5 voumlllig unabhaumlngige Konfigurations-Register
ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden
Adressraum
2592009Embedded Systems Seite 9
04EI
Interner und externer Adressplan des C164CI
Bit-adressierbarer Bereich
X-Bus Peripheral
Segment 0 beinhaltet den internen Speicher
Internes RAM
512 BytesSFRrsquos
2kInternes
RAM
ExternerSpeicher
InternesROM
Flash Esup2PROM(kann auf Segm 1 liegen)
512 BytesESFRrsquos
0x000000
0x008000
0x00FE00
0x00FA00
0x00F600
0x00F200
0x0100007 0
32k
05k
Reserviert
Bis zu 4 MBytes
Code Segmente Daten Pages
0
1
2
3
3
2
1
0
7
6
5
4
11
10
9
8
15
14
13
12
InternalROMFLAS
H232k0x010000
0x020000
0x030000
0x040000
Full -CANFull -CAN0x00F000
0x00E800Reserviert
05k
0x000000
2592009Embedded Systems Seite 10
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166
Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen
C166-Bezeichnung Erlaumluterung
memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge
sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie
sbit Deklaration von Bits innerhalb von SFRs
bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein
bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 6
04EI
General Purpose Register (GPR)
16 GPRs bilden eine Registerbankbestehend aus maximal
ndash 8 Word-Registern und
ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte
Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM
angeordnet werden Der Platz der aktiven Registerbank wird durch den
Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere
Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl
2592009Embedded Systems Seite 7
04EI
0F600
R8R9R10R11R12R13R14R15
RH0RH1RH2RH3RH4RH5RH6RH7
RL0RL1RL2RL3RL4RL5RL6RL7
Context pointer
0FDFE
2KBytesinternal RAM
R6
R0R1R2R3R4R5
R7
STKOV
STKUV
R15
R0
0FC00
Stackpointer UnderflowStackpointer
Stackpointer Overflow
STKUV
STKOV
2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
SP
2592009Embedded Systems Seite 8
04EI
Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum
ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages
ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist
Interner Adressraumndash 2 KByte RAM
ndash 64 KBytes FlashOTP ROM (C164CI-8FM)
Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)
ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)
ndash 5 voumlllig unabhaumlngige Konfigurations-Register
ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden
Adressraum
2592009Embedded Systems Seite 9
04EI
Interner und externer Adressplan des C164CI
Bit-adressierbarer Bereich
X-Bus Peripheral
Segment 0 beinhaltet den internen Speicher
Internes RAM
512 BytesSFRrsquos
2kInternes
RAM
ExternerSpeicher
InternesROM
Flash Esup2PROM(kann auf Segm 1 liegen)
512 BytesESFRrsquos
0x000000
0x008000
0x00FE00
0x00FA00
0x00F600
0x00F200
0x0100007 0
32k
05k
Reserviert
Bis zu 4 MBytes
Code Segmente Daten Pages
0
1
2
3
3
2
1
0
7
6
5
4
11
10
9
8
15
14
13
12
InternalROMFLAS
H232k0x010000
0x020000
0x030000
0x040000
Full -CANFull -CAN0x00F000
0x00E800Reserviert
05k
0x000000
2592009Embedded Systems Seite 10
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166
Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen
C166-Bezeichnung Erlaumluterung
memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge
sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie
sbit Deklaration von Bits innerhalb von SFRs
bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein
bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 7
04EI
0F600
R8R9R10R11R12R13R14R15
RH0RH1RH2RH3RH4RH5RH6RH7
RL0RL1RL2RL3RL4RL5RL6RL7
Context pointer
0FDFE
2KBytesinternal RAM
R6
R0R1R2R3R4R5
R7
STKOV
STKUV
R15
R0
0FC00
Stackpointer UnderflowStackpointer
Stackpointer Overflow
STKUV
STKOV
2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
SP
2592009Embedded Systems Seite 8
04EI
Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum
ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages
ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist
Interner Adressraumndash 2 KByte RAM
ndash 64 KBytes FlashOTP ROM (C164CI-8FM)
Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)
ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)
ndash 5 voumlllig unabhaumlngige Konfigurations-Register
ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden
Adressraum
2592009Embedded Systems Seite 9
04EI
Interner und externer Adressplan des C164CI
Bit-adressierbarer Bereich
X-Bus Peripheral
Segment 0 beinhaltet den internen Speicher
Internes RAM
512 BytesSFRrsquos
2kInternes
RAM
ExternerSpeicher
InternesROM
Flash Esup2PROM(kann auf Segm 1 liegen)
512 BytesESFRrsquos
0x000000
0x008000
0x00FE00
0x00FA00
0x00F600
0x00F200
0x0100007 0
32k
05k
Reserviert
Bis zu 4 MBytes
Code Segmente Daten Pages
0
1
2
3
3
2
1
0
7
6
5
4
11
10
9
8
15
14
13
12
InternalROMFLAS
H232k0x010000
0x020000
0x030000
0x040000
Full -CANFull -CAN0x00F000
0x00E800Reserviert
05k
0x000000
2592009Embedded Systems Seite 10
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166
Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen
C166-Bezeichnung Erlaumluterung
memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge
sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie
sbit Deklaration von Bits innerhalb von SFRs
bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein
bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 8
04EI
Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum
ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages
ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist
Interner Adressraumndash 2 KByte RAM
ndash 64 KBytes FlashOTP ROM (C164CI-8FM)
Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)
ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)
ndash 5 voumlllig unabhaumlngige Konfigurations-Register
ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden
Adressraum
2592009Embedded Systems Seite 9
04EI
Interner und externer Adressplan des C164CI
Bit-adressierbarer Bereich
X-Bus Peripheral
Segment 0 beinhaltet den internen Speicher
Internes RAM
512 BytesSFRrsquos
2kInternes
RAM
ExternerSpeicher
InternesROM
Flash Esup2PROM(kann auf Segm 1 liegen)
512 BytesESFRrsquos
0x000000
0x008000
0x00FE00
0x00FA00
0x00F600
0x00F200
0x0100007 0
32k
05k
Reserviert
Bis zu 4 MBytes
Code Segmente Daten Pages
0
1
2
3
3
2
1
0
7
6
5
4
11
10
9
8
15
14
13
12
InternalROMFLAS
H232k0x010000
0x020000
0x030000
0x040000
Full -CANFull -CAN0x00F000
0x00E800Reserviert
05k
0x000000
2592009Embedded Systems Seite 10
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166
Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen
C166-Bezeichnung Erlaumluterung
memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge
sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie
sbit Deklaration von Bits innerhalb von SFRs
bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein
bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 9
04EI
Interner und externer Adressplan des C164CI
Bit-adressierbarer Bereich
X-Bus Peripheral
Segment 0 beinhaltet den internen Speicher
Internes RAM
512 BytesSFRrsquos
2kInternes
RAM
ExternerSpeicher
InternesROM
Flash Esup2PROM(kann auf Segm 1 liegen)
512 BytesESFRrsquos
0x000000
0x008000
0x00FE00
0x00FA00
0x00F600
0x00F200
0x0100007 0
32k
05k
Reserviert
Bis zu 4 MBytes
Code Segmente Daten Pages
0
1
2
3
3
2
1
0
7
6
5
4
11
10
9
8
15
14
13
12
InternalROMFLAS
H232k0x010000
0x020000
0x030000
0x040000
Full -CANFull -CAN0x00F000
0x00E800Reserviert
05k
0x000000
2592009Embedded Systems Seite 10
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166
Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen
C166-Bezeichnung Erlaumluterung
memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge
sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie
sbit Deklaration von Bits innerhalb von SFRs
bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein
bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 10
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166
Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen
C166-Bezeichnung Erlaumluterung
memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge
sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie
sbit Deklaration von Bits innerhalb von SFRs
bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein
bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 11
04EI
Die Programmiersprache C fuumlr den Mikrocontroller C164
C166-Bezeichnung Erlaumluterung
registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird
interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors
register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren
RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert
Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 12
04EI
Speicherarten (Memory Types)
Auswahl Adressraum
near 16-Bit Adressen bis zu 64 kBytes
idata On-chip RAM (schnellster Zugriff)
bdata Bit-adressierbares On-chip-RAM
sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos
far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte
huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte
xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte
Die Programmiersprache C fuumlr den Mikrocontroller C164
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 13
04EI
Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird
Dies erfolgt mittels der Preprozessordirektive pragma speichermodell
Die Programmiersprache C fuumlr den Mikrocontroller C164
Speichermodell Variable Funktionen Segmentierung Codeumfang
TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 14
04EI
Datentypen Speicherumfang und Wertebereich
Datentyp Speicherumfang Wertebereich
bit 1 Bit 0 oder 1
signed char 1 Byte -128 bis +127
unsigned char 1 Byte 0 bis 255
signed int 2 Bytes -32768 to + 32767
unsigned int 2 Bytes 0 bis 65535
signed long 4 Bytes -2147483648 bis +2147483642
unsigned long 4 Bytes 0 bis 4294967295
float 4 Bytes 1176E-38 bis 340E+38
double 8 Bytes 17E-308 bis 17E+308
pointer 24 Bytes Adresse des Objects
Die Programmiersprache C fuumlr den Mikrocontroller C164
Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)
sbit 1 Bit 0 or 1
sfr 2 Bytes 0 to 65535
spezielle Datentypen in C166 die in ANSI-C nicht definiert sind
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 15
04EI
Integrierte Entwicklungsumgebung
C-Library
ANSI CCompiler
Macro-Assembler
ndash Debuggerndash Simulator
Emulator amp
PROM Programmer
RTX TinyReal TimeOperatingSystem
ndash microVision2Editor Project Management
Library
Manager
Linker Locater
CPU ampSimulator
Monitor
Target DebuggingPeripheral
Ab ins Praktikum
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 16
04EI
Code-Adressierung mittels Segmentierungim 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung
22-Bit physikalische Code-Adresse (C164)
6-Bit Segment-nummer
16-Bit
0131416-Bit Instr Pointer
15 780131415Code Seg Pointer7 6 58
Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert
Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 17
04EI
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung uumlber Data Page Pointer (DPP)
14-bit
013 16-bit Adresse1415
Auswahl einesData Page Pointer
10-bitSeiten-nummer
DPP3DPP2DPP1
DPP0
Physikalische 24-Bit Daten-Adresse
(bis zu 22 aussen verfuumlgbar beim C164)
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 18
04EI
External Bus Controller
Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich
Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit
Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 19
04EI
Gemultiplexter Adress- und Daten-BUS
Address
Address
Address
Data
Data
A16A21
ALE
CS
A0A15D0D15 (7)
RD
A015D015 (7)
WR
Verlaumlngern des Adress-Setups
Speicher-zugriffszeit
Tri-State - Zeit
WR-Delay
RD-Delay
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 20
04EI
Integrierte Chip Select - Signale
Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)
A21A20A19
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000
Extra Memory-MappedChip-Selects
P39P38P36
CS3CS2CS1
CBA
G
CS11CS10
CS9CS8CS7CS6CS5CS4
74ACT138
C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000
Extra IO-MappedChip-Selects
Alle mit gleichem Bus-Mode Waitstates usw
CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3
Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 21
04EI
Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation
C164[20 MHz] W
E
WE
O
E
OE
O
E
OE
CS
CS
C
E
CE
D
0-7
D0
-7D
0-7
D0
-7A
0-1
6
A0
-16
A0
-18
A0
-18
MT5LC128K8D4 MT5LC128K8D4
AM27C040 AM27C040
RAMRAM
ROM ROM
MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns
ADDRSEL1 = 0x0406BUSCON1 = 0x04CF
AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns
BUSCON0 = 0x04CEA1-15
15-Bit D-Latch
EN
WRLWRH
RD
D0-15
A16-19
CS1CS0
ALE
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 22
04EI
BH
E
OE
O
E
CS
C
E
D0
-15
D0
-15
A0
-15
A0
-16
IDT71016
M27C202
RAM
ROM
IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns
ADDRSEL1 = 0x0405BUSCON1 = 0x04CF
M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns
BUSCON0 = 0x04CE
BL
E
WE
C164[20 MHz]
A1-15
16-Bit D-Latch
EN
WR
BHERD
D0-15
A16-17
CS1CS0
ALE
A0
Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 23
04EI
Sich uumlberdeckende Adressbereiche
XBCON0
BUSCON2 BUSCON4
BUSCON1 BUSCON3
BUSCON0
0x000000
0xFF
FF
FF
Inaktiver Bereich
Aktiver BereichHoumlchste Prioritaumlt
Uumlberlappen nicht zulaumlssig
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 24
04EI
Interrupt System
Interrupt Controller
ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)
ndash Geringer Overhead fuumlr ISRrsquos
ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen
ndash Hardware Traps detektieren Laufzeitfehler
ndash Software Traps
Peripheral Events Controller (PEC)
ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos
ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff
ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 25
04EI
3 2 1 0151413121110
9876543210
Group
L e
v e
l
1
64
Level 15 group 1group 0
group 2group 3
Level 14group 1
group 0
group 2group 3
PEC 0
PEC 6 PEC 5PEC 4
PEC 3PEC 2 PEC 1
PEC 7
Level 1-13group 1
group 0
group 2group 3
(Level 0) group 1group 0
group 2group 3
Interrupts und PEC - Priorisierung
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 26
04EI
Interrupt Processing
INTR Flag ist gesetzt
Periph Interrupt
Externer Interrupt
External Interrupt
Prioritaumlts-Check
Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt
der CPU
16 Prioritaumlts-Stufen
fallshoumlhere
Prioritaumlt
Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
PECService
Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich
13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts
4 Gruppen
Gruppen Check
LoumlscheINTR Flag
Periph Interrupt
Periph Interrupt
Periph Interrupt
SFR DaveVektoren
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR
2592009Embedded Systems Seite 27
04EI
Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt
Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0
Interrupt Service PEC Service
8 PECKanaumlle
Data Counter
SRC Pointer
DEST Pointer
Contr Reg
Memory Segment 0
0xFFFF
0x0000
Byte bzwWordTransfer
INTR Service
RettenPSW CSP IP
Neue CPU-Prio im PSW
CSP und IP ausPeripherie-Vector oder Trap-Nummer
Interrupt falls Data Counter = 0
Prioritaumlts- amp Gruppen-
Check
Peripheral Events Controller (PEC)
Peripheral Events Contoller
SFR