Forum: Mikrocontroller und Digitale Elektronik PIC 18F4550 Interrupt nur mit ADCON1


von Steffen S. (kenny1902)


Lesenswert?

Hallo µC-Gemeinde,

dies hier ist mein erster Beitrag in diesem Forum und ich bin mir 
sicher, dass ich hier jemanden finde, der mir helfen kann.

Zu meinem Problem: ich möchte an INT0 einen Interrupt auslösen und an 
einem Bit an Port E daraufhin einen Peak ausgeben. (Dieses Programm 
dient zunächst erst einmal zum Testen, also bitte nicht die Sinnigkeit 
hinterfragen ;) ).

Ich habe den Interrupt wie folgt initialisiert:

INTCONbits.INT0IF = 0;      // INT0IF: INT0 External Interrupt Flag bit
 INTCON2bits.RBPU = 1;      // Enable internal pull-up on port B
 RCONbits.IPEN = 1;         // Enable priority levels on interrupts
 INTCONbits.GIEH = 1;       // Enable High Level interrupts
 INTCONbits.INT0IE = 1;     // Enable the INT0 external interrupt
 INTCON3bits.INT1IE = 1;    // Enable the INT1 external interrupt
 INTCON3bits.INT1IP = 1;    // INT1 External Interrupt Priority bit - 
High
 INTCON2bits.INTEDG0 = 1;   // INT0 interrupt on rising edge
 INTCON2bits.INTEDG1 = 1;   // INT1 interrupt on rising edge
 ADCON1=0x0F;        // VERY IMPORTANT!!!!!! KEINE AHNUNG WARUM!!!!





Das Programm springt erst seitdem in die Interruptroutine, seitdem ich
" ADCON1=0x0F; " mitinitialisiert habe.


Zuvor hatte ich auch mit " TRISBbits.TRISB0 = 1 " oder " TRISB = 1; " 
probiert, allerdings erfolglos.


Mir ist etwas schleierhaft, warum PORTB mit ADCON1 als Analog-Input 
initialisiert werden muss um einen Interrupt auslösen zu können.

Kann mir das jemand erklären?


Vielen Dank schon mal im Voraus!

Gruß Steffen

: Bearbeitet durch User
von Stampede (Gast)


Lesenswert?

Hallo,

im Datenblatt ist es genau beschrieben ADCON1 = 0xf beduetet dass 
PCFG3:PCFG0 alle auf 1 sind. Und in der Tabelle drunter ist gezeigt, 
dass 1111 bedeutet dass alle analogen Eingänge in digitale 
umkonfiguriert werden.

Cheers

von Steffen S. (kenny1902)


Lesenswert?

Tatsächlich!!! Wunderbar, Danke!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.