اطلاعیه

Collapse
No announcement yet.

وقفه INT0

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    وقفه INT0

    سلام
    من سه تا وقفه خارجی INT رو فعال کردم . ولی نمی دونم چرا بدون این که INT0 رو تحریک کنم به صورت خود سر می ره زیر برنامه شو اجرا می کنه . توی INT1و INT2 همچین مشکلی به وجود نیومد . در ضمن پایه ها رو هم با مقاومت 10 کیلو زمین کردم .
    با تشکر
    کد:
    #include <stdint.h>
    #include "LPC17xx.h"
             
    #define LED_NUM   8           /* Number of user LEDs       */
    const unsigned long led_mask[] = { 1UL<<0, 1UL<<1, 1UL<<2, 1UL<< 3,
                      1UL<< 4, 1UL<< 5, 1UL<< 6, 1UL<< 7 };
    int idxCur = -1;              /* current led position from 0..7 */
    int idxOld = 0;              /* old   led position from 0..7 */
    int dir  = 1;              /* direction for switching the LED */
    
    
    
    
    
    void EINT3_IRQHandler()					 
    {
     LPC_SC->EXTINT = 0x00000008;  
    	
     
     	LPC_GPIO0->FIOCLR = 0x00000001; 
                 
                
    }
    void EINT2_IRQHandler()					 
    {
     LPC_SC->EXTINT = 0x00000004;  
    	
     LPC_GPIO0->FIOCLR = 0x00000001;
                
                
    }
    /**/
    void EINT1_IRQHandler()					 
    {
     LPC_SC->EXTINT = 0x00000002;  
    	
     LPC_GPIO0->FIOCLR = 0x00000001;
                 
                
    }
    
    void EINT0_IRQHandler()					  /*INT0 interrupt if the standard was EINT1_IRQHandler ()*/
    {
    	
     LPC_SC->EXTINT = 0x00000001;	   /* clear pending interrupt     */
    LPC_GPIO0->FIOCLR = 0x00000001;	
                /* switch off  old LED position */
                /* switch on current LED position */
    }
    
    int main (void) {
    	LPC_GPIO0->FIODIR = 0x000000FF; 
    	LPC_GPIO0->FIOSET = 0x00000001;
     SystemInit();              /* initialize system        */
                   /* direction for switching the LED */
                /* switch on first LED      */
    
     
    	LPC_PINCON->PINSEL4 |= 1 << 26;	// set P2.12 as EINT2
     LPC_SC->EXTMODE = 0x00000008;		// 	EINT2 edge trigger if EXTMODE=0 then level-sensitive
     LPC_SC->EXTPOLAR = 1;				// EINT2 is falling edge by default if EXTPOLAR=1 then
     NVIC_EnableIRQ(EINT3_IRQn);
    	
    	LPC_PINCON->PINSEL4 |= 1 << 24;	// set P2.12 as EINT2
     LPC_SC->EXTMODE = 0x00000004;		// 	EINT2 edge trigger if EXTMODE=0 then level-sensitive
     LPC_SC->EXTPOLAR = 1;				// EINT2 is falling edge by default if EXTPOLAR=1 then
     NVIC_EnableIRQ(EINT2_IRQn);
    	
    	LPC_PINCON->PINSEL4 |= 1 << 22;	// set P2.11 as EINT1
     LPC_SC->EXTMODE = 0x00000002;		// EINT1 edge trigger
     LPC_SC->EXTPOLAR = 1;				// EINT1 is rising edge by default
     NVIC_EnableIRQ(EINT1_IRQn);
    	
    	
     LPC_PINCON->PINSEL4 |= 1 << 20;	// set P2.10 as EINT0
     LPC_SC->EXTMODE = 0x00000001;		// EINT0 edge trigger
     LPC_SC->EXTPOLAR = 1;				// EINT0 is rising edge by default
     NVIC_EnableIRQ(EINT0_IRQn);
    
     while (1);
    	
    	
    }
    انجمن LABVIEW
    http://www.eca.ir/forum2/index.php?board=279.0
    اموزش ميكروكنترلرهاي AVR به زبان ساده
    http://www.eca.ir/forum2/index.php/topic,7070.0.html
لطفا صبر کنید...
X