ARM 7

Sep 10, 2008 1 Replies

Hi, All!


÷ÏÐÒÏÓ ÐÏ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÀ. ëÏÎÔÒÏÌÌÅÒ lpc2364 (ARM7TDMI)

HÁÄÏ ÒÁÚÒÅÛÉÔØ ÐÒÅÒÙ×ÁÎÉÑ. ëÁË ÜÔÏ ÇÒÁÍÏÔÎÏ ÚÁÐÉÓÁÔØ. ÷ 2 ÐÏÓÌÅÄÎÉÈ ÓÔÒÏÞËÁÈ ÎÁÐÉÓÁÔØ ÓÌÅÄÕÀÝÅÅ: ÎÁ ËÁÖÄÏÅ ÉÚ ÐÒÅÒÙ×ÁÎÉÊ-- Ó×ÏÊ ÒÅÇÉÓÔÒ (× ÍÁÓÓÉ×Å



32-È ÒÁÚÒÑÄÎÙÈ ÒÅÇÉÓÔÒÏ× ÉÈ ÁÄÒÅÓÁ ÓÌÅÄÕÀÔ ÄÒÕÇ ÚÁ ÄÒÕÇÏÍ) Ó ×ÅËÔÏÒÏÍ É Ó ÐÒÉÏÒÉÔÅÔÏÍ. × ÐÒÉ×ÅģÎÎÏÍ ÎÉÖÅ ËÕÓËÅ-- ÏÎ ÐÉÛÅÔ × "ÎÕÌÅ×ÏÊ" ÒÅÇÉÓÔÒ. Á ËÁË ÍÏÄÉÆÉÃÉÒÏ×ÁÔØ, ÞÔÏ ÐÉÓÁÌÏ ÔÕÄÕ, ËÕÄÁ ÎÁÄÏ. ÎÏÍÅÒ ÐÒÅÒÙ×ÁÎÉÑ-- ÞÉÓÌÏ ÏÔ 0 ÄÏ
31, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÅÇÏ ÎÁÄÏ ÉÓÐÏÌØÚÏ×ÁÔØ, ÎÏ ËÁË?


#define VICVectAddr0 (*(volatile unsigned long *)(0xFFFFF100)) #define VICVectAddr1 (*(volatile unsigned long *)(0xFFFFF104)) #define VICVectAddr2 (*(volatile unsigned long *)(0xFFFFF108))


#define VICVectPriority0 (*(volatile unsigned long *)(0xFFFFF200)) #define VICVectPriority1 (*(volatile unsigned long *)(0xFFFFF204)) #define VICVectPriority2 (*(volatile unsigned long *)(0xFFFFF208))


void install_IRQ(unsigned long IntNumber, int *HandlerAddr, unsigned long Priority) {



// Interrupt Enable Register. Resets to 0. (R/W) VICIntEnable = 0x01 << IntNumber;



// Interrupt Select Register. (FIQ or IRQ.) Resets to 0. (R/W) VICIntSelect = 0x01 << IntNumber;



VICVectAddr0 = *HandlerAddr;



VICVectCntl0 = Priority;



}


oleg


Hello oleg.

10 Sep 08 20:59, you wrote to All:

od> ÷ÏÐpÏÓ ÐÏ ÐpÏÇpÁÍÍÉpÏ×ÁÎÉÀ. ëÏÎÔpÏÌÌÅp lpc2364 (ARM7TDMI)

od> HÁÄÏ pÁÚpÅÛÉÔØ ÐpÅpÙ×ÁÎÉÑ. ëÁË ÜÔÏ ÇpÁÍÏÔÎÏ ÚÁÐÉÓÁÔØ. IMHO × ËÏÎÃÅ ÆÕÎËÃÉÉ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ËÏÎËpÅÔÎÏÊ ÐpÅÉÆÅpÉÉ ÎÁÓÔpÁÉ×ÁÔØ ÅÅ ÐpÅpÙ×ÁÎÉÅ. úÁÔÅÍ, ÐÏÓÌÅ ×ÓÅÈ ÉÎÉÃÉÁÌÉÚÁÃÉÊ, pÁÚpÅÛÁÔØ ÂÉÔÏÍ × pÅÇÉÓÔpÅ ÆÌÁÇÏ× ÐpÏÃÅÓÓÏpÁ. ÷ÏÏÂÝÅ, ÚÁ×ÉÓÉÔ ÏÔ ÉÄÅÉ ÐpÏÇpÁÍÍÙ. od> ÷ 2 od> ÐÏÓÌÅÄÎÉÈ ÓÔpÏÞËÁÈ ÎÁÐÉÓÁÔØ ÓÌÅÄÕÀÝÅÅ: ÎÁ ËÁÖÄÏÅ ÉÚ ÐpÅpÙ×ÁÎÉÊ-- Ó×ÏÊ od> pÅÇÉÓÔp (× ÍÁÓÓÉ×Å 32-È pÁÚpÑÄÎÙÈ pÅÇÉÓÔpÏ× ÉÈ ÁÄpÅÓÁ ÓÌÅÄÕÀÔ ÄpÕÇ ÚÁ od> ÄpÕÇÏÍ) Ó ×ÅËÔÏpÏÍ É Ó ÐpÉÏpÉÔÅÔÏÍ. × ÐpÉ×ÅģÎÎÏÍ ÎÉÖÅ ËÕÓËÅ-- ÏÎ od> ÐÉÛÅÔ × "ÎÕÌÅ×ÏÊ" pÅÇÉÓÔp. Á ËÁË ÍÏÄÉÆÉÃÉpÏ×ÁÔØ, ÞÔÏ ÐÉÓÁÌÏ ÔÕÄÕ, od> ËÕÄÁ ÎÁÄÏ. ÎÏÍÅp ÐpÅpÙ×ÁÎÉÑ-- ÞÉÓÌÏ ÏÔ 0 ÄÏ 31, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÅÇÏ od> ÎÁÄÏ ÉÓÐÏÌØÚÏ×ÁÔØ, ÎÏ ËÁË? ôÁÍ ÅÓÔØ ÌÉÎÉÉ ÐpÅpÙ×ÁÎÉÑ É ÓÌÏÔÙ. HÏÍÅp ÌÉÎÉÉ ÓÏÏÔ×ÅÔÓ×ÕÅÔ ËÏÎËpÅÔÎÏÍÕ ÐÅpÉÆÅpÉÊÎÏÍÕ ÕÓÔpÏÊÓÔ×Õ ËÏÔÏpÕÀ ÍÏÖÎÏ ×ÅÛÁÔØ ÎÁ ÌÀÂÏÊ ÓÌÏÔ. HÏÍÅp ÓÌÏÔÁ - ÃÉÆpÁ × ÉÍÅÎÉ pÅÇÉÓÔpÁ.

od> #define VICVectAddr0 (*(volatile unsigned long *)(0xFFFFF100)) od> #define VICVectAddr1 (*(volatile unsigned long *)(0xFFFFF104)) od> #define VICVectAddr2 (*(volatile unsigned long *)(0xFFFFF108))

od> #define VICVectPriority0 (*(volatile unsigned long *)(0xFFFFF200)) od> #define VICVectPriority1 (*(volatile unsigned long *)(0xFFFFF204)) od> #define VICVectPriority2 (*(volatile unsigned long *)(0xFFFFF208))

od> void install_IRQ(unsigned long IntNumber, od> int *HandlerAddr, od> unsigned long Priority) {

od> // Interrupt Enable Register. Resets to 0. (R/W) od> VICIntEnable = 0x01 << IntNumber;

od> // Interrupt Select Register. (FIQ or IRQ.) Resets to 0. (R/W) od> VICIntSelect = 0x01 << IntNumber; åÄÉÎÉÞËÁ × ÜÔÏÍ pÅÇÉÓÔpÅ ÇÏ×ÏpÉÔ Ï ÔÏÍ, ÞÔÏ ÜÔÁ ÌÉÎÉÑ ×ÅÛÁÅÔÓÑ ÎÁ FIQ. áÄpÅÓ FIQ ÆÉËÓÉpÏ×ÁÎÎÙÊ É pÁ×ÅÎ (7*4) - ÐÏ ÜÔÏÍÕ ÁÄpÅÓÕ ÄÏÌÖÅÎ ÂÙÔØ ÐÅpÅÈÏÄ ÎÁ ÆÕÎËÃÉÀ ÏÂpÁÂÏÔËÉ FIQ (ÉÌÉ ÓÁÍÁ ÆÕÎËÃÉÑ) - ÏÎÁ ÅÄÉÎÓÔ×ÅÎÁÑ × ÐpÏÇpÁÍÍÅ.

od> VICVectAddr0 = *HandlerAddr;

od> VICVectCntl0 = Priority;

od> }

HÁÐpÉÍÅp, ÐpÅpÙ×ÁÎÉÅ ÕÓÔpÏÊÓÔ×Á ÎÁ ÌÉÎÉÉ 0xf (EXTINT1) ÎÁÄÏ ÐÏ×ÅÓÉÔØ ÎÁ ×ÅËÔÏpÎÏÅ ÐpÅpÙ×ÁÎÉÅ ÓÌÏÔ 1: VICVectCntl1 = 0x20 | 0xf; VICVectAddr1 = (unsigned)handler; VICIntEnable = 1 << 0xf;

÷ ÁÓÓÅÍÂÌÅpÎÏÍ startup'Å × ×ÅËÔÏpÁÈ ÎÁ ÍÅÓÔÅ IRQ (ÁÄpÅÓ 6*4) ÐpÉ ÜÔÏÍ (× ÌÀÂÏÍ ÓÌÕÞÁÅ ×ÅËÔÏpÎÙÈ ÐpÅpÙ×ÁÎÉÊ) ÄÏÌÖÎÏ ÂÙÔØ ldr pc, [pc, #-0xff0] ðpÉÏpÉÔÅÔ IRQ ÏÐpÅÄÅÌÑÅÔÓÑ ÎÏÍÅpÏÍ ÓÌÏÔÁ: ÍÅÎØÛÅ ÎÏÍÅp - ÂÏÌØÛÅ ÐpÉÏpÉÔÅÔ. ðÏÉÝÉ ËÎÉÖËÕ ôpÅ×Ïp íÁpÔÉÎ. "íÉËpÏËÏÎÔpÏÌÌÅpÙ ARM7 óÅÍÅÊÓÔ×Ï LPC2000 ËÏÍÐÁÎÉÉ Philips ÷×ÏÄÎÙÊ ËÕpÓ". ISBN 5-94120-104-4 éÌÉ ÐÏÞÉÔÁÊ User Guide ÎÁ ËÏÎÔpÏÌÌÅp.

Sergey

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required