LPC1768 Timer İnterrupt Problemi

Başlatan erenbasturk, 03 Temmuz 2014, 09:07:14

erenbasturk

İyi Günler,

LPC 1768 ile çalışmaya başladım. Bir timer kesmesi kullanarak bir ledi terslemek istiyorum. Aşağıdaki programın çalışması gerekiyor. Sizde nerede bir hata olabilir?

#include <lpc17xx.h>

int main(void)
{
    LPC_GPIO2->FIODIR |= 1 << 3;
    LPC_SC->PCONP |= 1 << 1;
    LPC_SC->PCLKSEL0 |= 1 << 3;
    LPC_TIM0->TCR &= 0 << 1;
    LPC_TIM0->MCR |= 0x00000003;
    LPC_TIM0->MR0 |= 6000000;
    NVIC_EnableIRQ(TIMER0_IRQn);
    LPC_TIM0->TCR |= 0x00000001;
    while(1){}
    return 0 ;
}

void TIMER0_IRQHandler (void)
{
    if((LPC_TIM0->IR & 0x01) == 0x01)
    {
        LPC_TIM0->IR |= 1 << 0;
        LPC_GPIO2->FIOPIN ^= 1 << 3;
    }
}

yamak

#1
Eren yanlış hesaplamadıysam 24 ms de bir kesme oluşturuyo senin program.MR0 register'ına 25000000 yükleyip tekrar dener misin?Belki kodun çalışıyodur da sen farketmiyosundur.

Edit:Pardon ben 6000000 u 600000 olarak görmüşüm :)

mesaj birleştirme:: 03 Temmuz 2014, 09:45:34

Timer init ayarlarını aşağıdaki gibi değiştirip tekrar dener misin?

      LPC_TIM0->TCR=0x02;
      LPC_TIM0->IR=0xFF;
      LPC_TIM0->MR0=25000000;
      LPC_TIM0->MCR=0x01;
      LPC_TIM0->TCR=0x01;
      LPC_TIM0->PR=0x00;
  NVIC_EnableIRQ(TIMER0_IRQn);

erenbasturk

#2
Yusuf dediğin gibi degiştirdim degişmedi . Acaba PLL ayarlarıyla ilgili bir şey yapmalıyım acaba?

#include <lpc17xx.h>

int main(void)
{
    LPC_GPIO2->FIODIR |= 1 << 3;
    LPC_SC->PCONP |= 1 << 1;
    LPC_SC->PCLKSEL0 |= 1 << 3;
    LPC_TIM0->TCR=0x02;
    LPC_TIM0->IR=0xFF;
    LPC_TIM0->MR0=250000000;
    LPC_TIM0->MCR=0x01;
    LPC_TIM0->TCR=0x01;
    LPC_TIM0->PR=0x00;
		NVIC_EnableIRQ(TIMER0_IRQn);
    while(1){}
    return 0 ;
}

void TIMER0_IRQHandler (void)
{
    if((LPC_TIM0->IR & 0x01) == 0x01)
    {
        LPC_TIM0->IR |= 1 << 0;
        LPC_GPIO2->FIOPIN ^= 1 << 3;
    }
}


mesaj birleştirme:: 03 Temmuz 2014, 10:05:56

yusuf kusura bakma abi ya dünden beri "reset and run" işaretli değilmiş :D

yamak

Evet o gözümden kaçmış.
C:\Keil_v5\ARM\Boards\Keil\MCB1700\Blinky klasöründen system_LPC17xx.c dosyasını senin proje klasörüne kopyalayıp daha sonra keil'dan Add existing file to .... dan dosyayı projene dahil edip main fonksiyonunun başında SystemInit() fonksiyonunu çağırıp deneyebilir misin?

erenbasturk

kodlar çalıştı şuan, sorun ben dün keil'i kapatıp açmıştım kapatıp açınca "reset and run" kutucuğundaki seçili işaret kalkmış şuan sorun yok :D

yamak

#5
Ondan dolayı bi sorun olmaması lazım aslında.SystemInit i çağırmadan çalıştı mı?

Edit:Startup dosyasına baktım orda çağırılıyomuş SystemInit.Benim uğraştığım zamanlarda çağırılmıyodu :)