Evo ponovo pokušavam nešto uraditi sa interrupima, ali sam zasto zbog problema sa pull up otpornikom.
1. Sljedeći kod radi bez problema sve dok je na RB0 pinu priključen pull-down otpornik.
2. Međutim kad umjesto njega stavim pull-up otpornik, interrupt rutina se aktivira samo prvi put (ito samo kada se uređaj isključi iz napajanja pa ponovo uključi pritiskom na taster sa pull-up otpornikom rutina se aktivira. međutim sljedećim pritiskom na taster ništa se ne dešava :SSSSSSS).
3. Ako uključim interne pull-up otpornike koji mi i trebaju (OPTION_REG.F7 = 0;), interrupt rutinu nemogu nikako aktivirati.
Napomena: Dakle sa vanjskim pull upom je moguće samo prvi put aktivirat rutinu tj. nakon restartiranja uređaja, i više ne. Dok sa internim pull-upom nijednom. Stvarno neznam gdije griješim dva dana guglam pregledavam datasheet-ove imam i knjigu o pic16f84 ali bez ikakve pomoći .
Code: Select all
void interrupt() {
if(INTCON.INTF)
{
PORTA = 255;
DELAY_MS(2000);
INTCON.INTF = 0;
}
}//~
void main() {
OPTION_REG.INTEDG=0;
OPTION_REG.F7 = 1;
TRISA = 0;
porta = 0;
TRISB = 0xff;
INTCON.GIE = 1;
INTCON.INTE = 1;
do {
PORTA = ~PORTA;
DELAY_MS(500);
} while(1);
}//~!