Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal...

27
Texas Instruments Incorporated Modul Modul 6: 6: Prekidni Prekidni sistem sistem F2833x F2833x Digital Signal Controller TMS320F2833x 6 6 - 1 Texas Instruments Incorporated

Transcript of Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal...

Page 1: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Texas Instruments Incorporated

ModulModul 6: 6: PrekidniPrekidni sistemsistem F2833xF2833x

Digital Signal ControllerTMS320F2833x

6 6 -- 11

Texas Instruments Incorporated

Page 2: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

F2833x F2833x PrekidnePrekidne linijelinije CPU CPU jezgrajezgra

F2833xF2833x

uu 2 2 nemaskirajunemaskirajućaćaprekida prekida (RS(RS ii“selectable” NMI)“selectable” NMI)14 14 maskirajućih maskirajućih

INT1INT1INT2INT2INT3INT3INT4INT4INT5INT5INT6INT6

RSRSNMINMI

6 6 -- 22

F2833xF2833xCORECORE uu 14 14 maskirajućih maskirajućih

prekidaprekida (INT1 (INT1 –– INT14)INT14)INT6INT6INT7INT7INT8INT8INT9INT9

INT10INT10INT11INT11INT12INT12INT13INT13INT14INT14

Page 3: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

F2833x F2833x Izvor rIzvor reseteset signalasignala

Watchdog TimerWatchdog TimerRSRS

F2833x CoreF2833x Core

6 6 -- 33

RS pin activeRS pin active

To RS pinTo RS pin

RSRS

Page 4: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Reset Reset –– ““BootloaderBootloader””

ResetResetOBJMODE = 0 AMODE = 0OBJMODE = 0 AMODE = 0

ENPIE = 0 INTM = 1ENPIE = 0 INTM = 1

Reset vector fetched Reset vector fetched

Bootloader setsBootloader setsOBJMODE = 1OBJMODE = 1

AMODE = 0AMODE = 0

6 6 -- 44

Boot determined by Boot determined by state of GPIO pinsstate of GPIO pins

Reset vector fetched Reset vector fetched from boot ROMfrom boot ROM

0x3F FFC00x3F FFC0

ExecutionExecution BootloadingBootloadingEntry PointEntry Point RoutinesRoutines

FLASH SCIFLASH SCI--A / SPIA / SPI--AAM0 SARAMM0 SARAM I2CI2C

OTPOTP eCANeCAN--AAXINTFXINTF McBSPMcBSP--AA

GPIO / XINTFGPIO / XINTF

Page 5: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

OpcijeOpcije BootloaderBootloader --aa

1 1 1 1 jump to 1 1 1 1 jump to FLASHFLASH address 0x33 FFF6 address 0x33 FFF6 1 1 1 0 bootload code to on1 1 1 0 bootload code to on--chip memory via chip memory via SCISCI--AA1 1 0 1 bootload external EEPROM to on1 1 0 1 bootload external EEPROM to on--chip memory via chip memory via SPISPI--AA1 1 0 0 bootload external EEPROM to on1 1 0 0 bootload external EEPROM to on--chip memory via chip memory via I2CI2C1 0 1 1 Call CAN Boot to load from 1 0 1 1 Call CAN Boot to load from eCANeCAN--AA mailbox 1mailbox 11 0 1 0 bootload code to on1 0 1 0 bootload code to on--chip memory via chip memory via McBSPMcBSP--AA

87 /87 /XA15XA15

86 /86 /XA14XA14

85 /85 /XA13XA13

84 /84 /XA12XA12

GPIO pinsGPIO pins

6 6 -- 55

1 0 0 1 jump to 1 0 0 1 jump to XINTFXINTF Zone 6 address 0x10 0000 for 16Zone 6 address 0x10 0000 for 16--bit databit data1 0 0 0 jump to 1 0 0 0 jump to XINTFXINTF Zone 6 address 0x10 0000 for 32Zone 6 address 0x10 0000 for 32--bit databit data0 1 1 1 jump to 0 1 1 1 jump to OTPOTP address 0x38 0400 address 0x38 0400 0 1 1 0 bootload code to on0 1 1 0 bootload code to on--chip memory via chip memory via GPIO port AGPIO port A (parallel)(parallel)0 1 0 1 bootload code to on0 1 0 1 bootload code to on--chip memory via chip memory via XINTFXINTF (parallel)(parallel)0 1 0 0 jump to 0 1 0 0 jump to M0 SARAMM0 SARAM address 0x00 0000 address 0x00 0000 0 0 1 1 branch to check boot mode0 0 1 0 branch to Flash without ADC calibration (TI debug only)0 0 0 1 branch to M0 SARAM without ADC calibration (TI debug only)0 0 0 0 branch to SCI-A without ADC calibration (TI debug only)

Page 6: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

TokTok resetovanjaresetovanja

M0 SARAM (1Kw)M0 SARAM (1Kw)

FLASH (256Kw)FLASH (256Kw)

OTP (1Kw)OTP (1Kw)

0x33 FFF60x33 FFF6

0x38 04000x38 0400

0x30 00000x30 0000

0x00 00000x00 0000

XINTF Zone 6 XINTF Zone 6 (x16 / x32) (x16 / x32) 0x10 00000x10 0000

0x00 00000x00 0000

6 6 -- 66

0x3F E0000x3F E000

0x3F FFC00x3F FFC0

Boot ROM (8Kw)Boot ROM (8Kw)

BROM vector (64w)BROM vector (64w)0x3F F9CE0x3F F9CE

Boot CodeBoot Code

••••

••••

RESETRESET

Execution Entry Execution Entry Point DeterminedPoint Determined

By GPIO PinsBy GPIO Pins

BootloadingBootloadingRoutines Routines

(SCI(SCI--A, SPIA, SPI--A, I2C, A, I2C, eCANeCAN--A, McBSPA, McBSP--A A

GPIO, XINTF)GPIO, XINTF)

0x3F F9CE0x3F F9CE

Page 7: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

InicijalizacijaInicijalizacija registararegistara u u reseturesetu

Register bits defined by resetRegister bits defined by resetPCPC 0x3F FFC00x3F FFC0 PC loaded with reset vectorPC loaded with reset vectorACCACC 0x0000 00000x0000 0000 Accumulator clearedAccumulator clearedXAR0 XAR0 -- XAR7 XAR7 0x0000 00000x0000 0000 Auxiliary RegistersAuxiliary RegistersDPDP 0x00000x0000 Data Page pointer points to page 0Data Page pointer points to page 0PP 0x0000 00000x0000 0000 P register clearedP register clearedXTXT 0x0000 00000x0000 0000 XT register clearedXT register cleared

6 6 -- 77

XTXT 0x0000 00000x0000 0000 XT register clearedXT register clearedSPSP 0x04000x0400 Stack Pointer to address 0400Stack Pointer to address 0400RPCRPC 0x00 00000x00 0000 Return Program Counter clearedReturn Program Counter clearedIFRIFR 0x00000x0000 no pending interruptsno pending interruptsIERIER 0x00000x0000 maskable interrupts disabledmaskable interrupts disabledDBGIERDBGIER 0x00000x0000 debug interrupts disableddebug interrupts disabled

Page 8: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

InicijalizacijaInicijalizacija kontrolnihkontrolnih bitovabitova u u reseturesetuStatus Register 0 (ST0)Status Register 0 (ST0)SXM = 0SXM = 0 Sign extension offSign extension offOVM = 0OVM = 0 Overflow mode offOverflow mode offTC = 0TC = 0 test/control flagtest/control flagC = 0C = 0 carry bitcarry bitZ = 0Z = 0 zero flagzero flag

Status Register 1 (ST1)Status Register 1 (ST1)INTM = 1INTM = 1 Disable all maskable interrupts Disable all maskable interrupts -- globalglobalDBGM = 1DBGM = 1 Emulation access/events disabled Emulation access/events disabled

N = 0N = 0 negative flagnegative flagV = 0V = 0 overflow bitoverflow bitPM = 000PM = 000 set to leftset to left--shiftshift--byby--11OVC = 00 0000OVC = 00 0000 overflow counteroverflow counter

6 6 -- 88

DBGM = 1DBGM = 1 Emulation access/events disabled Emulation access/events disabled PAGE0 = 0PAGE0 = 0 Stack addressing mode enabled/Direct addressing disabledStack addressing mode enabled/Direct addressing disabledVMAP = 1VMAP = 1 Interrupt vectors mapped to PM 0x3F FFC0 Interrupt vectors mapped to PM 0x3F FFC0 –– 0x3F FFFF0x3F FFFFSPA = 0SPA = 0 stack pointer even address alignment status bitstack pointer even address alignment status bitLOOP = 0LOOP = 0 Loop instruction status bitLoop instruction status bitEALLOW = 0EALLOW = 0 emulation access enable bitemulation access enable bitIDLESTAT = 0IDLESTAT = 0 Idle instruction status bitIdle instruction status bitAMODE = 0AMODE = 0 C27x/C28x addressing modeC27x/C28x addressing modeOBJMODE = 0OBJMODE = 0 C27x object modeC27x object modeM0M1MAP = 1M0M1MAP = 1 mapping mode bitmapping mode bitXF = 0XF = 0 XF status bitXF status bitARP = 0ARP = 0 ARP points to AR0ARP points to AR0

Page 9: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

IzvoriIzvori prekidaprekida

ePWM, eCAP, ePWM, eCAP, eQEP, ADC, SCI, eQEP, ADC, SCI, SPI, I2C, eCAN,SPI, I2C, eCAN,

McBSP, DMA, WDMcBSP, DMA, WD

Internal SourcesInternal Sources

NMINMI

F2833x COREF2833x CORE

INT1INT1INT2INT2INT3INT3

XRSXRS

PIE PIE (Peripheral(PeripheralInterruptInterrupt

Expansion)Expansion)

TINT2TINT2TINT1TINT1TINT0TINT0

6 6 -- 99

McBSP, DMA, WDMcBSP, DMA, WD

External SourcesExternal Sources

XINT1 XINT1 –– XINT7XINT7

TZxTZx

XRSXRS

XNMI_XINT13XNMI_XINT13

INT13INT13

INT3INT3

INT12INT12

INT14INT14

••••••

Expansion)Expansion)

Page 10: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

ProcesiranjeProcesiranje maskirajumaskirajućih prekidaćih prekidaKonceptualni pregledKonceptualni pregled

11

00

((IFRIFR))“Latch”“Latch”

INT1INT1

INT2INT2

CoreCoreInterruptInterrupt

F2833xF2833xCoreCore

((INTMINTM))“Global Switch”“Global Switch”

((IERIER))“Switch”“Switch”

6 6 -- 1010

uu Validni signal na određenoj prekidnoj liniji uzrokuje postavljanjeValidni signal na određenoj prekidnoj liniji uzrokuje postavljanjeleča na leča na “1” “1” na odgovarajućoj bit poziciji IFRna odgovarajućoj bit poziciji IFR

11INT14INT14

CoreCore

uu Ako su individualni i globalni prekidači u Ako su individualni i globalni prekidači u “on”“on” stanju prekidstanju prekiddolazi do jezgradolazi do jezgra

Page 11: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Interrupt Flag Register (IFR)Interrupt Flag Register (IFR)RTOSINTRTOSINT DLOGINTDLOGINT INT14INT14 INT13INT13 INT12INT12 INT11INT11 INT10INT10 INT9INT9

8899101011111212131314141515

INT8INT8 INT7INT7 INT6INT6 INT5INT5 INT4INT4 INT3INT3 INT2INT2 INT1INT10011223344556677

Pending :Pending : IFR IFR BitBit = 1= 1Absent :Absent : IFRIFR BitBit = 0= 0

6 6 -- 1111

uu Kompajler generiše atomičnuKompajler generiše atomičnu instruinstrukktitiju za postavljanje ili brisanje ju za postavljanje ili brisanje IFRIFR bitovabitovauu Ako dođe do prekida u toku upisa u Ako dođe do prekida u toku upisa u IFR, IFR, prekid ima prioritetprekid ima prioritetuu IFR(bit) IFR(bit) se briše kada CPU odgovori na prekidse briše kada CPU odgovori na prekiduu IFR se briše pri resetuIFR se briše pri resetu

/*** Manual setting/clearing IFR ***//*** Manual setting/clearing IFR ***/extern cregister volatile unsigned int IFR;extern cregister volatile unsigned int IFR;

IFR |= 0x0008;IFR |= 0x0008; //set INT4 in IFR//set INT4 in IFRIFR &= 0xFFF7;IFR &= 0xFFF7; //clear INT4 in IFR//clear INT4 in IFR

Page 12: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Interrupt Enable Register (IER)Interrupt Enable Register (IER)RTOSINTRTOSINT DLOGINTDLOGINT INT14INT14 INT13INT13 INT12INT12 INT11INT11 INT10INT10 INT9INT9

8899101011111212131314141515

INT8INT8 INT7INT7 INT6INT6 INT5INT5 INT4INT4 INT3INT3 INT2INT2 INT1INT10011223344556677

Enable: Set IER Enable: Set IER BitBit = 1= 1Disable: Clear IERDisable: Clear IER BitBit = 0= 0

6 6 -- 1212

uu Kompajler generiše atomičnuKompajler generiše atomičnu instruinstrukktitiju za postavljanje iliju za postavljanje ilibrisanje brisanje IFRIFR bitovabitova

uu Briše se pri resetuBriše se pri resetu

/*** Interrupt Enable Register ***//*** Interrupt Enable Register ***/extern cregister volatile unsigned int IER;extern cregister volatile unsigned int IER;

IER |= 0x0008;IER |= 0x0008; //enable INT4 in IER//enable INT4 in IERIER &= 0xFFF7;IER &= 0xFFF7; //disable INT4 in IER//disable INT4 in IER

Page 13: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Interrupt Global Mask BitInterrupt Global Mask Bit

uu INTM INTM se koristi za globalnu dozvolu/zabranu prekidase koristi za globalnu dozvolu/zabranu prekida::ww Enable:Enable: INTM = 0INTM = 0ww Disable:Disable: INTM = 1 (reset value)INTM = 1 (reset value)

uu INTM INTM je moguće modifikovati samo iz asemblerskog je moguće modifikovati samo iz asemblerskog

INTMINTMST1ST1Bit 0Bit 0

6 6 -- 1313

uu INTM INTM je moguće modifikovati samo iz asemblerskog je moguće modifikovati samo iz asemblerskog kodakoda::

/*** Global Interrupts ***//*** Global Interrupts ***/asm(“ CLRC INTM”); //enable global interruptsasm(“ CLRC INTM”); //enable global interruptsasm(“ SETC INTM”); //disable global interruptsasm(“ SETC INTM”); //disable global interrupts

Page 14: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Peripheral Interrupt Expansion Peripheral Interrupt Expansion -- PIEPIEPe

riphe

ral I

nter

rupt

s 1

2x8

= 96

Perip

hera

l Int

erru

pts

12x

8 =

96PIE module for 96 InterruptsPIE module for 96 Interrupts

INT1.x interrupt groupINT1.x interrupt groupINT2.x interrupt groupINT2.x interrupt groupINT3.x interrupt groupINT3.x interrupt groupINT4.x interrupt groupINT4.x interrupt groupINT5.x interrupt groupINT5.x interrupt groupINT6.x interrupt groupINT6.x interrupt groupINT7.x interrupt groupINT7.x interrupt group9696

INT1.1INT1.1

INT1.2INT1.2

INT1.8INT1.8

1

0

1

••••••

••••••

INT1INT1

PIEIFR1PIEIFR1 PIEIER1PIEIER1Interrupt Group 1Interrupt Group 1

6 6 -- 1414

Perip

hera

l Int

erru

pts

12x

8 =

96Pe

riphe

ral I

nter

rupt

s 1

2x8

= 96

IFR

IFR

IER

IER

INTM

INTM 28x28x

CoreCore

28x Core Interrupt logic28x Core Interrupt logicINT7.x interrupt groupINT7.x interrupt groupINT8.x interrupt groupINT8.x interrupt groupINT9.x interrupt groupINT9.x interrupt groupINT10.x interrupt groupINT10.x interrupt groupINT11.x interrupt groupINT11.x interrupt groupINT12.x interrupt groupINT12.x interrupt group

INT1 INT1 –– INT 12INT 12

12 Interrupts12 Interrupts

INT13 INT13 (TINT1 / XINT13)INT14 INT14 (TINT2)NMINMI

Page 15: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Multipleksiranje prekida pomoMultipleksiranje prekida pomoću PIEću PIE

6 6 -- 1515

Page 16: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Dijagram toka zahteva za prekid (PIE)Dijagram toka zahteva za prekid (PIE)

6 6 -- 1616

Page 17: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

PIE PIE RegistrRegistrii

INTx.2INTx.2INTx.3INTx.3INTx.4INTx.4INTx.5INTx.5INTx.6INTx.6INTx.7INTx.7INTx.8INTx.8 INTx.1INTx.1

001122334455667715 15 -- 88

reserved

PIEIFRxPIEIFRx registregistaar (x = 1 to 12)r (x = 1 to 12)

INTx.2INTx.2INTx.3INTx.3INTx.4INTx.4INTx.5INTx.5INTx.6INTx.6INTx.7INTx.7INTx.8INTx.8 INTx.1INTx.1

001122334455667715 15 -- 88

reserved

PIEIERxPIEIERx registregistaar (x = 1 to 12)r (x = 1 to 12)

reserved PIEACKxPIEACKx

PIE Interrupt Acknowledge PIE Interrupt Acknowledge RegistRegistaar (PIEACK)r (PIEACK)112244 335566778899 001010111115 15 -- 1212

6 6 -- 1717

reserved PIEACKxPIEACKx

ENPIEENPIEPIEVECTPIEVECT

PIECTRL PIECTRL registregistaarr 0015 15 -- 11

#include “DSP2833x_Device.h”PieCtrlRegs.PIEIFR1.bit.INTx4 = 1; //manually set IFR for XINT1 in PIE group 1PieCtrlRegs.PIEIER3.bit.INTx5 = 1; //enable CAPINT1 in PIE group 3PieCtrlRegs.PIEACK.all = 0x0004; //acknowledge the PIE group 3PieCtrlRegs.PIECTRL.bit.ENPIE = 1; //enable the PIE

Page 18: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

F2833x PIE F2833x PIE Tabela dodele prekidaTabela dodele prekidaINTx.8INTx.8 INTx.7INTx.7 INTx.6INTx.6 INTx.5INTx.5 INTx.4INTx.4 INTx.3INTx.3 INTx.2INTx.2 INTx.1INTx.1

INT1INT1 WAKEINTWAKEINT TINT0TINT0 ADCINTADCINT XINT2XINT2 XINT1XINT1 SEQ2INTSEQ2INT SEQ1INTSEQ1INT

INT2INT2 EPWM6EPWM6_TZINT_TZINT

EPWM5EPWM5_TZINT_TZINT

EPWM4EPWM4_TZINT_TZINT

EPWM3EPWM3_TZINT_TZINT

EPWM2EPWM2_TZINT_TZINT

EPWM1EPWM1_TZINT_TZINT

INT3INT3 EPWM6EPWM6_INT_INT

EPWM5EPWM5_INT_INT

EPWM4EPWM4_INT_INT

EPWM3EPWM3_INT_INT

EPWM2EPWM2_INT_INT

EPWM1EPWM1_INT_INT

INT4INT4 ECAP6ECAP6_INT_INT

ECAP5ECAP5_INT_INT

ECAP4ECAP4_INT_INT

ECAP3ECAP3_INT_INT

ECAP2ECAP2_INT_INT

ECAP1ECAP1_INT_INT

INT5INT5 EQEP2EQEP2_INT_INT

EQEP1EQEP1_INT_INT

6 6 -- 1818

INT6INT6 MXINTAMXINTA MRINTAMRINTA MXINTBMXINTB MRINTBMRINTB SPITXINTASPITXINTA SPIRXINTASPIRXINTA

INT7INT7 DINTCH6DINTCH6 DINTCH5DINTCH5 DINTCH4DINTCH4 DINTCH3DINTCH3 DINTCH2DINTCH2 DINTCH1DINTCH1

INT8INT8 SCITXINTCSCITXINTCSCIRXINTCSCIRXINTC I2CINT2AI2CINT2A I2CINT1AI2CINT1A

INT9INT9 ECAN1ECAN1_INTB_INTB

ECAN0ECAN0_INTB_INTB SCITXINTBSCITXINTB SCIRXINTBSCIRXINTB SCITXINTASCITXINTA SCIRXINTASCIRXINTA

INT10INT10

INT11INT11

INT12INT12 LUFLUF LVFLVF XINT7XINT7 XINT6XINT6 XINT5XINT5 XINT4XINT4 XINT3XINT3

ECAN0ECAN0_INTA_INTA

ECAN1ECAN1_INTA_INTA

Page 19: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

VectorVector OffsetOffsetPredefinisana vektorska tabelaPredefinisana vektorska tabela

MemoryMemory00

0x00 0D000x00 0D00

02020404060608080A0A0C0C0E0E10101212

INT1INT1INT2INT2INT3INT3INT4INT4INT5INT5INT6INT6INT7INT7INT8INT8INT9INT9

RESETRESET 0000 Default Vector TableDefault Vector TableReRe--mapped whenmapped when

ENPIE = 1ENPIE = 1

6 6 -- 1919

BROM VectorsBROM Vectors64w64w

ENPIE = 0ENPIE = 0

0x3F FFC00x3F FFC0

0x3F FFFF0x3F FFFF

PIE VectorsPIE Vectors256w256w

0x00 0D000x00 0D00

DATALOGDATALOGRTOSINTRTOSINTEMUINTEMUINTNMINMI

12121414161618181A1A1C1C1E1E20202222242426262828--3E3E

ILLEGALILLEGALUSER 1USER 1--1212

INT9INT9INT10INT10INT11INT11INT12INT12INT13INT13INT14INT14

PieVectTableInit{ }PieVectTableInit{ }Used to initialize PIE vectorsUsed to initialize PIE vectors

Page 20: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Mapiranje Mapiranje PIE PIE vektoravektora (ENPIE = 1)(ENPIE = 1)

INT13INT13 0x00 0D1A0x00 0D1A XINT13 Interrupt or CPU Timer 1 XINT13 Interrupt or CPU Timer 1 (RTOS)(RTOS)INT14INT14 0x00 0D1C0x00 0D1C CPU Timer 2 CPU Timer 2 (RTOS)(RTOS)DATALOGDATALOG 0x00 0D1D0x00 0D1D CPU Data logging InterruptCPU Data logging Interrupt………… ………… …………

PIE vector address PIE vector DescriptionPIE vector address PIE vector Descriptionnot usednot used 0x00 0D000x00 0D00 Reset vector (never fetched here)Reset vector (never fetched here)Vector nameVector name

INT1INT1 0x00 0D020x00 0D02 INT1 reINT1 re--mapped to PIE group belowmapped to PIE group below………… ………… …… re…… re--mapped to PIE group belowmapped to PIE group below

INT12INT12 0x00 0D180x00 0D18 INT12 reINT12 re--mapped to PIE group belowmapped to PIE group below

6 6 -- 2020

u PIE vector lokacije – 0x00 0D00 – 256 reči u data memorijiu RESET i INT1-INT12 vektorse lokacije se re-mapirajuu CPU vectori se re-mapiraju u 0x00 0D00 data memorije

USER12USER12 0x00 0D3E0x00 0D3E UserUser--defined Trap defined Trap INT1.1INT1.1 0x00 0D400x00 0D40 PIEINT1.1 Interrupt VectorPIEINT1.1 Interrupt Vector………… ………… …………

………… ………… …………INT12.1INT12.1 0x00 0DF00x00 0DF0 PIEINT12.1 Interrupt VectorPIEINT12.1 Interrupt Vector

INT1.8INT1.8 0x00 0D4E0x00 0D4E PIEINT1.8 Interrupt VectorPIEINT1.8 Interrupt Vector

INT12.8INT12.8 0x00 0DFE0x00 0DFE PIEINT12.8 Interrupt VectorPIEINT12.8 Interrupt Vector………… ………… …………

Page 21: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Mapiranje prekidnih vektoraMapiranje prekidnih vektora

_c_int00:_c_int00:

RESETRESET<0x3F FFC0><0x3F FFC0>

Reset Vector <0x3F F9A9> = Boot Code Reset Vector <0x3F F9A9> = Boot Code Flash Entry Point <0x33 FFF6 > = LB _c_int00Flash Entry Point <0x33 FFF6 > = LB _c_int00User Code Start < _c_int00 >User Code Start < _c_int00 >

6 6 -- 2121

_c_int00:_c_int00:. . .. . .

CALL main()CALL main()

main()main(){ initialization();{ initialization();

. . .. . .}}

Initialization()Initialization(){{Load PIE VectorsLoad PIE VectorsEnable the PIEEnable the PIEEnable PIEIEREnable PIEIEREnable Core IEREnable Core IEREnable INTMEnable INTM

}}

PIE Vector TablePIE Vector Table256 Word RAM256 Word RAM

0x00 0D00 0x00 0D00 –– 0DFF0DFF

Page 22: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Odziv na prekidOdziv na prekid –– HardHarderska sekvencaerska sekvenca

CPU ActionCPU Action DescriptionDescriptionRegistersRegisters →→ stackstack 14 Register words auto saved14 Register words auto saved00 →→ IFR (bit)IFR (bit) Clear corresponding IFR bitClear corresponding IFR bit00 →→ IER (bit)IER (bit) Clear corresponding IER bitClear corresponding IER bit11 →→ INTM/DBGMINTM/DBGM Disable global ints/debug eventsDisable global ints/debug eventsVectorVector →→ PCPC Loads PC with int vector addressLoads PC with int vector address

6 6 -- 2222

Note: some actions occur simultaneously, none are interruptibleNote: some actions occur simultaneously, none are interruptible

TT ST0ST0AHAH ALALPHPH PLPLAR1AR1 AR0AR0DPDP ST1ST1DBSTATDBSTAT IERIERPC(msw)PC(msw) PC(lsw)PC(lsw)

VectorVector →→ PCPC Loads PC with int vector addressLoads PC with int vector addressClear other status bitsClear other status bits Clear LOOP, EALLOW, IDLESTATClear LOOP, EALLOW, IDLESTAT

Page 23: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

LatencLatencija prekidaija prekidaLatencyLatency

Recognition Recognition delay (3) and delay (3) and SP alignment SP alignment

(1)(1)

44Get vector Get vector

(3 reg. (3 reg. pairs pairs

saved)saved)

33PF1/PF2/D1 PF1/PF2/D1

of ISR of ISR instruction instruction

(3 reg. pairs (3 reg. pairs

33Save Save return return

addressaddress

11D2/R1/R2 of D2/R1/R2 of

ISR ISR instructioninstruction

33Sync ext. Sync ext.

signalsignal(ext. (ext.

22cycles

Assumes ISR in Assumes ISR in internal RAMinternal RAM

Internal Internal interrupt interrupt occurs occurs herehere

ext. ext. interrupt interrupt occurs occurs herehere

ISR ISR instruction instruction executed executed on next on next

6 6 -- 2323Zavisi odZavisi od waitwait statstatanjaanja, , readyready, INTM, , INTM, ......uu MaMaksimalnaksimalna latenclatencijaija::

SP alignment SP alignment (1)(1)

uu MinimMinimalnaalna latenclatencijaija ((kada se obrada vrši unutar kada se obrada vrši unutar ISR): ISR): ØØ Internal interrupts: 14 cyclesInternal interrupts: 14 cyclesØØ External interrupts: 16 cyclesExternal interrupts: 16 cycles

pairs pairs saved)saved)

instruction instruction (3 reg. pairs (3 reg. pairs

saved)saved)

addressaddress instructioninstruction(ext. (ext. interrupt interrupt

only)only)

Above is for PIE enabled or disabledAbove is for PIE enabled or disabled

on next on next cyclecycle

Page 24: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

F2833x CPU TajmeriRESET

Timer Reload

16 - Bit divide downTDDRH:TDDR 32 - Bit period

PRDH:PRD

6 6 -- 2424

SYSCLKOUT

TCR.4

16 - Bit prescalerPSCH:PSC

32 - Bit counterTIMH:TIM

BORROW

INT

Page 25: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

F2833x F2833x Timer Interrupt SystemTimer Interrupt System

INTM

INTM 28x28x

28x Core Interrupt logic28x Core Interrupt logic

PIE unitPIE unit

INT1.7 interruptINT1.7 interrupt

INT1INT1

TINT1 / XINT13TINT1 / XINT13

TINT0TINT0

INT13INT13

6 6 -- 2525IF

RIF

R

IER

IER

INTM

INTM 28x28x

CoreCore

TINT1 / XINT13TINT1 / XINT13

TINT2TINT2

INT13INT13

INT14INT14

Page 26: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

Address Register Name0x0000 0C00 TIMER0TIM Timer 0, Counter Register Low0x0000 0C01 TIMER0TIMH Timer 0, Counter Register High0x0000 0C02 TIMER0PRD Timer 0, Period Register Low0x0000 0C03 TIMER0PRDH Timer 0, Period Register High0x0000 0C04 TIMER0TCR Timer 0, Control Register0x0000 0C06 TIMER0TPR Timer 0, Prescaler Register0x0000 0C07 TIMER0TPRH Timer 0, Prescaler Register High0x0000 0C08 TIMER1TIM Timer 1, Counter Register Low

F2833x TF2833x Tajajmer mer registriregistri

6 6 -- 2626

0x0000 0C08 TIMER1TIM Timer 1, Counter Register Low0x0000 0C09 TIMER1TIMH Timer 1, Counter Register High0x0000 0C0A TIMER1PRD Timer 1, Period Register Low0x0000 0C0B TIMER1PRDH Timer 1, Period Register High0x0000 0C0C TIMER1TCR Timer 1, Control Register0x0000 0C0D TIMER1TPR Timer 1, Prescaler Register0x0000 0C0F TIMER1TPRH Timer 1, Prescaler Register High

0x0000 0C10 to 0C17 Timer 2 Registers ; same layout as above

Page 27: Modulodul6: 6: PrekidnidnisistemstemF2833x Digital Signal ...es.elfak.ni.ac.rs/mikro/Materijal/06-Prekidi.pdf · TC = 00test/control flag C = 00carry bit Z = 00zero flag Status Register

F2833x Timer Control RegistersF2833x Timer Control RegistersTIMERxTCRTIMERxTCR

Emulator Interaction1x = run free

TIE reservedFREE

8899101011111212131314141515

reservedSOFTreservedreservedTIF

Timer Interrupt FlagWrite 1 clear bit

Timer Interrupt EnableWrite 1 to enable INT

6 6 -- 2727

00

reservedTRB

11223344556677

reservedreservedTSS reservedreservedreserved

Timer Stop Status0 = start / 1 = stop

Timer Reload Bit1 = reload