TMR32_B0 kesmesi.

Başlatan Logan, 13 Temmuz 2012, 16:37:21

Logan

Merhaba arkadaşlar.

İki gün önce LPC1114 ile yeni bir projeye başladım. TMR32_B0 sayıcısını kesme ile kullanmak istiyorum. Sayıcı çok stabil bir şekilde çalışmasına rağmen kesme alt programına dallanmıyor. Ben ana program içerisinde kesme bayrağını kontrol edip programı yönlendirirsem sorun yok. Fakat program kendi başına belirtilen etikete dallanmıyor. Kafayı yemek üzereyim. Etiket ile ilgili bir problemim olduğunu düşünüyorum.

tmr_int.h dosyasında;

extern void TIMER32_0_IRQHandler(void);

şeklinde tanımlı. tmr_int.c dosyasında da ;

void TIMER32_0_IRQHandler(void)
{
  sayac++;
}

şeklinde kullanmaya çalışıyorum fakat dediğim gibi bu etikete dallanmıyor. Netteki örnekleri inceledim. Hemen hemen herkes aynı yazım biçimini kullanmış. header dosyalarındaki tanımlarına baktım. Aynen bu şekilde geçiyor. Fakat bir türlü çalışmadı. Nedenini tam olarak anlayabilmiş değilim. Sizin bir fikriniz var mı?
İmza.

OptimusPrime

start up dosyasında da tanımlı olmalı.
EXTERN  TIMER32_0_IRQHandler
şeklinde mesela...
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

Logan

startup_LPC11XX.s dosyasında şunlar tanımlı;

DCD     TIMER32_0_IRQHandler      ; 16+18: 32-bit Counter-Timer 0

EXPORT  TIMER32_0_IRQHandler      [WEAK]
İmza.

OptimusPrime

interupt requesti açık ve global interrruptlar etkin olması gerek???
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

Logan

Aslında benimde aklıma geliyor fakat dökümanlarda global interrupt enable ya da all interrupt enable gibi bir ibare göremedim. Biraz daha açıklayabilir misin?
İmza.

OptimusPrime

NVIC->ISER[0] buna bakın datasında.

veya komple sıfırlayın (sanırım 1 olmalı!) tüm interruptlar açılsın... :)
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

Logan

#6
Tamam haklı gibisin fakat LPC11xx.h dosyasında tanımlı değil bu ISER. Ayrıca datasheette CMSIS diye bir şeyden bahsediyor. Program NVIC->ISER'i tanımadı.

mesaj birleştirme:: 13 Temmuz 2012, 17:52:45

Pardon OptimusPrime, çalıştı. Yazım yanlışı varmış. Fakat çok ilginç. Ben bu registeri bir yerde göremedim. Ayrıca datasheette bu konuya yeterince değinmemişler. Yardımın için teşekkürler.
İmza.

OptimusPrime

geçmiş olsun. :) neredeymiş sorun???
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

MC_Skywalker

slikon üreticileri çekirdek ile ilgili bilgileri datasheet lerde detaylı anlatmıyorlar. buyüzden ARM web sitesinden ilgili cekirdeğin teknik dökümanını indirip takip etmekte fayda var.

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0432c/index.html

Logan

Sağolasın optimus. Haftayı güzel kapattık. Sorun benim NVIC->ISER[0] = 0xffffffff; yerine NVIC->ISER = 0xffffffff yazmamda imiş. :)

Yardımın için tekrar teşekkürler.
İmza.