Hallo,
ich habe ein PIC32 MX795F512L. An diesem ist ein externer ADC
angeschlossen. Dieser ADC hat ein Alert-Pin, welcher in meiner
Programmroutine einen Interrupt auslsen soll. Dafr gibt es beim PIC ja
die 5 EXT_INT-Pins.
Mein Code für die Intialisierung:
1 | INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);
|
2 | INTEnableInterrupts();
|
3 | INTSetVectorPriority(INT_EXTERNAL_3_VECTOR, INT_PRIORITY_LEVEL_5);
|
4 | INTSetVectorSubPriority(INT_EXTERNAL_3_VECTOR, INT_SUB_PRIORITY_LEVEL_2);
|
5 | INTClearFlag(INT_INT3);
|
6 | INTEnable(INT_INT3, INT_ENABLED);
|
Mein Code für die Funktion:
1 | int test = 0;
|
2 | void __ISR(_EXTERNAL_3_VECTOR, ipl5) ExternalInterruptHandler3(void)
|
3 | {
|
4 | test++;
|
5 | DBPRINTF("%d \n", test);
|
6 | INTClearFlag(INT_INT3);
|
7 | }
|
Folgendes Problem habe ich nun: Wenn ich wie im Code den EXT_INT 3 (also
Pin 35 auf dem J10 des I/O Expansion Boards) verwende wird nie ein
Interrupt ausgelst. EXT_INT 1 oder 2 dagegen lst dauerhaft einen
Interrupt aus.
Ob dabei der Pin auf High oder Low ist interessiert ihn wenig. Das
Signal vom ADC ist auf High und wird, wenn dieser fertig ist kurzzeitig
auf Low gesetzt. (Sollte dies ein Problem sein, kann man dass auch noch
tauschen!).
Habe ich in meinem Code ein Fehler? Habe ich etwas vergessen?
Ich bin fr jeden Tipp dankbar!