-         

Ergebnis 1 bis 2 von 2

Thema: ARM 7, Keil und Interrupt

  1. #1

    ARM 7, Keil und Interrupt

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo!

    Ich versuche auf einem ARM7 Intterupts zu benutzen. Der Timer läuft richtig, nur Interrupts bekomme ich noch nicht... Welche Register hab ich vergessen?

    Danke schon einmal!


    Code:
    #include <LPC21xx.H>
    // olimex LPC-P2129: LEDs on P0.12/P0.13 (active low)
    #define LED1PIN  	12
    #define LED2PIN  	13
    
    void T0IRQ (void) __irq;
    
    unsigned short switcher = 0;
    
    int main(void)
    {
    
    //INIT
    	// define LED-Pins as outputs
    	IODIR0 |= 1<<LED1PIN;
    	// set Bits = LEDs off (active low) 
    	IOSET0 = 1<<LED1PIN; 
    	//Sets peripheral clock = system clock
    	VPBDIV=0x01;
    	//initialise timer 0
    	T0TCR = 0x0;
    	T0TC  = 0x0;
    	T0PR  = 0x0;
    	T0PC  = 0x0;
    	T0MR0 = 0xFF;
    
    	//Reset and interrupt on match
    	T0MCR = 0x3;
    
    	//TELL VIC WHAT TO DO!
    	VICIntSelect = 0x0; //NO FIQs
    	VICIntEnable = 0x4;  //TIMER 0 on board
    	
    	//Give the VIC the adress
    	VICVectAddr0=(unsigned long) T0IRQ;
    
    	//start the timer
    	T0TCR=0x1;
    	while(1){}
    }
    
    
    
    
    void T0IRQ (void) __irq
    {
    	//TOGGLE LED
    	if(switcher) {
    		IOSET0 = 0<<LED1PIN;
    		switcher = 0;
    	} else {
    		switcher = 1;
    		IOSET0 = 1<<LED1PIN;
    	}
    	
    
    	//RESET NECCESSARY TIMER VALUES
    	T0IR=0x1;
    	
    	//END ISR
    	VICVectAddr=0xff;
    }

  2. #2
    Falls einer mal vor dem selben Problem steht:

    Dieser Code funktioniert...

    Code:
    /************************************************************/
    /* PROJECT NAME: INTERRUPTS	                                */
    /* Project:      LPC2100                                    */
    /* Engineer:     S. Stefanowitsch                           */
    /* Filename:     main.c                                     */
    /* Language:     C                      	                */
    /* Compiler:     Keil ARM	V2.00b		                    */
    /* Assembler:    				                            */
    /*                                                          */
    /************************************************************/
    
    #include <LPC21xx.H>
    // olimex LPC-P2129: LED on P0.12 (active low)
    #define LED1PIN  	12
    
    void T0IRQ (void) __irq;
    unsigned short switcher = 0;
    
    int main(void)
    {
    //INIT
    	// define LED-Pins as outputs
    	IODIR0 |= 1<<LED1PIN;
    	// set Bits = LEDs off (active low) 
    	IOSET0 = 1<<LED1PIN; 
    	//Sets peripheral clock = system clock
    	VPBDIV=0x01;
    	//initialise timer 0
    	T0TCR = 0x0;
    	T0TC  = 0x0;
    	T0PR  = 0x0;
    	T0PC  = 0x0;
    	T0MR0 = 0x1FF;
    
    	//Reset and interrupt on match
    	T0MCR = 0x3;
    	
    	//INitialise the VIC
    	VICVectAddr4 = (unsigned long) T0IRQ;
    	VICVectCntl4= 0x24; //Allow This Vector, set is as IRQ Slot 4	
    	VICIntSelect = 0x0; //NO FIQs
    	VICIntEnable = 0x10;//TIMER 0 on board	
    	//start the timer
    	T0TCR=0x1;
    	while(1){}
    }
    
    
    void T0IRQ (void) __irq
    {
    	//TOGGLE LED
    	if(switcher) {
    		IOSET0 = 1<<LED1PIN;
    		switcher = 0;
    	} else {
    		IOCLR0 = 1<<LED1PIN;
    		switcher = 1;
    	}  
    	//RESART TIMER
    	T0IR=0x1;
    	//END ISR "Pseudo Write Operation"
    	VICVectAddr=0xff;
    }

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •