Forum: Mikrocontroller und Digitale Elektronik TIMER1 Interrupt blockiert INT0


von Robert C. (anykey)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.