TIMER1 Interrupt blockiert INT0

OP #2153681
Lesenswert?

Hallo an alle,
ich arbeite mit MPLAB 8.66 und der MPLAB SIM.
Als MC habe ich einen PIC32MX460F512 gewählt.
Wenn ich den INT0 und den INT1 aktiviere ohne den TIMER1 zu verwenden 
geht alles wie erwartet.
Sobald ich den TIMER1 initialisiere geht der INT0 nicht mehr.
Hier mein Code:
1
/***********************************************************************************************************/
2
/* DDC Clk (Timer 1 Initialisierung                                                                        */
3
/***********************************************************************************************************/
4
void InitClkDDC(void)
5
{
6
  //Timer1 öffnen    
7
  OpenTimer1(T1_ON | T1_SOURCE_INT | T1_PS_1_1, T1_TICK);
8
  // Output Pin
9
  PORTSetPinsDigitalOut(IOPORT_D,BIT_0);
10
}
11

12

13
/***********************************************************************************************************/
14
/* Interrupt Initialisierung                                                                               */
15
/***********************************************************************************************************/
16
void InitInterrupts(void)
17
{
18
  //Konfigurieren des Interrupt 0  
19
  ConfigINT0(EXT_INT_PRI_1 | RISING_EDGE_INT | EXT_INT_ENABLE);
20
  //Konfigurieren des Interrupt 1
21
  ConfigINT1(EXT_INT_PRI_1 | RISING_EDGE_INT | EXT_INT_ENABLE);
22
  //Konfigurieren des Timer1 Interrupt
23
    ConfigIntTimer1(T1_INT_ON | T1_INT_PRIOR_2);
24
  //Multi Interrupt einschalten
25
  INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);
26
  //Interrupts einschalten
27
    INTEnable(INT_T1, INT_ENABLED);
28
  INTEnable(INT_INT0, INT_ENABLED);
29
  INTEnable(INT_INT1, INT_ENABLED);
30
}
31

32
/***********************************************************************************************************/
33
/* Interrupt Handler für INT0                                                                              */
34
/***********************************************************************************************************/
35
void __ISR(_EXTERNAL_0_VECTOR,ipl1) Int0Handler(void)
36
{
37
  //Löschen des Flags  
38
  INTClearFlag(INT_INT0);
39
  DataValid(0);
40
}
41

42
/***********************************************************************************************************/
43
/* Interrupt Handler für INT1                                                                              */
44
/***********************************************************************************************************/
45
void __ISR(_EXTERNAL_1_VECTOR,ipl1) Int1Handler(void)
46
{
47
  //Löschen des Flags  
48
  INTClearFlag(INT_INT1);
49
  DataValid(1);
50
}
51

52
/***********************************************************************************************************/
53
/* Interrupt Handler für Timer1                                                                            */
54
/***********************************************************************************************************/
55
void __ISR(_TIMER_1_VECTOR, ipl2) Timer1Handler(void)
56
{
57
// clear the interrupt flag
58
    INTClearFlag(INT_T1);
59

60
    // .. things to do
61
    // .. in this case, toggle the LED
62
    PORTToggleBits(IOPORT_D,BIT_0);
63
  testBit=PORTReadBits(IOPORT_D,BIT_0);
64
}

Weis Jemand was hier Falsch ist?

Gruß Robert

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren