Danke mal für die Antworten!
Davor die Routine aufrufen und dann verwenden! Danke das hat gefunzt!
(Es ist immer einfacher als man probiert ^^)
B73 schrieb:
> P.S. CC8 ist beim XC167 an P2.8 gebunden. Willst Du den IRQ beim
> Capture-Ereignis in CC8 oder bei einem Flankenwechsel am Eingang P2.8?
In den User Manuals steht bei den External Interrupts, dass das
CC1_CC8IC das entsprechende Controlregister ist -> das stimmt ;)
---
Wenn wir gleich mal dabei sind hätte ich noch eine weitere Frage die
sich mir stellt:
Wenn ich jetzt nicht nur External Interrupts verwenden möchte, sondern
auch Fast External Interrupts, dann muss ich diese entsprechend Keil
deklarieren (das passt, das weiß ich wie es geht). Aber wo krieg ich die
Adresse von den Dingern her? Machts hier ein einfacher Pointer auf die
entsprechende Funktion?
Was ich gefunden habe, was so herumkusiert ist folgendes:
1 | //Defines/oder eher Macros
|
2 | #define SEG(func) (unsigned int)(((unsigned long)((void (far *) (void))func) >> 16))
|
3 | #define SOF(func) (unsigned int)(((void (far *) (void))func))
|
4 |
|
5 | //Globals
|
6 | unsigned int counter = 0;
|
7 |
|
8 | //ISR - zählt hier nur die globalvar counter rauf
|
9 | void extISR(void) interrupt hsync=CACHED
|
10 | {
|
11 | counter = counter +1;
|
12 | }
|
13 |
|
14 | //MAIN
|
15 | void main(void){
|
16 |
|
17 | //Initialisiere Fast Interrupts damit sie auch "fast" sind
|
18 | //Schreibe in den Cache zu deutsch
|
19 | FINT0CSP = SEG(extISR) | 0x8C00;
|
20 | FINT0ADDR = SOF(extISR);
|
21 |
|
22 | //Pin Konfig
|
23 | DP1H_P0 = 0;
|
24 |
|
25 | //Schreiben erlauben
|
26 | MAIN_vUnlockProtecReg();
|
27 | //External Interrupts setzen
|
28 | EXICON |= 0x0002; // Falling edge EXI0
|
29 |
|
30 | //Interrupt Controlregister
|
31 | CC1_CC8IC = 0x0059;
|
32 |
|
33 | //Global IEN setzen
|
34 | PSW_IEN = 1;
|
35 |
|
36 | while(1);
|
37 | }
|
Bei den beiden:
FINT0CSP = SEG(extISR) | 0x8C00;
FINT0ADDR = SOF(extISR);
muss die entsprechende ISRRoutine eingetragen werden, sprich die
Adresse. Ich habs bereits mit einem Pointer auf die Funktion extISR
versucht, aber da mekert Keil nur!
Mit den oben angeführten Macros (die kommen von der Keil Homepage) kann
ich zwar ohne Fehler compilieren, aber das Ding tut nichts ...