Hallo, ich habe eine Nullpunkterkennung die am PORTB7 angeschlossen ist. Demnach möchte ich ein Interrupt bei Veränderung des Pegels an RB7 auslösen. Hierzu gibt es ja die interrupt on change Funktion. Die Software die ich geschrieben habe soll nun von einem PIC18F232 auch auf einen PIC16F877 laufen. Auf dem PIC18 lief dieser Code: #define dNULLPUNKT PORTBbits.RB7 void interrupt ISR() { if(RBIF && !dNULLPUNKT) { ... RBIF = 0; } if(RBIF && dNULLPUNKT) { ... RBIF = 0; } } Beim PIC16F877 läuft diese nun nicht mehr. Die Frage: Warum? Kann mir da jemand einen Hinweiß geben? LG Luke
Initialisierung der Register? Allenfalls aendert der Adressiermode, wenn das Register ausserhalb des Bereiches liegt.
Hi, ich hab hier mal die Initialisierung ausgeschnitten, vielleicht sieht man ob was fehlt.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
Keine Ahnung was an RB7 genau dran hängt, aber eventuell sind bei der PIC18 Version die PullUp beim PORTB eingeschaltet und bei der PIC16 Version nicht? (weiss nicht was Defaulteinstellung ist und ob bei beiden Controllern gleich).
Beim PIC18F232 kann man die Pull-ups deaktivieren in dem man RBPU = 1 setzt. Beim PIC16 gibts das RBPU im Option_Reg Register aber wenn ich beim PIC16 in der Init RBPU = 1 setze bekomme ich beim kompilieren eine Fehlermeldung: error: undefined identifier "RBPU"
Dann ist es das nicht. Nachgesehen - bei beiden Controllern sind die PullUp per Default OFF.
Hier die PIC18 Initialisierung
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
Gast
#3181465
Hab den Fehler. Programmiergerät hat defekt. Läuft alles.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.