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