Merhaba arkadaşlar,
MPLAB yeni başladım ve Interrupts'lara bakıyorum. PIC18F4620 ile 2 LED li basit bir devre kurdum. Amaç program main() altında C0 pinine bağlı LED'i yak-söndür yapıcak. Butona bastığımda harici kesme oluşucak ve C3 portuna bağlı LED yanacak. Gayet basit fakat devre çalışmıyor. Kodlarımda bir sıkıntı görmedim 3-4 farklı yabancı kaynaktan ve ayrıca datasheet'den dikkatli olarak register adreslerine baktım. Birde sizin bakmanız için buraya atıyorum kodu. Lütfen yardımcı olur musunuz hata varsa nerede?
(https://i.hizliresim.com/ND5nYg.png)
#define _XTAL_FREQ 10000000
#include <stdio.h>
#include <stdlib.h>
#include "myConfig.h"
void interrupt INT0_Interrupt()
{
if(INT0IF == 1)
{
for(int cnt=0;cnt<5;cnt++)
{
LATCbits.LATC3 = ~LATCbits.LATC3;
__delay_ms(100);
}
INTCONbits.INT0IF = 0;
}
}
void Init_EX_INT()
{
INTCONbits.GIE = 1; // General Enable Interrupts
INTCONbits.PEIE = 1; // Peripheral Interrupt Enable
INTCON2bits.INTEDG0 = 1; // Set Interrupt on rising edge.
INTCONbits.INT0IF = 0; //clear interrupt flag.
INTCONbits.INT0IE = 1; // Enable Interrupt 0(RB0 as interrupt)
}
void main(int argc, char** argv)
{
TRISBbits.TRISB0 = 1;
TRISCbits.TRISC0 = 0;
TRISCbits.TRISC3 = 0;
Init_EX_INT();
while(1)
{
LATCbits.LATC0 = ~LATCbits.LATC0;
__delay_ms(100);
}
}