be stucki schrieb:
> Da ich nicht weiss, wie du gemessen hast, behaupte ich immer noch das
> selbe.
Ich habe einfach mit dem Oszi den kompletten PORTD durchgemessen.
Hab deinen Code mal getestet, geht leider immer noch nicht
1 | #include <htc.h>
|
2 |
|
3 |
|
4 | __CONFIG (LVP_OFF & WDTE_OFF); //Low Voltage Programming OFF
|
5 | // Watch dog timer off
|
6 | void interrupt_ISR(void);
|
7 |
|
8 | void main (void)
|
9 | {
|
10 | TRISB=1;
|
11 | TRISD=0;
|
12 | ANSEL = 0;
|
13 | ANSELH = 0;
|
14 | ANS10 = 0;
|
15 | IOCB = 0b00000010;
|
16 | INTCON=0b10001000; //GIE Global Interrupt Enable
|
17 | //PEIE
|
18 | //T0IE
|
19 | //INTE
|
20 | //RBIE PORTB Change Interrupt
|
21 | //T0IF
|
22 | //INTF
|
23 | //RB0IF
|
24 |
|
25 |
|
26 |
|
27 | INTEDG = 0;
|
28 |
|
29 | PORTD=0;
|
30 | while(1);
|
31 | }
|
32 |
|
33 |
|
34 | void interrupt_ISR(void)
|
35 | {
|
36 | PORTD|=1;
|
37 | if(RBIF){
|
38 | PORTD|=2;
|
39 | RBIF=0;
|
40 | }
|
41 | }
|
be stucki schrieb:
> Das geht natürlich nicht. RB0 ist ein Eingang, alle anderen Ausgänge.
> Anschliessend aktiviertst du aber das Interrput-on-change für RB1, der
> ist aber als Ausgang definiert.
Wieso, ich habe doch mit TRISB=1 den kompletten PortB als Eingang
geschalten, und ich möchte nur interrupt on change für RB1 aktivieren