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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.