Forum: Mikrocontroller und Digitale Elektronik PIC 16F627 Hi Tech C Compiler Interrupt


von Benjamin (Gast)


Lesenswert?

Hallo zusammen,

ich weiß irgendwie nicht mehr weiter:

Erstmal zur Hard / Software:

Pic 16F627 mit PICKIT2

MPLAB X mit HItech C Compiler

Situation:

RB0 = Eingang für Interrupt

RB1..7 = ausgang, blinkende LEDs

RA0 = Ausgang; Ein/ Aus durch interrupt

Es läuft auch soweit nur das Interrupt bedingte ausschalten von RA0 
funktioniert nicht. Ich habe das gefühl, das nach 1maligem durchlaufen 
des Interrupts irgendein bit gesetzt/gelöscht wird, das weitere 
interrupts verhindert, finde aber den Fehler nicht.

Wäre über jede hilfe Dankbar!

Viele Grüße

Ben


___Code___

#include <stdio.h>
#include <stdlib.h>
#include <htc.h>

#define _XTAL_FREQ 4000000


__CONFIG(FOSC_XT  & WDTE_OFF & MCLRE_OFF & LVP_OFF & CP_OFF & 
BOREN_OFF);


void interrupt test_int (void) {
    if (PORTAbits.RA0 == 0){
        PORTAbits.RA0 = 1;
    }
    else {
        PORTAbits.RA0 = 0;
    }
    INTF =0;
//    INTE = 1;
//    GIE = 1;
    return;
}
void init (void);

void main(void) {
    init();
    while(1){
    PORTB = 0xFE;
    __delay_ms(1000);
    PORTB = 0x00;
    __delay_ms(1000);
    }


}


void init (void){
    TRISA = 0xFE;
    TRISB = 0x01;
    INTE = 1;
    PORTA = 0x00;
    PORTB = 0x00;
    ei();

}

von Chris B. (dekatz)


Lesenswert?

PORTA.RA0 wird immer 0 (oder 1 - weiss ich jetzt nicht auswendig) 
liefern da PORTA nach einem Reset immer als ANALOG-Port definiert ist.
Für DIGITAL-Betrieb muss vorher der Comperator abgeschaltet werden 
(CMCON = 0x07)!
(Datenblatt p.29)

: Bearbeitet durch User
von Benjamin (Gast)


Lesenswert?

Hallo,

das war zu einfach... wie oft ich schon in diese Falle getappt bin -.-


Vielen Dank!

Und auch gleich die nächste Frage:

muss ich eigentlich in der ISR auch das w/Status register sichern  oder 
macht er das von alleine? Werde da nicht so ganz schlau aus dem 
datenblatt.

Viele Grüße

Ben

von Chris B. (dekatz)


Lesenswert?

In "C" kümmert sich der Compiler darum.

von Benjamin (Gast)


Lesenswert?

Alles klar.

Und Danke für die schnelle Hilfe!

Gruß

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.