Hallo,
ich hab nen PIC18F mit einem FPGA verbunden und möchte das der FPGA
einen Interrupt im PIC auslösen kann. Dafür möchte ich RB0 verwenden.
Leider klappt das nicht (blutiger Anfänger :/). Mein C-Code:
1 | main()
|
2 |
|
3 | {
|
4 |
|
5 | char command, shift;
|
6 |
|
7 | Init_Hardware(); //setzt bestimmte Portbits
|
8 | delay_s(3); //zusätzlich eingeführt um sicher zu stellen das alle
|
9 | //Betriebsspannungen aufgebaut sind
|
10 | trisb.0=0;
|
11 | trisb.2=0;
|
12 |
|
13 | //Interrupt an RB0 erlauben (fallende Flanke)
|
14 | intcon.GIE=1; // Interrupts erlauben
|
15 | intcon.INT0IE=1; // Interrupt von RB0 erlauben.
|
16 | intcon2.INTEDG0=0; // Fallende Flanke am RB0
|
17 |
|
18 | while(1)
|
19 | {
|
20 | .
|
21 | .
|
22 | .
|
23 | }
|
24 | }
|
25 |
|
26 | void interrupt()
|
27 | {
|
28 | if (intcon.RBIF==1) //Flag-Abfrage
|
29 | {
|
30 | intcon.RBIF=0; //Lösche Flagbit
|
31 | trisb.2=0;
|
32 | portb.1=1; //Testausgabe ob Interrupt aufgerufen wurde
|
33 | delay_s(1);
|
34 | portb.2=0;
|
35 | delay_s(1);
|
36 | }
|
37 |
|
38 | intcon.GIE = 1; //Interrupts wieder erlauben
|
39 | }
|
Der FPGA is einfach so programmiert, das er bei einem Reset RB0 auf 0
zieht, ansonsten immer 1.
Was ich realisieren möchte ist, das der PIC aus der while(1)-Schleife
rausspringt, sobald er das Signal vom FPGA bekommt und kurzfristig etwas
wichtige Befehle abarbeitet...
Was hab ich vergessen, was mach ich falsch? hoffentlich nicht alles...
Pls help!