Merhabalar
İşlemci : 18f4620
#include <pic18f4620.h>
#include <pic18.h>
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#include "18F_Config_40_v10.h"
void main(void)
{
DelayMs(100);
TRISA = 0b00011111;
TRISB = 0b00000000;
TRISC = 0b10110000;
TRISD = 0b00000000;
TRISE = 0b00000000;
LATA=0b00000000;
LATB=0b00010001;
LATC=0b00000000;
LATD=0b00000000;
LATE=0b00000000;
ADCON1= 0x0C; //AN0,AN1 ANALOG
CMCON = 0x07; //deactivate comparator module
SPBRG=64;
TXSTA=0b00100010;
RCSTA=0b10010000;
RCIF=0;
RCIE=0;
PIE1=0b00000001; //Only Enables timer1 overflow interrupt
PIR1bits.TMR1IF=0; // TMR1 register did not overflow
INTCON=0b11000000; // Enables all unmasked interrupts
T1CON=0b00000000;
TMR1ON=1; //TIMER1 ACTIVATE
TMR1 = 63536;
WDTCON;
while(1)
{
CLRWDT();
__delay_us(1);
__delay_us(1);
__delay_us(1);
__delay_us(1);
}
}
void interrupt isr(void)
{
if (PIR1bits.TMR1IF && PIE1bits.TMR1IE)
{
PIR1bits.TMR1IF = 0;
TMR1 = 63538;
FrequenceRead();
//Bolca fonksiyon işlemler v.s..
}
}
Kodların temel kısımlarını yayınladım. timer1 sürekli program loop süresi olarak kullanıyorum.
timer1 öncelikli kesme olma üzere, timer0'ı da timer1 süresinden bağımsız sayıcı olarak kullanmak istiyorum.
taslak olarak gösterebilirmisiniz
bende xc8'de yeniyim. interrupt fonksiyonuna şu kısmı da eklersin sorun kalmaz gibi geliyor.
if(INTCONbits.TMR0IF)
{
INTCONbits.TMR0IF=0;
TMR0=5; // bu deger 2ms saniye içindi yanlıs hatırlamıyorsam onu değiştirirsin isteğine göre
Counter++;
}
Peki benim yazılımıma dahil edebilirmisiniz yüksek öncelik ve düşük öncelik li die ayrılmalı diye düşünüyorum